允许在实例上使用某个 SPL 代币铸造账户,并为该铸造账户创建托管的 associated token account。完成此调用后,即可对该铸造账户进行存款操作。
账户
| 账户 | 可写 | 签名者 | 描述 |
|---|---|---|---|
payer | ✓ | ✓ | 手续费支付方 |
admin | ✓ | 实例管理员 | |
instance | 实例 PDA | ||
mint | 待允许的 SPL 代币铸造账户 | ||
allowed_mint | ✓ | AllowedMint PDA(由本指令创建) | |
instance_ata | ✓ | 该铸造账户对应的托管 associated token account(由本指令创建) | |
system_program | System Program | ||
token_program | SPL Token Program | ||
associated_token_program | Associated Token Program | ||
event_authority | 事件权限 PDA | ||
private_channel_escrow_program | 托管程序 |
参数
| 参数 | 类型 | 描述 |
|---|---|---|
bump | u8 | allowed_mint PDA 的 bump seed。可选:若未传入,Async 客户端将自动推导 |
IDL 中包含一个
discriminator: u8参数(值为1),由生成的客户端自动设置, 请勿手动传入。
重要说明
- 请使用
getAllowMintInstructionAsync;当未提供bump、allowed_mint和instance_ata时,该函数会自动推导这些值。仅在已通过Pubkey::find_program_address(&[b"allowed_mint", instance_pda, mint], &PROGRAM_ID)自行计算的情况下,才需手动传入bump - 同时创建
instance_ata,即该铸造账户对应的托管 ATA - 带有 transfer hook 扩展的铸造账户将被明确阻止:尝试允许此类铸造账户将抛出
TransferHookNotAllowed错误 - 通过
EmitEventCPI 触发事件
Is this page helpful?