「Candy Machine」でToken Metadata NFTコレクションを作成する方法
Solana上でNFTコレクションを立ち上げたいと考えている方には、Sugar CLIツールキットがおすすめです。このツールを使えば、複雑な設定や管理を省くことができます。SolanaブロックチェーンでCandy Machineを作成する際、自動化されたローンチシステムを利用できるので、作業がより効率的になります。
前提条件
Solana CLIが設定済みであること。インストールはこちら。
CLIを使って生成されたファイルシステムウォレットがあること。
メインネット、またdevnetのSOLでウォレットに資金があること。
初期セットップ
Sugar のインストール
Mac/Linux
bash <(curl -sSf https://sugar.metaplex.com/install.sh)
Windows
こちらからインストール実行ファイルをダウンロードすることでSugarをインストールできます。
バイナリファイルをダブルクリックして実行してみてください。信頼できないバイナリに関する警告のポップアップメッセージが表示された場合は「詳細情報」をクリックしてから「実行」を選択してください。
アセットの準備
NFTは、主に「イメージ」と「メタデータ」から構成されています。
「イメージ」はウォレットやマーケットプレイスで表示されるものです。一方、「メタデータ」にはそのNFTに関連するブロックチェーン上の情報が含まれており「名前」「イメージ」へのリンク、NFTの「属性」などが記載されています。
アセットフォルダ
Sugarのコマンドを実行する際、コマンドを実行するディレクトリに「assets」フォルダがあることを前提としています。
イメージファイルとメタデータファイルの両方が、この「assets」フォルダ内に配置されます。
ファイルの命名規則
イメージファイルとメタデータのJSONファイルは、0から始まる連続した番号を使用して命名する必要があります。
番号が抜けていたり「image」フォルダと「metadata」フォルダ内のファイル数が一致しない場合、フォルダの検証が失敗します。
assets/
├─ 0.png
├─ 0.json
├─ 1.png
├─ 1.json
├─ 2.png
├─ 2.json
├─ ...
メタデータ JSON
{
"name": "My NFT #1",
"description": "My NFT Collection",
"image": "https://arweave.net/26YdhY_eAzv26YdhY1uu9uiA3nmDZYwP8MwZAultcE?ext=jpeg",
"external_url": "https://example.com",
"attributes": [
{
"trait_type": "trait1",
"value": "value1"
},
{
"trait_type": "trait2",
"value": "value2"
}
],
"properties": {
"files": [
{
"uri": "https://www.arweave.net/abcd5678?ext=png",
"type": "image/png"
}
],
"category": "image"
}
}
サンプル画像とメタデータ
Candy Machineを作成する際にサンプル画像とメタデータを使用したい場合は、GitHubから以下の方法でダウンロードできます。緑色の「code」ボタンをクリックし、「zip format」を選択してzipファイル形式でダウンロードしてください。
https://github.com/metaplex-foundation/example-candy-machine-assets
または、もしgitをインストールしている場合は、アセットをシステムにクローンすることができます。あるいは、こちらのリンクからzipファイルをダウンロードすることも可能です。
「イメージ」と「メタデータ」のジェネレーター
レイヤーから「イメージ」と「メタデータ」を生成する必要がある場合、いくつかの自動化スクリプトやウェブサイトがあります。これらのジェネレーターにイメージレイヤーとプロジェクトに関する基本情報を提供すると、指定したパラメーターに基づいて、一定数のアセットイメージとJSONメタデータの組み合わせを生成してくれます。
コレクションの詳細情報
コレクションを作成するには、NFTアセットと同じように「イメージ」ファイルと「メタデータ」のJSONファイルが必要です。これらのファイルは、以下のように「asset/」フォルダのルートに配置します。
assets/
├─ collection.jpg/
├─ collection.json/
├─ 0.png
├─ 0.json
├─ 1.png
├─ 1.json
├─ 2.png
├─ 2.json
├─ ...
コレクションのメタデータファイルは、NFTアセットのJSONファイルと同じ形式です。ただし、コレクションの場合は「attributes」(属性)フィールドの記入を省略することができます。
{
"name": "My Collection",
"description": "This is My Nft Collection",
"image": "collection.jpg",
"external_url": "https://example.com",
"properties": {
"files": [
{
"uri": "https://example.com/1.jpg",
"type": "image/jpg"
}
],
"category": "image"
}
}
Sugar
デフォルトでは、SugarはSolana CLIが使用する設定ファイルを利用して、以下のようなデフォルト値を読み込みます。
Solana CLIで設定されたウォレット
Solana CLIで設定されたRPC URL
Sugarの起動
アセットフォルダの準備が整ったら、Sugarを使用してデプロイメントプロセスを開始できます。最初に実行するコマンドは次のとおりです。
sugar launch
これにより、SugarのCLIプロセスが起動し、Candy Machineのデプロイメントに関する情報を収集します。
もし「sugar」が設定ファイルを見つけられない場合、新しく作成するよう促されます。
その後、以下の質問に答えていく形で必要な情報を入力していきます。
Found xx file pairs in "assets". Is this how many NFTs you will have in your candy machine?
Found symbol "xxxx" in your metadata file. Is this value correct?
Found value xxx for seller fee basis points in your metadata file. Is this value correct?
Do you want to use a sequential mint index generation? We recommend you choose no.
How many creator wallets do you have? (max limit of 4)
ロイヤリティを分配するためのウォレットを作成します。選択すると、各ウォレットの「address」と「share」の入力を求められます。
Which extra features do you want to use? (use [SPACEBAR] to select options you want and hit [ENTER] when done)
このガイドでは、「hidden settings」を選択せずに、エンターキーを押して次に進みます。
What upload method do you want to use?
このガイドでは「Bundlr」を選択します。
Do you want your NFTs to remain mutable? We HIGHLY recommend you choose yes.
この選択肢には「はい」(y)を選びましょう。これにより、将来必要に応じてNFTを編集できるようになります。
Sugarは次のプロセスを開始します。
コレクションNFTの作成とアップロード
アセットのBundlrへのアップロード
Candy Machineの作成
成功すると、以下のようなメッセージが表示されます。ただし、リンク内には自分のCandy Machineアドレスが含まれています。
https://www.solaneyes.com/address/Beag81WvAPUCeFpJ2qFnvd2f1CFCpQBf3abTJXA1fH9o?cluster=devnet
おめでとうございます。Solana上にCandy Machineを作成しました。上記のリンクをクリックすると、ブロックチェーン上であなたのCandy Machineの詳細を確認することができます。
Candy Machineにガードとグループを追加する
現在、あなたのCandy Machineにはガードが設定されていません。デフォルトでは、Candy GuardがCandy Machineに設定されていない場合、mint authority(つまりあなた自身)のみがCandy Machineからミントできます。
この問題を解決するには、Candy Machineにガードを設定する必要があります。ガードを設定することで、一定のルールに従って一般の人々がCandy Machineからミントできるようになります。例えば、ユーザーに1 SOLを課金しながら、一般の人々がCandy Machineからミントできるようにしたい場合があります。このような場合、Sol Payment Guardを使用できます。
ガードの追加(SOL Payment)
Candy MachineにSol Payment Guardを追加するには、Sugarが生成した「config.json」ファイルを開く必要があります。このファイルは、ターミナルで「sugar launch」を実行したフォルダのルートにあります。
設定ファイルは以下のような形式になっています。
{
"tokenStandard": "nft",
"number": 16,
"symbol": "NUMBERS",
"sellerFeeBasisPoints": 500,
"isMutable": true,
"isSequential": false,
"creators": [
{
"address": "B1kwbSHRiXFPYvNbuhCX92ibngzxdmfBzfaJYuy9WYp5",
"share": 100
}
],
"uploadMethod": "bundlr",
"ruleSet": null,
"awsConfig": null,
"sdriveApiKey": null,
"nftStorageAuthToken": null,
"shdwStorageAccount": null,
"pinataConfig": null,
"hiddenSettings": null,
"guards": null,
"maxEditionSupply": null
}
ここで、設定ファイルの末尾にある「guards」フィールドを編集し、SOL Paymentの送金先となるアドレスを入力します。
"guards": {
"default": {
"solPayment": {
"value": 1,
"destination": "11111111111111111111111111111111"
}
}
},
ガードを「config.json」に追加したら、ファイルを保存し、次のコマンドを実行してください。
sugar guard add
既にCandy Guardを作成済みの場合は、代わりに次のコマンドを実行してください。
sugar guard update
これにより、Candy Guardが作成され、デフォルトのガードリストにSOL Payment Guardが追加されます。
Candy Machineの詳細を表示する
ターミナルでCandy Machineの詳細を表示するには、以下のコマンドを実行します。
sugar show
このコマンドを実行すると、挿入されたアイテムを除いた、Candy MachineとGuardの全ての詳細情報がリストアップされます。
Candy Guardの詳細を表示する
ターミナルでCandy Guardの詳細を表示するには、以下のコマンドを実行します。
sugar guard show
このコマンドを実行すると、挿入されたアイテムを除いた、Candy MachineとGuardの全ての詳細情報がリストアップされます。
ネクストステップ
Candy Machineが正常に機能するようになったので、次は人々がミントできるようにウェブUI上でCandy Machineをホストする必要があります。
次の2つの選択肢があります。
独自のUIを作成し「umi」クライアントラッパーと「mpl-candy-machine」SDKを使用する。
コミュニティが事前に構築したUIを利用し、あなたのCandy Machineの詳細情報を提供するだけで済ませる。
UIを開発するためのリソース
「nextJS/React」を推奨
Metaplex Umi(https://developers.metaplex.com/umi)
Metaplex Candy Machine SDK(https://developers.metaplex.com/candy-machine)
さらに詳しく知るには「Sugar CLI Docs」を読むことをおすすめします。