Core Candy Machine

Core Candy Machineの更新

Last updated March 10, 2026

概要

updateCandyMachine関数は、初期作成後にCore Candy Machineのオンチェーン設定を変更し、updateCandyGuardはミントアクセスを制御するガードを変更できます。

  • itemsAvailableisMutableConfig Line SettingsHidden SettingsなどのCandy Machineデータフィールドを更新
  • setMintAuthorityを使用してミント権限を新しいウォレットに再割り当て
  • updateCandyGuardでガードルールを変更 -- guardsオブジェクト全体が各更新で置き換えられることに注意
  • wrapunwrapを使用してCandy Guardアカウントを手動で関連付けまたは切り離し {.lead}

Core Candy Machineの更新

import {
updateCandyMachine
} from '@metaplex-foundation/mpl-core-candy-machine'
const candyMachine = generateSigner(umi)
await updateCandyMachine(umi, {
candyMachine,
data: {
itemsAvailable: 3333;
isMutable: true;
configLineSettings: none();
hiddenSettings: none();
}
}).sendAndConfirm(umi)

更新関数の引数

updateCandyMachine関数は、Candy Machineのパブリックキーと変更するフィールドを含むdataオブジェクトを受け取ります。

Core Candy Machine更新引数

名前タイプ説明
candyMachinepublicKey更新するCandy Machineのパブリックキー
datadata更新された設定を含むオブジェクト

一部の設定はミントが開始された後では変更できません。最初のミントが発生する前に設定を確定してください。

Candy Machineデータオブジェクト

dataオブジェクトはCore Candy Machineの可変設定を定義します。変更したいフィールドを含むこのオブジェクトをupdateCandyMachineに渡します。

Candy Machineデータオブジェクト

data = {
itemsAvailable: number | bigint;
isMutable: boolean;
configLineSettings: OptionOrNullable<ConfigLineSettingsArgs>;
hiddenSettings: OptionOrNullable<HiddenSettingsArgs>;
}

新しい権限の割り当て

setMintAuthority関数は、Core Candy Machineのミント権限を新しいウォレットアドレスに転送します。現在の権限と新しい権限の両方がトランザクションに署名する必要があります。

export declare type SetMintAuthorityInstructionAccounts = { /Candy Machineアカウント。 */ candyMachine: PublicKey | Pda; / Candy Machine権限 / authority?: Signer; /** 新しいCandy Machine権限/ mintAuthority: Signer; };

Core Candy Machineに新しい権限を割り当て

import { setMintAuthority } from '@metaplex-foundation/mpl-core-candy-machine'
const candyMachine = publicKey('11111111111111111111111111111111')
const newAuthority = publicKey('22222222222222222222222222222222')
await setMintAuthority(umi, {
candyMachine,
mintAuthority: newAuthority,
}).sendAndConfirm(umi)

Core Candy Machineに新しい権限を割り当てる場合、コレクションアセットも同じ更新権限に更新する必要があります。Candy Machine権限とコレクション更新権限が一致しないとミントが失敗します。

ガードの更新

updateCandyGuard関数は、Candy Guardアカウントのガード設定全体を置き換えます。ミント価格の変更、開始日の調整、新しいガードの有効化、既存ガードの無効化に使用します。

設定を提供することで新しいガードを有効にしたり、空の設定を与えることで現在のガードを無効にしたりできます。

ガードの更新

Core Candy Machineのガードは、作成したのと同じ方法で更新できます。つまり、updateCandyGuard関数のguardsオブジェクト内で設定を提供することです。none()に設定されているか提供されていないガードは無効になります。

guardsオブジェクト全体が更新されることに注意してください。つまり、既存のすべてのガードを上書きします。設定が変更されていない場合でも、有効にしたいすべてのガードの設定を提供するようにしてください。現在のガードにフォールバックするために、最初にCandy Guardアカウントを取得してください。

import { some, none, sol } from '@metaplex-foundation/umi'
const candyGuard = await fetchCandyGuard(umi, candyGuardId)
await updateCandyGuard(umi, {
candyGuard: candyGuard.publicKey,
guards: {
...candyGuard.guards,
botTax: none(),
solPayment: some({ lamports: sol(3), destination: treasury }),
},
groups: [
// 空、またはグループを使用している場合はここにデータを追加
]
})

APIリファレンス: updateCandyGuard, CandyGuard, DefaultGuardSetArgs

Candy Guardアカウントのラップとアンラップ

ラップはCandy GuardをCore Candy Machineに関連付け、ミント中にガードルールが強制されるようにします。アンラップはそれらを切り離します。ほとんどのプロジェクトは両方のアカウントを一緒に作成しますが、必要に応じて独立して管理できます。

最初に2つのアカウントを個別に作成し、手動で関連付け/関連付け解除する必要があります。

Candy Machineからガードの関連付けと解除

Umiライブラリのcreate関数は、作成されたすべてのCandy Machineアカウントに対して新しいCandy Guardアカウントを作成・関連付けることを既に処理しています。

しかし、それらを別々に作成して手動で関連付け/関連付け解除したい場合は、以下のようにします。

import {
some,
percentAmount,
sol,
dateTime
} from '@metaplex-foundation/umi'
import {
createCandyMachine,
createCandyGuard,
findCandyGuardPda,
wrap,
unwrap
} from '@metaplex-foundation/mpl-core-candy-machine'
// Candy GuardなしでCandy Machineを作成します。
const candyMachine = generateSigner(umi)
await createCandyMachine({
candyMachine,
tokenStandard: TokenStandard.NonFungible,
collectionMint: collectionMint.publicKey,
collectionUpdateAuthority: umi.identity,
itemsAvailable: 100,
sellerFeeBasisPoints: percentAmount(1.23),
creators: [
{
address: umi.identity.publicKey,
verified: false,
percentageShare: 100
},
],
configLineSettings: some({
prefixName: 'My NFT #',
nameLength: 3,
prefixUri: 'https://example.com/',
uriLength: 20,
isSequential: false,
}),
}).sendAndConfirm(umi)
// Candy Guardを作成します。
const base = generateSigner(umi)
const candyGuard = findCandyGuardPda(umi, { base: base.publicKey })
await createCandyGuard({
base,
guards: {
botTax: { lamports: sol(0.01), lastInstruction: false },
solPayment: { lamports: sol(1.5), destination: treasury },
startDate: { date: dateTime('2022-10-17T16:00:00Z') },
},
}).sendAndConfirm(umi)
// Candy GuardをCandy Machineに関連付けます。
await wrap({
candyMachine: candyMachine.publicKey,
candyGuard,
}).sendAndConfirm(umi)
// それらの関連付けを解除します。
await unwrap({
candyMachine: candyMachine.publicKey,
candyGuard,
}).sendAndConfirm(umi)

APIリファレンス: createCandyMachine, createCandyGuard, wrap, unwrap

注意事項

  • itemsAvailableを含むいくつかのCandy Machine設定は、最初のアイテムがミントされた後にロックされます。ミント開始前にすべてのデータフィールドを確定してください。
  • updateCandyGuardを呼び出すとguardsオブジェクト全体が置き換えられます。変更を適用する前に常に現在のガード状態を取得し、既存の値をスプレッドしてください。そうしないと、意図せずアクティブなガードが無効になります。
  • Core Candy Machine権限とコレクションアセット更新権限は一致する必要があります。setMintAuthorityで権限を再割り当てした場合、コレクションアセットの権限も更新してください。
  • ラップとアンラップはガードの作成とは別の操作です。Candy Guardは、Candy Machineにラップ(関連付け)されるまでミントに影響を与えません。

FAQ

ミント開始後にitemsAvailableの数を変更できますか?

いいえ。itemsAvailableを含むいくつかのCore Candy Machine設定は、最初のアイテムがミントされた後にロックされます。ミントが発生する前にこれらのフィールドを更新してください。

Candy Guardsを更新すると既存のガード設定はすべて置き換えられますか?

はい。updateCandyGuard関数はguardsオブジェクト全体を上書きします。設定が変更されていないガードも含めて、保持したいすべてのガードを含める必要があります。最初に現在のガードアカウントを取得し、その値を更新呼び出しにスプレッドしてください。

Candy Machine権限を再割り当てする際にコレクション権限も更新する必要がありますか?

はい。Core Candy Machine権限とコレクションアセット更新権限は一致する必要があります。setMintAuthorityを呼び出した後、コレクションアセットも同じ新しい権限を使用するように更新してください。

Candy Guardのラップとアンラップの違いは何ですか?

ラップはCandy GuardアカウントをCore Candy Machineに関連付け、ミント中にガードルールが強制されるようにします。アンラップはそれらを切り離し、ガードの強制を解除します。ほとんどのプロジェクトはガードを常にラップされた状態に保ちます。