可用守卫

Token2022 Payment 守卫

概述

Token2022 Payment 守卫允许通过向付款人收取来自配置铸币账户的一些代币来铸造。可以配置代币数量和目标地址。

如果付款人没有所需数量的代币来支付,铸造将失败。

Token2022 Payment 守卫的工作方式与 Token Payment 守卫相同——唯一的区别是铸币账户和代币账户应该来自 SPL Token-2022 程序

守卫设置

Token Payment 守卫包含以下设置:

  • Amount(数量):向付款人收取的代币数量。
  • Mint(铸币账户):定义我们要用于支付的 SPL 代币的铸币账户地址。
  • Destination Associated Token Address(目标关联代币地址,ATA):要将代币发送到的关联代币账户地址。我们可以使用 Token Mint 属性和应该接收这些代币的任何钱包地址来查找关联代币地址 PDA 来获取此地址。

使用 Token Payment 守卫设置 Candy Machine

请注意,在此示例中,我们使用当前身份作为目标钱包。

import { findAssociatedTokenPda } from "@metaplex-foundation/mpl-toolbox";
create(umi, {
// ...
guards: {
token2022Payment: some({
amount: 300,
mint: tokenMint.publicKey,
destinationAta,
}),
},
});

API 参考:createTokenPayment

铸造设置

Token Payment 守卫包含以下铸造设置:

  • Mint(铸币账户):定义我们要用于支付的 SPL 代币的铸币账户地址。
  • Destination Associated Token Address(目标关联代币地址,ATA):要将代币发送到的关联代币账户地址。

请注意,如果您计划在没有我们 SDK 帮助的情况下构建指令,您需要提供这些铸造设置以及更多作为指令参数和剩余账户的组合。有关更多详细信息,请参阅 Candy Guard 程序文档

使用 NFT Burn 守卫铸造

您可以使用 mintArgs 参数传递 Token Payment 守卫的铸造设置,如下所示。

mintV2(umi, {
// ...
mintArgs: {
token2022Payment: some({
mint: tokenMint.publicKey,
destinationAta,
}),
},
});

API 参考:mintV2TokenPaymentMintArgs

Route 指令

Token Payment 守卫不支持 route 指令。