ユーザーのassociated token accountからエスクローの associated token accountにSPLトークンを転送し、デポジットを行ったユーザーのチャンネル残高(または オプションで指定した受取人の残高)に入金します。
アカウント
| アカウント | 書き込み可能 | 署名者 | 説明 |
|---|---|---|---|
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 | EmitEvent CPI用のイベント権限PDA | ||
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});
重要事項
- プログラムID:
9tgHa1DcnaSSUtmMsst8ovKTe1Gfxzezn27KnH9xXYeU - Token-2022ミントの場合は、標準のSPL Token Programがデフォルトのため、
tokenProgram: TOKEN_2022_PROGRAM_ADDRESSを 明示的に指定してください allowed_mintPDAが存在している必要があります(AllowMintによって作成)。未登録のミントをデポジットするとInvalidAllowedMintがスローされますrecipientがNoneの場合はデポジットを行ったユーザーのチャンネル残高に入金されます。 指定された場合は、指定されたウォレットの残高に入金されますpayerとuserの両方がトランザクションに署名する必要がありますinstance_ataはあらかじめ存在している必要があります(このミントに対してAllowMintによって作成)
Is this page helpful?