存款

将 SPL 代币从用户的 associated token account 转入托管账户的 associated token account,为存款用户的频道余额(或可选 收款人的余额)增加相应金额。

账户

账户可写签名者描述
payer✓✓交易手续费支付方
user✓发起存款的代币所有者
instance托管实例 PDA
mintSPL 代币铸造账户
allowed_mint用于验证该铸造账户在此实例中是否被允许的 PDA
user_ata✓用户的 associated token account(来源)
instance_ata✓托管账户的 associated token account(目标)
system_programSystem Program
token_programSPL Token Program
associated_token_programAssociated Token Program
event_authorityEmitEvent CPI 的事件权限 PDA
private_channel_escrow_program托管程序(用于 CPI 的自引用)

参数

参数类型描述
amountu64存款代币数量,以代币最小单位表示
recipientOption<Pubkey>可选的链上收款人;若为 None,则为存款用户的频道余额增加金额

返回值

返回一个 TransactionBuilder,可用于构建并发送 该交易。

示例

import { getDepositInstructionAsync } from "../private-channel-escrow-program/clients/typescript/src/generated";
// allowedMint and instanceAta are auto-derived from mint and instance
const 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_mint PDA 必须已存在(由 AllowMint 创建);存入 未列出的铸造账户将抛出 InvalidAllowedMint 错误
  • 当 recipient 为 None 时,存款用户的频道余额将被增加; 若提供了收款人,则指定钱包的余额将被增加
  • payer 和 user 都必须对交易进行签名
  • instance_ata 必须已存在(由 AllowMint 为该铸造账户创建)

Is this page helpful?

Table of Contents

Edit Page
©️ 2026 Solana 基金会版权所有