プラグイン

Transfer Delegateプラグイン

Last updated January 31, 2026

Transfer Delegateプラグインは、指定されたauthorityがオーナーに代わってCore Assetsを転送できるようにします。エスクローレスマーケットプレイス販売、ゲームメカニクス、サブスクリプションサービスに不可欠です。

学べること

  • AssetにTransfer Delegateプラグインを追加
  • マーケットプレイスやプログラムに転送権限をデリゲート
  • デリゲートとして転送を実行
  • 転送時のauthority動作

概要

Transfer Delegateは、デリゲートがAssetを転送できるようにするOwner Managedプラグインです。デリゲートされると、authorityはオーナーの承認なしにAssetを任意のアドレスに転送できます。

  • エスクローレスマーケットプレイスリスティングを有効化
  • authorityは転送後に取り消される(一回限りの使用)
  • 永続的な権限にはPermanent Transfer Delegateを使用
  • 追加の引数は不要

対象外

永続的な転送権限(Permanent Transfer Delegateを参照)、コレクションレベルの転送、Token Metadata転送権限(別のシステム)。

クイックスタート

ジャンプ先: プラグインを追加 · 権限をデリゲート · デリゲートとして転送

  1. デリゲートアドレスでTransfer Delegateプラグインを追加
  2. デリゲートがAssetを一度転送可能に
  3. 転送後、authorityは自動的に取り消される

概要

Transfer Delegateプラグインは、Transfer DelegateプラグインのauthorityがいつでもAssetを転送できるようにするOwner Managedプラグインです。 Transfer Pluginは以下のような分野で機能します:

  • Assetのエスクローレス販売:エスクローアカウントを必要とせずにNFTを買い手に直接転送
  • ユーザーがイベントに基づいてアセットを交換/失うゲームシナリオ:ゲームイベント発生時にアセットを自動転送
  • サブスクリプションサービス:サブスクリプションサービスの一部としてNFTを転送

Transfer vs Permanent Transfer Delegateの使い分け

ユースケースTransfer DelegatePermanent Transfer Delegate
マーケットプレイスリスティング✅ 最適❌ リスクが高すぎる
一回限りの転送✅ 最適❌ 過剰
レンタル返却❌ 一回限り✅ 最適
ゲームアセットスワップ✅ 最適✅ 動作する
転送後も権限が持続❌ 取り消し✅ 持続
Transfer Delegateを選択するのは、一回限りのエスクローレス販売(転送後にauthorityが取り消される)の場合です。
Permanent Transfer Delegateを選択するのは、authorityが永続する必要がある場合です。

警告!

Transfer delegate authorityは一時的で、アセット転送時にリセットされます。

対応

MPL Core Asset
MPL Core Collection

引数

Transfer Pluginには渡す引数がありません。

関数

AssetへのTransfer Delegateプラグインの追加

addPluginコマンドは、AssetにTransfer Delegateプラグインを追加します。このプラグインにより、デリゲートがいつでもAssetを転送できます。

MPL Core AssetへのTransferプラグインの追加

import { publicKey } from '@metaplex-foundation/umi'
import { addPlugin } from '@metaplex-foundation/mpl-core'
const assetAddress = publicKey('11111111111111111111111111111111')
const delegate = publicKey('22222222222222222222222222222222')
await addPlugin(umi, {
asset: assetAddress,
plugin: {
type: 'TransferDelegate',
authority: { type: 'Address', address: delegate },
},
}).sendAndConfirm(umi)

転送権限のデリゲート

approvePluginAuthorityコマンドは、転送権限を別のアドレスにデリゲートします。これにより、所有権を維持しながら別のアドレスがAssetを転送できます。

転送権限のデリゲート

import { publicKey } from '@metaplex-foundation/umi'
import { approvePluginAuthority } from '@metaplex-foundation/mpl-core'
const asset = publicKey("11111111111111111111111111111111");
const collection = publicKey("22222222222222222222222222222222");
const delegateAddress = publicKey("33333333333333333333333333333333");
await approvePluginAuthority(umi, {
asset: asset,
collection: collection,
plugin: { type: "TransferDelegate" },
newAuthority: { type: "Address", address: delegateAddress },
}).sendAndConfirm(umi);

デリゲートとしてのAsset転送

transfer命令は、transfer delegate authorityを使用してAssetを別のアドレスに転送します。

MPL Core Assetの転送

import {
fetchAsset,
fetchCollection,
transfer,
} from "@metaplex-foundation/mpl-core";
import { publicKey } from "@metaplex-foundation/umi";
// 転送したいAsset ID
const assetId = publicKey("11111111111111111111111111111111");
// Assetを取得
const assetItem = await fetchAsset(umi, assetId);
// Assetがコレクションの一部である場合はコレクションを取得
const collectionItem =
assetItem.updateAuthority.type == "Collection" &&
assetItem.updateAuthority.address
? await fetchCollection(umi, assetItem.updateAuthority.address)
: undefined;
// Core NFT Assetを転送
const { signature } = await transfer(umi, {
asset: assetItem,
newOwner: publicKey("22222222222222222222222222222222"),
collection: collectionItem,
})
.sendAndConfirm(umi);

Transfer Delegate Authorityの更新

Transfer Delegateプラグインは更新するプラグインデータを含まないため(空のオブジェクト{})、主な「更新」操作はプラグインauthorityの変更です。これにより、異なるアドレスに転送権限をデリゲートできます。

Transfer Delegate Authorityの変更

approvePluginAuthority関数を使用して、転送権限を持つ人を変更できます:

Transfer Delegate Authorityの更新

import { publicKey } from '@metaplex-foundation/umi'
import { approvePluginAuthority } from '@metaplex-foundation/mpl-core'
(async () => {
const assetAddress = publicKey('11111111111111111111111111111111')
const newDelegate = publicKey('44444444444444444444444444444444')
// Transfer delegateを新しいアドレスに変更
await approvePluginAuthority(umi, {
asset: assetAddress,
plugin: { type: 'TransferDelegate' },
newAuthority: { type: 'Address', address: newDelegate },
}).sendAndConfirm(umi)
})();

Transfer Delegate Authorityの取り消し

転送権限はrevokePluginAuthority関数を使用して取り消すことができ、アセットオーナーに転送制御が戻ります。

Transfer Delegate Authorityの取り消し

import { publicKey } from '@metaplex-foundation/umi'
import { revokePluginAuthority } from '@metaplex-foundation/mpl-core'
const assetAddress = publicKey('11111111111111111111111111111111')
await revokePluginAuthority(umi, {
asset: assetAddress,
plugin: { type: 'TransferDelegate' },
}).sendAndConfirm(umi)

一般的なエラー

Authority mismatch

Transfer delegate authorityのみがAssetを転送できます。正しいキーペアで署名していることを確認してください。

Asset is frozen

フリーズされたAssetは転送できません。Freeze authorityがまずAssetを解凍する必要があります。

Transfer delegate not found

AssetにTransfer Delegateプラグインがないか、以前の転送後にauthorityがすでに取り消されています。

注意事項

  • Owner Managed: 追加にはオーナーの署名が必要
  • authorityは転送後に自動的に取り消される
  • 各転送には新しいオーナーによる再デリゲートが必要
  • フリーズされたAssetはデリゲートによって転送できない
  • 永続的な権限にはPermanent Transfer Delegateを使用

クイックリファレンス

Authorityライフサイクル

イベントAuthorityステータス
プラグイン追加アクティブ
Asset転送取り消し
新しいオーナーがプラグインを追加アクティブ(新しいデリゲート)

誰が転送できる?

Authority転送可能?
Assetオーナーはい(常に)
Transfer Delegateはい(一度)
Permanent Transfer Delegateはい(常に)
Update Authorityいいえ

FAQ

なぜ転送権限が取り消されたのですか?

Transfer Delegate authorityは転送後に自動的に取り消されます。これはマーケットプレイスの安全性のための設計です—デリゲートは一度しか転送できません。

エスクローレスリスティングを実装するにはどうすればよいですか?

  1. 売り手がマーケットプレイスをauthorityとしてTransfer Delegateを追加
  2. 買い手が支払うと、マーケットプレイスがAssetを買い手に転送
  3. authorityが取り消されるため、売り手は二重リスティングができない

Transfer DelegateとPermanent Transfer Delegateの違いは何ですか?

Transfer Delegateは1回の転送後に取り消されます。Permanent Transfer Delegateは永続し、Asset作成時にのみ追加できます。

デリゲートとしてフリーズされたAssetを転送できますか?

いいえ。フリーズされたAssetはデリゲート転送を含むすべての転送をブロックします。複雑なエスクローシナリオにはPermanent Transfer DelegateとPermanent Freeze Delegateを使用してください。

オーナーは各転送を承認する必要がありますか?

いいえ。Transfer Delegateが設定されると、デリゲートはオーナーの承認なしに転送できます。ただし、authorityが取り消される前に一度しかできません。

関連プラグイン

用語集

用語定義
Transfer Delegate一回限りの転送権限を許可するOwner Managedプラグイン
Owner Managed追加にオーナーの署名が必要なプラグインタイプ
エスクローレス保持アカウントに転送せずに販売
Permanent Transfer Delegate作成時に追加される取り消し不可能なバージョン