Metaplex Candy Machine V2でNFTをMint時にNot enough SOLエラー

現象

SolanaチェーンのMetaplex Candy Machine V2で、config.json, 0.json, 0.pngを用意して、upload -> verify_upload -> mint_one_token と順に実行してNFTをアップしようとしたところ、mint時にエラーが発生。

#5 Metaplex NFT Candy Machine v2 instruction

> Program log: Instruction: MintNft
> Program log: AnchorError thrown in src/processor/mint.rs:478. Error Code: NotEnoughSOL. Error Number: 6008. Error Message: Not enough SOL to pay for this minting.
> Program Metaplex NFT Candy Machine v2 consumed 27515 of 1378503 compute units
> Program returned error: custom program error: 0x1778

原因

Mint時の費用とウォレット残高が足りていないため、支払いができない状況になっている。
この場合、いろいろなケースがある。

ウォレットに残高がない

  • DevnetからMainnetに切り替えてから、残高補充していなかった
  • 参照しているKeypairが誤っていた(たとばDevnet用のKeypairを参照したままだった、など)

Candy Machine V2の設定が意図したとおりになっていない

  • Mint費用を誤って高額にしている
  • Candy Machine V2のCLI実行時に、Keypair指定が誤っている

対応

ウォレットの残高を確認する

Keypairの場所を調べる

% solana config get
Config File: /Users/user/.config/solana/cli/config.yml
RPC URL: https://api.devnet.solana.com
WebSocket URL: wss://api.devnet.solana.com/ (computed)
Keypair Path: /Users/user/.config/solana/id.json
Commitment: confirmed

Keypairのアドレスを取得する

% solana-keygen pubkey /Users/user/.config/solana/id.json
HXtBm8XZbxaTt41uqaKhwUAa6Z1aPyvJdsZVENiWsetg

残高を確認する

% solana balance HXtBm8XZbxaTt41uqaKhwUAa6Z1aPyvJdsZVENiWsetg
97.979370704 SOL

ここまでで、意図したウォレットに残高がちゃんとあれば問題なし。

Candy Machine V2の設定が正しいか確認する

config.json の priceを確認する

{
  "price": 0.0001,
  "number": 1,
  "gatekeeper": null,
  "solTreasuryAccount": "ExsqGX4FBKwPwCjC4A86YJMEzVFCUkydvK5knskxehgp",
  "splTokenAccount": null,
  "splToken": null,
  "goLiveDate": "12 Jan 2022 00:00:00 GMT",
  "endSettings": null,
  "whitelistMintSettings": null,
  "hiddenSettings": null,
  "storage": "arweave",
  "ipfsInfuraProjectId": null,
  "ipfsInfuraSecret": null,
  "awsS3Bucket": null,
  "noRetainAuthority": false,
  "noMutable": false
}

CLIでKeypairとClusterが意図したとおりになっているか確認する

ts-node ../../metaplex-master/js/packages/cli/src/candy-machine-v2-cli.ts mint_one_token \
    -e mainnet-beta \
    -k ~/.config/solana/id.json \
    -c upload_data

なお、自分の場合は、config.jsonのpriceを誤って高額に設定していたことが原因だった。