プラグイン

プラグイン概要

Last updated January 31, 2026

このページではCoreプラグインシステムについて説明します。Core AssetとCollectionに動作やデータストレージを追加するモジュール式拡張機能です。プラグインはライフサイクルイベントにフックしてルールを強制したり、オンチェーンデータを保存したりします。

学べること

  • プラグインとは何か、どのように機能するか
  • プラグインの種類:Owner Managed、Authority Managed、Permanent
  • プラグインがライフサイクルイベント(作成、転送、バーン)にどのように影響するか
  • AssetとCollection間のプラグイン優先順位

概要

プラグインは、Core AssetまたはCollectionに機能を追加するオンチェーン拡張機能です。データを保存したり(属性など)、ルールを強制したり(ロイヤリティなど)、権限を委任したり(凍結/転送権限など)できます。

  • Owner Managed: 追加にオーナー署名が必要(Transfer、Freeze、Burn Delegate)
  • Authority Managed: update authorityが追加可能(Royalties、Attributes、Update Delegate)
  • Permanent: 作成時にのみ追加可能(Permanent Transfer/Freeze/Burn Delegate)

範囲外

カスタムプラグインの作成(組み込みプラグインのみサポート)、Token Metadataプラグイン(別システム)、オフチェーンプラグインデータストレージ。

クイックスタート

ジャンプ: プラグインタイプ · プラグインテーブル · ライフサイクルイベント · プラグインの追加

  1. ユースケースに基づいてプラグインを選択(ロイヤリティ、凍結、属性など)
  2. addPlugin()またはAsset/Collection作成時にプラグインを追加
  3. プラグインは自動的にライフサイクルイベントにフック
  4. DASまたはオンチェーンフェッチでプラグインデータをクエリ

ライフサイクル

Core Assetのライフサイクル中、複数のイベントがトリガーされます:

  • 作成
  • 転送
  • 更新
  • バーン
  • プラグイン追加
  • 権限プラグインの承認
  • 権限プラグインの削除 ライフサイクルイベントは、作成からウォレット間の転送、そしてAssetの破棄まで、様々な方法でAssetに影響を与えます。AssetレベルまたはCollectionレベルに添付されたプラグインは、これらのライフサイクルイベント中に検証プロセスを通じて、イベントの実行をapprovereject、またはforce approveします。

プラグインとは?

プラグインは、NFTのためのオンチェーンアプリのようなもので、データを保存したり、Assetに追加機能を提供したりできます。

プラグインの種類

Owner Managedプラグイン

Owner Managedプラグインは、Assetオーナーの署名がトランザクションに存在する場合にのみCore Assetに追加できるプラグインです。 Owner Managedプラグインには以下が含まれますが、これらに限定されません:

  • Transfer Delegate(マーケットプレイス、ゲーム)
  • Freeze Delegate(マーケットプレイス、ステーキング、ゲーム)
  • Burn Delegate(ゲーム) Owner Managedプラグインが権限なしでAsset/Collectionに追加された場合、権限タイプはデフォルトでownerタイプになります。 Owner Managedプラグインの権限は、転送時に自動的に取り消されます。

Authority Managedプラグイン

Authority Managedプラグインは、MPL Core AssetまたはCore Collectionの権限者がいつでも追加・更新できるプラグインです。 Authority Managedプラグインには以下が含まれますが、これらに限定されません:

  • Royalties
  • Update Delegate
  • Attribute Authority Managedプラグインが権限引数なしでAsset/Collectionに追加された場合、プラグインはデフォルトでupdate authorityタイプの権限になります。

Permanentプラグイン

Permanentプラグインは、作成時にのみCore Assetに追加できるプラグインです。 Assetが既に存在する場合、Permanentプラグインは追加できません。 Permanentプラグインには以下が含まれますが、これらに限定されません:

Collectionプラグイン

Collectionプラグインは、Collectionレベルで追加されるプラグインで、コレクション全体に効果を持つことができます。これは特にロイヤリティに便利で、Collection AssetにRoyaltiesプラグインを割り当てると、そのCollection内のすべてのAssetがそのプラグインを参照するようになります。 CollectionはPermanentプラグインAuthority Managedプラグインにのみアクセスできます。

プラグイン優先順位

MPL Core AssetとMPL Core Collection Assetの両方が同じプラグインタイプを共有している場合、Assetレベルのプラグインとそのデータがコレクションレベルのプラグインより優先されます。 これは、Assetのコレクションに異なるレベルでロイヤリティを設定するなど、クリエイティブな方法で使用できます。

  • Collection Assetには2%でRoyaltiesプラグインが割り当てられている
  • コレクション内のスーパーレアMPL Core Assetには5%でRoyaltyプラグインが割り当てられている 上記の場合、コレクションからの通常のMPL Core Asset販売は2%のロイヤリティを保持し、スーパーレアMPL Core Assetは販売時に5%のロイヤリティを保持します。これは、Collection Asset Royaltiesプラグインより優先される独自のRoyaltiesプラグインを持っているためです。

プラグインテーブル

プラグインとライフサイクルイベント

MPL Coreのプラグインは、作成、転送、バーン、更新などの特定のライフサイクルアクションの結果に影響を与える能力を持っています。 各プラグインは、アクションを目的の結果にrejectapprove、またはforce approveする能力を持っています。 ライフサイクルイベント中、アクションは定義済みプラグインのリストを順に確認・検証していきます。 プラグインの条件が検証されると、ライフサイクルはパスしてアクションを続行します。 プラグイン検証が失敗すると、ライフサイクルは停止され拒否されます。 プラグイン検証のルールは、以下の条件階層に従います:

  • force approveがあれば、常にapprove
  • そうでなければ、rejectがあればreject
  • そうでなければ、approveがあればapprove
  • そうでなければreject force approve検証は、ファーストパーティプラグインとPermanent Delegateプラグインでのみ利用可能です。

Force Approve

Force approveは、プラグインの検証を確認する際に最初に行われるチェックです。現在force approve検証を行うプラグインは:

  • Permanent Transfer
  • Permanent Burn
  • Permanent Freeze これらのプラグインは、非永続的な対応物や他のプラグインより優先してアクションを実行します。

Freeze PluginでAssetレベルで凍結されたAssetがあり、同時にAssetにPermanent Burnプラグインがある場合、Assetが凍結されていても、永続プラグインのforceApproveの性質により、Permanent Burnプラグインを通じて呼び出されたバーン手続きは実行されます。

作成

プラグインアクション条件
Royalties拒否可能Ruleset

更新

更新には現在プラグイン条件や検証はありません。

転送

プラグインアクション条件
Royalties拒否可能Ruleset
Freeze Delegate拒否可能isFrozen
Transfer Delegate承認可能isAuthority
Permanent Freeze Delegate拒否可能isFrozen
Permanent Transfer Delegate承認可能isAuthority

バーン

プラグインアクション条件
Freeze Delegate拒否可能isFrozen
Burn Delegate拒否可能isAuthority
Permanent Freeze Delegate拒否可能isFrozen
Permanent Burn Delegate承認可能isAuthority

プラグイン追加

プラグインアクション条件
Royalties拒否可能Ruleset
Update Delegate承認可能isAuthority

プラグイン削除

プラグインアクション条件
Royalties拒否可能Ruleset
Update Delegate承認可能isAuthority

プラグイン権限の承認

承認には現在プラグイン条件や検証はありません。

権限プラグインの取り消し

取り消しには現在プラグイン条件や検証はありません。

一般的なユースケース

ユースケース推奨プラグイン
クリエイターロイヤリティの強制Royalties
エスクローレスステーキングFreeze Delegate
マーケットプレイスリスティングFreeze Delegate + Transfer Delegate
オンチェーンゲームステータスAttributes
サードパーティバーンの許可Burn Delegate
永続ステーキングプログラムPermanent Freeze Delegate

FAQ

Assetの作成後にプラグインを追加できますか?

はい、Permanentプラグインを除いて可能です。Owner Managedプラグインはオーナーの署名が必要で、Authority Managedプラグインはupdate authorityの署名が必要です。

Assetが転送されるとプラグインはどうなりますか?

Owner Managedプラグイン(Transfer、Freeze、Burn Delegate)は転送時に権限が自動的に取り消されます。Authority ManagedとPermanentプラグインは維持されます。

AssetはそのCollectionと同じプラグインを持てますか?

はい。両方が同じプラグインタイプを持つ場合、Assetレベルのプラグインがコレクションレベルのプラグインより優先されます。

プラグインを削除するにはどうすればよいですか?

removePlugin命令を使用します。プラグインの権限者のみが削除できます。プラグインの削除を参照してください。

カスタムプラグインを作成できますか?

いいえ。組み込みプラグインのみがサポートされています。プラグインシステムはサードパーティによる拡張ができません。

プラグインに追加のSOLがかかりますか?

プラグインを追加するとアカウントサイズが増加し、rentが増加します。ほとんどのプラグインは約0.001 SOLですが、データストレージプラグイン(AppDataやAttributesなど)は保存するデータ量に応じてコストが高くなる可能性があります。

用語集

用語定義
PluginAsset/Collectionに動作やデータを追加するモジュール式拡張機能
Owner Managed追加にオーナー署名が必要なプラグインタイプ
Authority Managedupdate authorityが追加できるプラグインタイプ
Permanent作成時にのみ追加できるプラグインタイプ
Lifecycle Eventプラグインが検証できるアクション(作成、転送、バーン)
Force Approve他の拒否を上書きするPermanentプラグイン検証
Plugin Authorityプラグインを更新または削除する権限を持つアカウント