تتيح سولانا عمليات تحويل رموز فورية وعالمية برسوم أقل من 0.001 دولار. سواء كنت تبني تحويلات عبر الحدود، أو صرف رواتب، أو عمليات خزينة، فإن الدفع الأساسي بالعملة المستقرة يتم تسويته في أقل من ثانية ويكلف جزءاً من السنت.
كيف يعمل
ينقل الدفع العملات المستقرة من حساب الرمز الخاص بالمرسل إلى حساب الرمز الخاص بالمستلم. إذا كان المستلم يتلقى هذا الرمز لأول مرة، يمكن إنشاء حساب الرمز الخاص به كجزء من نفس المعاملة.
راجع كيف تعمل المدفوعات على سولانا لمفاهيم الدفع الأساسية.
يتعامل المساعد splToken من
@solana/client مع اشتقاق ATA وتحويل
الكسور العشرية وبناء المعاملات تلقائياً. هذا مثالي لعمليات تحويل الدفع الفردية.
توضح الخطوات أدناه التدفق الأساسي. راجع العرض التوضيحي للحصول على كود كامل قابل للتشغيل.
إنشاء مساعد الرمز
قم بتكوين المساعد splToken() عن طريق استدعاء client.splToken() مع عنوان
السك. يوفر المساعد طرقاً لعمليات الرمز الشائعة.
يؤدي تعيين tokenProgram: "auto" إلى الكشف التلقائي عما إذا كان حساب السك
مملوكاً لبرنامج Token أو Token-2022.
إرسال الدفع
استخدم sendTransfer() لتحويل الرموز بين المحافظ. تتعامل الطريقة مع:
- حل ATA: يشتق تلقائياً حسابات الرمز المرتبطة (ATAs) للمرسل والمستلم. إذا لم يكن ATA الخاص بالمستلم موجوداً، يتم إضافة التعليمات لإنشاء الحساب تلقائياً إلى نفس المعاملة.
- تحويل الكسور العشرية: يقبل مبالغ الرموز ويحولها تلقائياً إلى وحدات أساسية بناءً على الكسور العشرية للسك (مثلاً 0.25 رمز -> 250000 وحدة أساسية، إذا كان السك يحتوي على 6 كسور عشرية)
- بناء المعاملة: ينشئ ويوقع ويرسل المعاملة مع تعليمات التحويل
const client = createClient({endpoint: "http://localhost:8899",websocketEndpoint: "ws://localhost:8900",commitment: "confirmed"});const splToken = client.splToken({mint: mint.address,tokenProgram: "auto"});const signature = await splToken.sendTransfer({amount: 0.25,authority: sender,destinationOwner: recipient.address});
التحقق من الأرصدة
بعد اكتمال التحويل، استخدم fetchBalance() للتحقق من أرصدة الرموز. تأخذ هذه
الطريقة عنوان المحفظة وتشتق تلقائياً حساب الرموز المرتبط المقابل لجلب الرصيد.
const client = createClient({endpoint: "http://localhost:8899",websocketEndpoint: "ws://localhost:8900",commitment: "confirmed"});const splToken = client.splToken({mint: mint.address,tokenProgram: "auto"});const signature = await splToken.sendTransfer({amount: 0.25,authority: sender,destinationOwner: recipient.address});const senderBalance = await splToken.fetchBalance(sender.address);const recipientBalance = await splToken.fetchBalance(recipient.address);
عرض توضيحي
// Generate keypairs for sender and recipientconst sender = (await generateKeypair()).signer;const recipient = (await generateKeypair()).signer;console.log("Sender Address:", sender.address);console.log("Recipient Address:", recipient.address);// Demo Setup: Create client, mint account, token accounts, and fund with initial tokensconst { client, mint } = await demoSetup(sender, recipient);console.log("\nMint Address:", mint.address);// =============================================================================// Basic Token Payment Demo// =============================================================================// Create splToken helper for this mint using @solana/clientconst splToken = client.splToken({mint: mint.address,tokenProgram: "auto"});// Transfer tokens from sender to recipient (ATA and decimals handled automatically)const signature = await splToken.sendTransfer({amount: 0.25,authority: sender,destinationOwner: recipient.address});console.log("\n=== Token Payment Complete ===");console.log("Transaction Signature:", signature.toString());// Fetch final token account balances using splToken helperconst senderBalance = await splToken.fetchBalance(sender.address);const recipientBalance = await splToken.fetchBalance(recipient.address);console.log("\nSender Token Account Balance:", senderBalance);console.log("Recipient Token Account Balance:", recipientBalance);// =============================================================================// Demo Setup Helper Function// =============================================================================
Is this page helpful?