可用守卫

NFT 支付守卫

概述

NFT Payment 守卫通过向付款人收取来自指定 NFT collection 的 NFT 来允许铸造。NFT 将被转移到预定义的目的地。

如果付款人没有拥有来自必需 collection 的 NFT,铸造将失败。

守卫设置

NFT Payment 守卫包含以下设置:

  • Required Collection:必需 NFT Collection 的铸造地址。我们用于支付的 NFT 必须属于此 collection。
  • Destination:将接收所有 NFT 的钱包地址。

使用 NFT Payment 守卫设置 Candy Machine

create(umi, {
// ...
guards: {
nftPayment: some({
requiredCollection: requiredCollectionNft.publicKey,
destination: umi.identity.publicKey,
}),
},
});

API 参考:createNftPayment

铸造设置

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

  • Destination:将接收所有 NFT 的钱包地址。
  • Mint:用于支付的 NFT 的铸造地址。此 NFT 必须属于必需的 collection 且必须属于铸造者。
  • Token Standard:用于支付的 NFT 的代币标准。
  • Token Account(可选):您可以选择显式提供将 NFT 与其所有者链接的代币账户。默认情况下,将使用付款人的关联代币账户。
  • Rule Set(可选):如果我们使用带有 Rule Set 的可编程 NFT 进行支付,则为用于支付的 NFT 的 Rule Set。

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

使用 NFT Payment 守卫设置 Candy Machine

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

import { TokenStandard } from "@metaplex-foundation/mpl-token-metadata";
mintV1(umi, {
// ...
mintArgs: {
nftPayment: some({
destination,
mint: nftToPayWith.publicKey,
tokenStandard: TokenStandard.NonFungible,
}),
},
});

API 参考:mintV1NftPaymentMintArgs

Route 指令

NFT Payment 守卫不支持 route 指令。