将 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 | 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 铸造账户,请显式传入
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS, 因为默认使用标准 SPL Token Program allowed_mintPDA 必须已存在(由AllowMint创建);存入 未列出的铸造账户将抛出InvalidAllowedMint错误- 当
recipient为None时,存款用户的频道余额将被增加; 若提供了收款人,则指定钱包的余额将被增加 payer和user都必须对交易进行签名instance_ata必须已存在(由AllowMint为该铸造账户创建)
Is this page helpful?