REST error for pgeokkQUe5aU6G9zrrgYpMynnXMkBv6emy4igkit4jDkCdXSFrtUrNKuUufJnCLePhZdUcBJQpJrYXfHNcDKHTs { confirmationStatus: 'processed', confirmations: 0, err: { InstructionError: [ 4, [Object] ] }, slot: 118196098, status: { Err: { InstructionError: [Array] } } } Timeout Error caught { InstructionError: [ 4, { Custom: 6008 } ] }
SolanaでNFTを発行する際、上記のエラーが出ることがあります。
この記事では、このエラーの解決方法を説明します。
本記事の内容
- NFT発行エラーの原因
- NFT発行エラーの解決方法
- NFT発行に成功したコマンドと設定
上記に沿って解説していきます。
NFT発行エラーの原因
エラーの原因は、Wallet内の残高が足りないことです。
開発環境だと無償で残高を追加できます。
しかし、本番環境だとそれほど残高に余裕がありません。
このことで冒頭のエラーが発生しやすくなります。
実際、私はこのエラーのせいで数百円を無駄にしました・・・
数百円であるため、ほぼ無傷ですけどね。
でも、気持ちの良いモノではありません。
では、エラー原因を具体的に見ていきます。
Candy Machineにより、NFTを発行するためにconfig.jsonを作成します。
ここでNFTの販売価格を設定することになります。
config.json
{ "price": 1.0, "number": 1, "gatekeeper": null, "solTreasuryAccount": "<YOUR WALLET ADDRESS>", "splTokenAccount": null, "splToken": null, "goLiveDate": "20 Jan 2022 00:00:00 GMT", "endSettings": null, "whitelistMintSettings": null, "hiddenSettings": null, "storage": "arweave", "ipfsInfuraProjectId": null, "ipfsInfuraSecret": null, "awsS3Bucket": null, "noRetainAuthority": false, "noMutable": false }
販売価格は、「price」です。
上記では、「1.0」と記載しています。
ここで記載した金額以上の残高が、Walletにある必要があります。
「」で設定したアドレスのWalletが対象となります。
発行手数料を考慮すると、余裕は持たせる必要はあるでしょう。
ギリギリだとおそらく、アウトです。
例えば、Wallet内が以下の状況だったとします。
そして、「”price”: 1.0,」で設定を進めたとします。
アップロードの処理までは、普通に進めることが可能です。
そして、最後にデプロイするために以下のコマンドを実行します。
$ ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts mint_one_token \ > -e mainnet-beta \ > -k ~/.config/solana/mainnet-beta.json \ > -c my_dog
実行した結果、冒頭のエラーが表示されます。
もっと早い段階で教えてくれと思いますけど、この段階なのですよね。
以上、NFT発行エラーの原因について説明しました。
次は、NFT発行エラーの解決方法を確認します。
NFT発行エラーの解決方法
解決方法は、次の2つです。
- Walletの残高を増やす
- 販売価格を減額する
本気でNFTを売っていくのなら、Walletの残高を増やすしか選択肢はありません。
しかし、自分専用のNFTであれば販売価格の減額で十分です。
減額する場合は、Walletの残高より下に設定しましょう。
私の場合は、「1.0」から「0.1」に変更しました。
config.json
"price": 0.1,
これで処理を進めていけば、エラーが出ないようになります。
(もちろん、残高が0.1未満だとエラーは出ます)
以上、エラーの解決方法を説明しました。
次は、NFT発行に成功したコマンドと設定を載せておきます。
NFT発行に成功したコマンドと設定
ここでは、実際にNFT発行に成功した際のコマンドを設定を載せておきます。
ここでは、詳細は説明しません。
下記で挙げた記事において、詳細を説明しています。
その内容に基づいて、本番用のWalletやmainnet-beta.jsonが作成する必要があります。
Solana Tool Suiteのインストール
開発環境でのNFT発行
Phantomのインストール
PhantomとSolana Tool SuiteにおけるWalletの共有
設定ファイル
config.json
{ "price": 0.1, "number": 1, "gatekeeper": null, "solTreasuryAccount": "FfHGCs9j6agihuMkrKjGya5TydTPe9Erw3B3sj89K65h", "splTokenAccount": null, "splToken": null, "goLiveDate": "20 Jan 2022 00:00:00 GMT", "endSettings": null, "whitelistMintSettings": null, "hiddenSettings": null, "storage": "arweave", "ipfsInfuraProjectId": null, "ipfsInfuraSecret": null, "awsS3Bucket": null, "noRetainAuthority": false, "noMutable": false }
0.json
{ "name": "my_dog", "symbol": "", "description": "my first NFT", "seller_fee_basis_points": 0, "image": "0.jpg", "attributes": [ {"trait_type": "Layer-1", "value": "0"}, {"trait_type": "Layer-2", "value": "0"}, {"trait_type": "Layer-3", "value": "0"}, {"trait_type": "Layer-4", "value": "1"} ], "properties": { "creators": [{"address": "FfHGCs9j6agihuMkrKjGya5TydTPe9Erw3B3sj89K65h", "share": 100}], "files": [{"uri": "0.jpg", "type": "image/jpeg"}] }, "collection": {"name": "my_dog", "family": "my NFT"} }
コマンド
作業ディレクトリと設定ファイルの作成
$ mkdir candy_machine_main $ cd candy_machine_main $ nano config.json $ mkdir assets $ nano ./assets/0.json
assetsには、「0.jpg」を設置。
アップロード、検証、デプロイ(Mint)
$ solana balance 0.37607441 SOL $ ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts upload \ -e mainnet-beta \ -k ~/.config/solana/mainnet-beta.json \ -cp config.json \ -c my_dog \ ./assets $ solana balance 0.368412809 SOL $ ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts verify_upload \ -e mainnet-beta \ -k ~/.config/solana/mainnet-beta.json \ -c my_dog $ solana balance 0.368412809 SOL $ ts-node ~/metaplex/js/packages/cli/src/candy-machine-v2-cli.ts mint_one_token \ -e mainnet-beta \ -k ~/.config/solana/mainnet-beta.json \ -c my_dog $ solana balance 0.356426609 SOL
処理が終わるたびに、残高を表示しています。
verify_uploadだけは無償です。
まとめ
上記の結果では、0.019647801 SOLが消費されています。
日本円だと213.03円となります。
1 SOLが、下記の価格で計算した場合です。
NFT発行に成功すれば、Phantom上でNFTを確認できます。
約200円でNFTを発行できました。
SOLがもっと安くなれば、もっと安くでNFTを発行できるようになります。
逆に高くなれば、その分だけ発行費用は高くなります。
現状のイーサリアムの価格(ガス代)では、社会のインフラになりえません。
これでも以前よりは暴落しているんですけどね。
Solana(SOL)が同じ運命を辿らないように期待しておきましょう。