Bubblegum

委托压缩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)