功能

委托压缩NFT

压缩NFT的所有者可以将其委托给另一个账户,同时保持cNFT的所有权。

这允许被委托的账户——我们也称为委托权限——代表所有者执行操作。这些操作是:

这些操作中的每一个都提供了如何使用委托权限执行它们的示例。通常,您只需提供叶子委托人账户作为签名者,而不是叶子所有者账户。 让我们看看如何批准和撤销压缩NFT的委托权限。

批准委托权限

要批准或替换委托权限,所有者必须发送Delegate指令。此指令接受以下参数:

  • 叶子所有者:压缩NFT的当前所有者作为签名者。默认为交易的付款人。
  • 先前叶子委托人:先前的委托权限(如果有)。否则,应设置为叶子所有者
  • 新叶子委托人:要批准的新委托权限。

此外,由于此指令替换Bubblegum树上的叶子,因此必须提供更多参数来验证压缩NFT的完整性,由于这些参数对于所有改变叶子的指令都是通用的,它们在以下FAQ中有记录。幸运的是,我们可以使用辅助方法,该方法将使用Metaplex DAS API自动为我们获取这些参数。

委托压缩NFT

import { getAssetWithProof, delegate } from '@metaplex-foundation/mpl-bubblegum';
const assetWithProof = await getAssetWithProof(umi, assetId, { truncateCanopy: true });
await delegate(umi, {
...assetWithProof,
leafOwner,
previousLeafDelegate: leafOwner.publicKey,
newLeafDelegate: newDelegate,
}).sendAndConfirm(umi);

撤销委托权限

要撤销现有的委托权限,所有者只需将自己设置为新的委托权限。

撤销压缩NFT的委托权限

import { getAssetWithProof, delegate } from '@metaplex-foundation/mpl-bubblegum';
const assetWithProof = await getAssetWithProof(umi, assetId, {truncateCanopy: true});
await delegate(umi, {
...assetWithProof,
leafOwner,
previousLeafDelegate: currentDelegate,
newLeafDelegate: leafOwner.publicKey,
}).sendAndConfirm(umi);