機能
圧縮NFTのデリゲート
圧縮NFTの所有者は、cNFTの所有権を保持したまま、別のアカウントにデリゲートできます。
これにより、デリゲートされたアカウント(デリゲート権限とも呼ばれます)は、所有者に代わってアクションを実行できます。これらのアクションは以下の通りです:
- cNFTの転送:デリゲート権限は転送後にリセット(つまり新しい所有者に設定)されます。
- cNFTのバーン。
- 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);
