【Solana】NFT発行における注意点

【Solana】NFT発行における注意点 仮想通貨・暗号資産
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)が同じ運命を辿らないように期待しておきましょう。

タイトルとURLをコピーしました