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)が同じ運命を辿らないように期待しておきましょう。





