機能
圧縮NFTの転送
Last updated February 24, 2026
Summary
圧縮NFTの転送は、transferV2命令を使用して所有権を一つのウォレットから別のウォレットに移します。このページでは、所有者、デリゲート、永続転送デリゲートによる転送、および転送可否チェックについて説明します。
- transferV2を使用してcNFTを新しい所有者に転送する
- リーフ所有者、リーフデリゲート、または永続転送デリゲートを通じて転送を承認する
- canTransferヘルパーを使用してcNFTが転送可能かどうかを確認する
- cNFTがコレクションに属する場合はcoreCollectionパラメータを渡す
transferV2命令は、圧縮NFTをある所有者から別の所有者に転送するために使用できます。転送を認証するには、現在の所有者またはデリゲート権限(存在する場合)がトランザクションに署名する必要があります。デリゲート権限は、リーフデリゲートまたはコレクションのpermanentTransferDelegateのいずれかです。
この命令は圧縮NFTを更新するため、Bubblegumツリー上のリーフを置き換えることに注意してください。これは、圧縮NFTの整合性を検証するために追加のパラメータを提供する必要があることを意味します。これらのパラメータはリーフを変更するすべての命令に共通であるため、次のFAQでドキュメント化されています。幸いなことに、Metaplex DAS APIを使用してこれらのパラメータを自動的に取得するヘルパーメソッドを使用できます。
トランザクションサイズ
トランザクションサイズエラーが発生した場合は、getAssetWithProofで{ truncateCanopy: true }の使用を検討してください。詳細についてはFAQを参照してください。
Bubblegum V2圧縮NFTの転送
命令は以下のパラメータを受け入れます:
- リーフ所有者: 圧縮NFTの現在の所有者。デフォルトではトランザクションの支払者です。
- リーフデリゲート: 圧縮NFTの現在の所有者とそのデリゲート権限(存在する場合)。これらのいずれかがトランザクションに署名する必要があります。
- 権限: トランザクションに署名するオプションの権限。リーフ所有者または
permanentTransferDelegateにすることができ、デフォルトではトランザクションのpayerです。 - 新しいリーフ所有者: 圧縮NFTの新しい所有者のアドレス
- マークルツリー: Bubblegumツリーのアドレス
- ルート: Bubblegumツリーの現在のルート
- データハッシュ: 圧縮NFTのメタデータのハッシュ
- 作成者ハッシュ: 圧縮NFTの作成者のハッシュ
- ノンス: 圧縮NFTのノンス
- インデックス: 圧縮NFTのインデックス
- コレクション: 圧縮NFTのコアコレクション(cNFTがコレクションの一部である場合)
JavaScriptを使用する場合は、最初にgetAssetWithProof関数を使用してパラメータを取得し、それらをtransferV2命令に渡すことをお勧めします。
圧縮NFTの転送
import { getAssetWithProof, transferV2 } from '@metaplex-foundation/mpl-bubblegum';
const assetWithProof = await getAssetWithProof(umi, assetId, {
truncateCanopy: true,
})
// その後、leafOwnerAはそれを使用してNFTをleafOwnerBに転送できます。
const leafOwnerB = generateSigner(umi)
await transferV2(umi, {
// プルーフ付きアセットからのパラメータを渡します。
...assetWithProof,
authority: leafOwnerA,
newLeafOwner: leafOwnerB.publicKey,
// cNFTがコレクションの一部である場合、コアコレクションを渡します。
//coreCollection: coreCollection.publicKey,
}).sendAndConfirm(umi)
圧縮NFTの転送可否チェック
canTransfer関数を使用して圧縮NFTが転送可能かどうかを確認できます。NFTが転送可能な場合はtrue、そうでない場合はfalseを返します。フリーズされたcNFTとNonTransferableなcNFTは転送できません。
import { canTransfer } from '@metaplex-foundation/mpl-bubblegum'
const assetWithProof = await getAssetWithProof(umi, assetId, {
truncateCanopy: true,
})
const canBeTransferred = canTransfer(assetWithProof)
console.log("canBeTransferred", canBeTransferred ? "Yes" : "No")
Notes
- 転送後、リーフデリゲートは自動的に新しい所有者にリセットされます。
- フリーズされたcNFTとソウルバウンド(転送不可)cNFTは転送できません。
canTransferを使用して確認してください。 - コレクションで
PermanentTransferDelegateプラグインが有効になっている場合、永続転送デリゲートは所有者の署名なしに転送できます。
Glossary
| 用語 | 定義 |
|---|---|
| transferV2 | cNFTを一つの所有者から別の所有者に転送するBubblegum V2命令 |
| 永続転送デリゲート | 所有者の同意なしに任意のcNFTを転送できるコレクションレベルの権限 |
| canTransfer | cNFTが転送可能かどうか(フリーズされていないか、ソウルバウンドでないか)を確認するヘルパー関数 |
| リーフ所有者 | 圧縮NFTの現在の所有者 |
| 新しいリーフ所有者 | 転送後にcNFTの所有権を受け取るウォレットアドレス |
