قبل بناء تدفقات الدفع، تحتاج إلى الاتصال بسولانا وفهم كيفية الاستعلام عن بيانات الشبكة. يغطي هذا الدليل الأساسيات: إنشاء اتصال واستخدام طرق RPC التي ستحتاجها للمدفوعات باستخدام @solana/kit TypeScript SDK و Solana CLI. بالإضافة إلى ذلك، سنغطي أساسيات استخدام Solana Explorer للتحقق يدويًا من المدفوعات، وفحص الحسابات، وتصحيح المشكلات.
الاتصال بسولانا
يعد RPC API الخاص بسولانا الطريقة الأساسية للتفاعل برمجيًا مع الشبكة. يعمل عنوان RPC URL الخاص بك بشكل فعال كمفتاح API للشبكة.
لا تستخدم RPC العام للإنتاج
نقاط النهاية العامة (api.mainnet-beta.solana.com، api.devnet.solana.com)
محدودة المعدل، وليس لها SLA، وغير مناسبة لتدفقات الدفع في الإنتاج. استخدم
مزود RPC لتأمين نقطة نهاية RPC خاصة لعمليات النشر في
الإنتاج.
للتطوير والاختبار، يمكنك استخدام نقاط النهاية العامة محدودة المعدل.
أنشئ عميل RPC للتفاعل مع الشبكة:
import { createSolanaRpc, createSolanaRpcSubscriptions } from "@solana/kit";const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");const rpcSubscriptions = createSolanaRpcSubscriptions("wss://api.mainnet-beta.solana.com");
للتطوير، استخدم devnet (https://api.devnet.solana.com) أو validator محلي مثل
Surfpool.
طرق RPC الشائعة
يعرض JSON-RPC API الخاص بسولانا طرقًا للاستعلام عن الشبكة. فيما يلي الطرق التي ستستخدمها أكثر لتدفقات الدفع.
الحصول على معلومات الحساب
جميع الحسابات على سولانا قابلة للعنونة بواسطة مفتاحها العام. استخدم طريقة
getAccountInfo RPC لجلب معلومات حول أي حساب.
تُرجع طريقة getAccountInfo كائن AccountInfo، والذي يحتوي على المفتاح العام
للحساب، ورصيد SOL، والبيانات، وبعض البيانات الوصفية الأخرى.
حقل data هو سلسلة نصية مشفرة بصيغة base64 لبيانات الحساب. يمكنك تشفيرها إلى
بايتات باستخدام طريقة getBase64Codec من حزمة @solana/kit ثم فك تشفيرها إلى
كائن قابل للقراءة باستخدام برنامج الترميز المتوقع (إذا كان معروفاً) لبيانات
الحساب (مثل getTokenCodec لحسابات الرموز).
const accountInfo = await rpc.getAccountInfo(address("7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV"), {encoding: "base64"}).send();const dataBytes = getBase64Codec().encode(accountInfo.value.data);const parsedTokenData = getTokenCodec().decode(dataBytes);console.log(parsedTokenData);
الحصول على أرصدة الرموز
تحقق من رصيد حساب الرموز باستخدام طريقة RPC
getTokenAccountBalance:
const balance = await rpc.getTokenAccountBalance(tokenAccountAddress).send();console.log(balance.value.uiAmount); // Human-readable (e.g., 100.50)console.log(balance.value.amount); // Base units (e.g., "100500000")
بناء المعاملات
تحتاج كل معاملة إلى blockhash حديث للتأكد من صحتها (وأنها ليست قديمة). احصل على
واحد قبل إنشاء معاملة دفع باستخدام طريقة RPC
getLatestBlockhash:
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
تنتهي صلاحية Blockhashes بعد ~60 ثانية. احصل على واحد جديد مباشرة قبل التوقيع والإرسال.
التحقق من حالة المعاملة
تحقق من تسوية المعاملة باستخدام طريقة RPC
getSignatureStatuses:
const status = await rpc.getSignatureStatuses([signature]).send();const result = status.value[0];// result.confirmationStatus: "processed" | "confirmed" | "finalized"
الحصول على تفاصيل المعاملة
احصل على التفاصيل الكاملة لمعاملة مؤكدة باستخدام طريقة RPC
getTransaction:
const transaction = await rpc.getTransaction(signature, { maxSupportedTransactionVersion: 0 }).send();
سجل المعاملات
احصل على المعاملات الأخيرة لعنوان معين باستخدام طريقة RPC
getSignaturesForAddress:
const signatures = await rpc.getSignaturesForAddress(walletAddress, { limit: 10 }).send();
للحصول على مراقبة شاملة للمدفوعات، راجع قبول المدفوعات الذي يغطي webhooks والكشف الفوري عن المعاملات.
استكشاف البيانات العامة
يعني دفتر الأستاذ العام لسولانا أن كل معاملة وحساب رمزي وعملية سك قابلة للمراجعة بالكامل. تتيح لك متصفحات البلوكشين التحقق يدوياً من المدفوعات وفحص الحسابات وتصحيح المشكلات دون كتابة أي كود.
ما يمكنك البحث عنه:
- التحقق من تسوية الدفعة
- فحص أرصدة الحسابات الرمزية
- تصحيح المعاملات الفاشلة
- البحث عن تفاصيل السك (العرض، الكسور العشرية، السلطة)
المتصفحات الشائعة: Solana Explorer، SolanaFM، Solscan، Orb
أمثلة على الروابط:
- رمز USDC المسكوك — العرض والأسواق والحاملون والمعاملات الخاصة بـ USDC
- تحويل رمز USDC — تفاصيل معاملة دفع USDC
- حساب رمز USDG — رصيد USDG للمستخدم وسجل المعاملات
Is this page helpful?