プラグイン

Permanent Freeze Delegate

Last updated January 31, 2026

Permanent Freeze Delegate Pluginは、転送後も持続する取り消し不可能なfreeze権限を提供します。ソウルバウンドトークン、Collection全体のフリーズ、永続的なロックメカニズムに使用します。

学習内容

  • 永続的なfreeze機能を持つAssetの作成
  • Collection全体を一度にフリーズ
  • ソウルバウンド(譲渡不可)トークンの実装
  • permanent vs 通常のfreeze delegateの理解

概要

Permanent Freeze Delegateは、作成時にのみ追加できるpermanent pluginです。通常のFreeze Delegateとは異なり、この権限は永続的に有効で、転送後もフリーズ/解凍できます。

  • Asset/Collection作成時にのみ追加可能
  • 権限は転送後も持続(取り消されない)
  • forceApproveを使用 - 他のブロッキングpluginがあってもフリーズ可能
  • Collectionレベルのフリーズは、Collection内の全Assetに影響

対象外

通常のfreeze delegate(Freeze Delegateを参照)、一時的なフリーズ、Token Metadata freeze権限。

クイックスタート

移動先: Assetの作成 · Collectionの作成 · 更新(解凍)

  1. Asset/Collection作成時にPermanentFreezeDelegate pluginを追加
  2. 即時フリーズにはfrozen: true、後でフリーズするにはfalseを設定
  3. delegateは転送後もいつでもフリーズ/解凍可能

Permanent vs 通常のFreeze Delegate

機能Freeze DelegatePermanent Freeze Delegate
作成後に追加✅ 可能❌ 作成時のみ
転送後も権限が持続❌ 取り消し✅ 持続
Collectionで動作❌ 不可✅ 可能
forceApprove❌ なし✅ あり
ソウルバウンドトークン❌ 限定的✅ 最適な選択
Freeze Delegateを選択:一時的で取り消し可能なフリーズの場合。
Permanent Freeze Delegateを選択:永続的な権限またはCollection全体のフリーズの場合。

一般的なユースケース

  • ソウルバウンドトークン:譲渡不可の資格証明、実績、またはメンバーシップを作成
  • Collection全体のフリーズ:1つのpluginでCollection内の全Assetをフリーズ
  • 永続的な担保:所有権の変更後も存続する担保としてAssetをロック
  • ゲームアイテムの永続性:取引に関係なくロックされたままのアイテム
  • コンプライアンス要件:規制上の理由でフリーズしたままにする必要があるAsset

対応

MPL Core Asset
MPL Core Collection

動作

  • Asset:delegatedアドレスがいつでもNFTをフリーズおよび解凍できるようにします。
  • Collection:collection authorityがCollection全体を一度にフリーズおよび解凍できるようにします。このdelegateを使用してCollection内の単一assetをフリーズすることはできません

引数

引数
frozenbool

Permanent Freeze pluginを持つAssetの作成

以下の例は、Permanent Freeze pluginを持つAssetを作成する方法を示しています。

Permanent Freeze pluginを持つAssetの作成

import { publicKey } from '@metaplex-foundation/umi'
import { create } from '@metaplex-foundation/mpl-core'
const assetSigner = generateSigner(umi)
const delegate = publicKey('33333333333333333333333333333')
await create(umi, {
asset: assetSigner,
name: 'My NFT',
uri: 'https://example.com/my-asset.json',
plugins: [
{
type: 'PermanentFreezeDelegate',
frozen: true,
authority: { type: 'Address', address: delegate },
},
],
}).sendAndConfirm(umi)

AssetのPermanent Freeze Delegate pluginの更新

以下の例は、AssetのPermanent Freeze Delegate pluginを更新する方法を示しています。frozen引数をtrueまたはfalseに設定してフリーズまたは解凍します。署名ウォレットがplugin authorityであることを前提としています。

AssetのPermanent Freeze Delegate pluginの更新

import { updatePlugin } from '@metaplex-foundation/mpl-core'
const updateAssetResponse = await updatePlugin(umi, {
asset: asset.publicKey,
plugin: {
type: "PermanentFreezeDelegate",
frozen: false,
},
}).sendAndConfirm(umi);

Permanent Freeze pluginを持つCollectionの作成

以下の例は、Permanent Freeze pluginを持つCollectionを作成する方法を示しています。

Permanent Freeze pluginを持つCollectionの作成

import { generateSigner } from '@metaplex-foundation/umi'
import { createCollection } from '@metaplex-foundation/mpl-core'
const collectionSigner = generateSigner(umi)
await createCollection(umi, {
collection: collectionSigner,
name: "Frozen Collection",
uri: "https://example.com/my-collection.json",
plugins: [
{
type: 'PermanentFreezeDelegate',
frozen: true,
authority: { type: "UpdateAuthority"}, // The update authority can unfreeze it
},
],
}).sendAndConfirm(umi);

Permanent Freeze pluginを持つCollectionの更新

以下の例は、CollectionのPermanent Freeze Delegate pluginを更新する方法を示しています。frozen引数をtrueまたはfalseに設定してフリーズまたは解凍します。署名ウォレットがplugin authorityであることを前提としています。

Permanent Freeze pluginを持つCollectionの更新

import { updateCollectionPlugin } from '@metaplex-foundation/mpl-core'
const updateCollectionResponse = await updateCollectionPlugin(umi, {
collection: collectionSigner.publicKey,
plugin: {
type: "PermanentFreezeDelegate",
frozen: false,
},
}).sendAndConfirm(umi);

一般的なエラー

Cannot add permanent plugin after creation

Permanent pluginはAsset/Collection作成時にのみ追加できます。既存のAssetにPermanent Freeze Delegateを追加することはできません。

Authority mismatch

plugin authorityのみがフリーズ/解凍できます。正しいキーペアで署名しているか確認してください。

注意事項

  • 作成時のみ:Asset/Collection存在後は追加不可
  • Force approve:競合するpluginがあってもフリーズ可能
  • Collection動作:全Assetを一度にフリーズ、個別ではない
  • 永続的:権限は転送後も取り消されない
  • ソウルバウンドトークンにはfrozen: trueとauthority Noneを設定して使用

FAQ

ソウルバウンド(譲渡不可)トークンはどのように作成しますか?

PermanentFreezeDelegateでAssetを作成し、frozen: trueに設定し、authorityをNoneに設定します。Assetは決してアンフリーズまたは転送できなくなります。

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

通常のFreeze Delegate authorityは転送時に取り消され、Assetでのみ機能します。Permanent Freeze Delegateは永続的に有効で、Collectionで機能し、forceApproveを使用します。

Collection内の個別のAssetをフリーズできますか?

いいえ。Permanent Freeze DelegateがCollectionにある場合、フリーズは全てのAssetに一度に影響します。個別制御にはAssetレベルのPermanent Freeze Delegateを使用してください。

永続的にフリーズされたAssetはburnできますか?

Permanent Burn Delegateもある場合のみ可能です。通常のBurn DelegateはフリーズされたAssetをburnできませんが、Permanent Burn DelegateはforceApproveを使用します。

関連Plugin

用語集

用語定義
Permanent Plugin作成時にのみ追加でき、永続的に有効なPlugin
forceApprove他のpluginの拒否を上書きする検証
Soulboundウォレットに永続的にフリーズされた譲渡不可のトークン
Collection FreezeCollection内の全Assetを一度にフリーズ