機能

圧縮NFTのデリゲート

圧縮NFTの所有者は、cNFTの所有権を保持したまま、別のアカウントにデリゲートできます。

これにより、デリゲートされたアカウント(デリゲート権限とも呼ばれます)は、所有者に代わってアクションを実行できます。これらのアクションは以下の通りです:

これらのアクションはそれぞれ、デリゲート権限を使用してそれらを実行する方法の例を提供します。通常、リーフ所有者アカウントの代わりにリーフデリゲートアカウントを署名者として提供するだけです。 圧縮NFTのデリゲート権限を承認・取り消しする方法を見てみましょう。

デリゲート権限の承認

デリゲート権限を承認または置き換えるには、所有者がデリゲート命令を送信する必要があります。この命令は以下のパラメータを受け入れます:

  • リーフ所有者:署名者としての圧縮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);