ينقل رموز SPL من associated token account الخاص بالمستخدم إلى associated token account الخاص بالضمان، مع إضافة قيمة الإيداع إلى رصيد قناة المستخدم المودِع (أو رصيد المستلم الاختياري).
الحسابات
| الحساب | قابل للكتابة | موقِّع | الوصف |
|---|---|---|---|
payer | ✓ | ✓ | دافع رسوم المعاملة |
user | ✓ | مالك الرمز الذي يجري الإيداع | |
instance | PDA نسخة الضمان | ||
mint | عنوان إصدار رمز SPL | ||
allowed_mint | PDA للتحقق من أن عنوان الإصدار مسموح به في هذه النسخة | ||
user_ata | ✓ | associated token account الخاص بالمستخدم (المصدر) | |
instance_ata | ✓ | associated token account الخاص بالضمان (الوجهة) | |
system_program | System Program | ||
token_program | SPL Token Program | ||
associated_token_program | Associated Token Program | ||
event_authority | PDA سلطة الأحداث لـ EmitEvent CPI | ||
private_channel_escrow_program | برنامج الضمان (مرجع ذاتي لـ CPI) |
المعاملات
| المعامل | النوع | الوصف |
|---|---|---|
amount | u64 | كمية الرموز المراد إيداعها، بأصغر وحدة للرمز |
recipient | Option<Pubkey> | مستلم اختياري على السلسلة؛ في حال كانت القيمة None، يُضاف الرصيد إلى قناة المستخدم المودِع |
القيمة المُعادة
تُعيد TransactionBuilder يمكن استخدامه لبناء المعاملة وإرسالها.
مثال
import { getDepositInstructionAsync } from "../private-channel-escrow-program/clients/typescript/src/generated";// allowedMint and instanceAta are auto-derived from mint and instanceconst depositIx = await getDepositInstructionAsync({payer: payerSigner,user: userSigner,instance: instancePda,mint: mintAddress,userAta: userAtaAddress,amount: 1_000_000n,recipient: null});
ملاحظات مهمة
- معرّف البرنامج:
9tgHa1DcnaSSUtmMsst8ovKTe1Gfxzezn27KnH9xXYeU - بالنسبة لعناوين إصدار Token-2022، يجب تمرير
tokenProgram: TOKEN_2022_PROGRAM_ADDRESSصراحةً، نظرًا لأن القيمة الافتراضية هي SPL Token Program القياسي - يجب أن يكون
allowed_mintPDA موجودًا (تم إنشاؤه بواسطةAllowMint)؛ إيداع عنوان إصدار غير مدرج يُطلق الخطأInvalidAllowedMint - عند تعيين
recipientعلىNone، يُضاف الرصيد إلى قناة المستخدم المودِع؛ وعند تحديده، يُضاف الرصيد إلى المحفظة المحددة بدلاً من ذلك - يجب على كلٍّ من
payerوuserتوقيع المعاملة - يجب أن يكون
instance_ataموجودًا مسبقًا (تم إنشاؤه بواسطةAllowMintلعنوان الإصدار هذا)
Is this page helpful?