利用可能なガード
Allocation ガード
概要
Allocation ガードは、各ガードグループがミントできるアセット数の上限を指定できます。
上限は設定で提供される識別子ごとに設定され、同じ Core Candy Machine 内で複数の割り当てを可能にします。
ガード設定
Allocation ガードには以下の設定が含まれます:
- ID: このガードの一意の識別子。異なる識別子は、指定されたウォレットによってミントされたアイテム数を追跡するために異なるカウンターを使用します。これは、ガードのグループを使用する際に特に有用です。各グループに異なるミント上限を設定したい場合があるためです。
- Limit: ガードグループで許可されるミントの最大数。
Allocation ガードを使用した Candy Machine の設定
create(umi, {
// ...
guards: {
allocation: some({ id: 1, limit: 5 }),
},
});
API リファレンス: create, Allocation
ミント設定
Allocation ガードには以下のミント設定が含まれます:
- ID: このガードの一意の識別子。
注: SDK を使用せずに命令を構築する予定がある場合は、これらのミント設定をさらに命令引数と残りのアカウントの組み合わせとして提供する必要があります。詳細については、Candy Guard のプログラムドキュメントを参照してください。
Allocation ガードを使用したミント
Allocation ガードのミント設定は、次のように mintArgs 引数を使用して渡すことができます。
mintV1(umi, {
// ...
mintArgs: {
allocation: some({ id: 1 }),
},
});
Route 命令
Allocation ガードの route 命令は以下の機能をサポートします。
Allocation Tracker の初期化
Allocation ガードを使用する場合、ミントを開始する前に Allocation Tracker アカウントを初期化する必要があります。これにより、ガード設定の id 属性から派生した PDA アカウントが作成されます。
Allocation Tracker PDA アカウントは、ガードグループ内のミント数を追跡し、上限に達すると そのグループ内のミントをブロックします。
この Allocation Tracker アカウントを初期化する際、ガードの route 命令に以下の引数を提供する必要があります:
- ID: ガード設定の Allocation の id。
- Candy Guard Authority: Core Candy Guard アカウントの権限(署名者として)。
Allocation Tracker PDA の初期化
デフォルトガード用の Allocation Tracker PDA を初期化するには:
route(umi, {
// ...
guard: 'allocation',
routeArgs: {
id: 1,
candyGuardAuthority: umi.identity,
},
})
Allocation ガードが特定のグループに追加された場合、group 名を追加する必要があります:
route(umi, {
// ...
guard: 'allocation',
routeArgs: {
id: 1,
candyGuardAuthority: umi.identity,
},
group: some('GROUPA'),
})
API リファレンス: route, AllocationRouteArgs
Allocation アカウント
Allocation ガードが使用されると、route 命令の実行後に allocationTracker アカウントが作成されます。検証目的で次のように取得できます:
import {
safeFetchAllocationTrackerFromSeeds,
} from "@metaplex-foundation/mpl-core-candy-machine";
const allocationTracker = await safeFetchAllocationTrackerFromSeeds(umi, {
id: 1, // ガード設定で設定した allocation id
candyMachine: candyMachine.publicKey,
// または candyMachine: publicKey("Address") で CM アドレスを指定
candyGuard: candyMachine.mintAuthority,
// または candyGuard: publicKey("Address") で candyGuard アドレスを指定
});
