Candy Machineを使用してSolanaで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

以下のURLからインストール実行ファイルをダウンロードしてSugarをインストールできます:

https://github.com/metaplex-foundation/winstaller/releases/latest/download/winstaller.exe

ダブルクリックしてバイナリを実行してみてください。信頼されていないバイナリに関する警告ポップアップが表示された場合は、「詳細情報」をクリックして「とにかく実行」をクリックしてください。

アセットの準備

NFTには2つの基本的な部分があります:imagemetadataです。

imageはウォレットやマーケットで展示・表示されるものであり、metadataにはnameimageを見つけるリンク、NFTのattributesなど、ブロックチェーン上のそのNFTに関するすべての関連情報が含まれています。

Assetsフォルダー

Sugarからコマンドを実行する際、Sugarはコマンドを起動したディレクトリでassetsフォルダーを見つけることを期待します。

あなたの画像とメタデータファイルの両方がassetsフォルダーに保存されます。

ファイル命名

画像とメタデータJSONファイルは、0から始まる増分インデックス命名規則に従うことが期待されます。

インデックスが不足している場合や、imagemetadataフォルダーに同じ数のファイルが含まれていない場合、フォルダー検証は失敗します。

assets/
├─ 0.png
├─ 0.json
├─ 1.png
├─ 1.json
├─ 2.png
├─ 2.json
├─ ...

メタデータJSON

FieldTypeDescription
namestringName of the asset.
descriptionstringDescription of the asset.
imagestringURI pointing to the asset's logo.
animation_urlstringURI pointing to the asset's animation.
external_urlstringURI pointing to an external URL defining the asset — e.g. the game's main site.
attributesarrayArray of attributes defining the characteristics of the asset.
  • trait_type (string): The type of attribute.
  • value (string): The value for that attribute.
propertiesobjectAdditional properties that define the asset.
  • files (array): Additional files to include with the asset.
    • uri (string): The file's URI.
    • type (string): The file's type. E.g. image/png, video/mp4, etc.
    • cdn (boolean, optional): Whether the file is served from a CDN.
  • category (string): A media category for the asset. E.g. video, image, etc.
{
"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コピーをダウンロードできます

git clone https://github.com/metaplex-foundation/example-candy-machine-assets.git

画像とメタデータジェネレーター

レイヤーからアートワーク画像とメタデータを生成する必要がある場合、画像レイヤーとプロジェクトに関するいくつかの基本情報をジェネレーターに提供すると、与えられたパラメーターに基づいてx個のアセット画像とJSONメタデータの組み合わせを生成する自動化されたスクリプトやウェブサイトがいくつかあります。

名前タイプ難易度要件無料
nftchefscript⭐⭐⭐⭐JS knowledge
hashlipsscript⭐⭐⭐⭐JS knowledge
Nft Art Generatorweb UI⭐⭐
buenoweb UIunknown

コレクション詳細

コレクションの作成には、NFTアセットと同様の詳細が必要です:imageファイルとmetadatajsonファイルです。これらは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ローンチ

assetsフォルダーが整っている状態で、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)

作成者ウォレットはロイヤルティを分配するために使用されます。選択した場合、各ウォレットのaddressshareの量を入力するよう求められます。

Which extra features do you want to use? (use [SPACEBAR] to select options you want and hit [ENTER] when done)

このガイドでは、hidden settingsを選択せずにそのままenterを押して進めます。

What upload method do you want to use?

このガイドではBundlrを選択します。

Do you want your NFTs to remain mutable? We HIGHLY recommend you choose yes.

このオプションで「yes(y)」を選択して、将来必要に応じてNFTを編集できるようにします。

Sugarは以下のプロセスを開始するはずです:

  • コレクションNFTの作成とアップロード
  • Irys(旧Bundlr)を使用してアセットをArweaveにアップロード
  • Candy Machineの作成

成功した場合、以下のようなメッセージが表示されますが、リンク内には独自のCandy Machineアドレスが含まれます:

https://www.solaneyes.com/address/Beag81WvAPUCeFpJ2qFnvd2f1CFCpQBf3abTJXA1fH9o?cluster=devnet

おめでとうございます!Solana上でCandy Machineを作成しました。 上記のリンクをクリックすると、チェーン上のCandy Machine詳細を表示できます。

GuardとGroupsでCandy Machineを更新

現在、あなたのCandy MachineにはGuardが添付されていません。デフォルトでは、Candy GuardがCandy Machineに添付されていない場合、ミント権限(あなた)のみがCandy Machineからミントできます。

これを解決するために、Candy MachineにGuardを添付する必要があります。これにより、一連のルールに従って公開でCandy Machineからミントできるようになります。例えば、ユーザーに1 SOLを課金しながら公開でCandy Machineからミントできるようにしたい場合があります。これにはSol Payment Guardを使用できます。

Guard(SOL Payment)の追加

Candy MachineにSol Payment Guardを追加するには、ターミナルでsugar launchを起動したフォルダーのルートにあるSugarが生成したconfig.jsonファイルを開く必要があります。

設定ファイルは以下のようになります:

{
"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,
"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 Machineの詳細を表示するには、以下のコマンドを実行できます:

sugar guard show

これにより、すべての挿入されたアイテムを除いたCandy MachineとGuardの詳細がすべてリストされます。

次のステップ

機能するCandy Machineができたので、人々がCandy Machineからミントできるように、Candy MachineをWeb UIでホストする必要があります。

独自のUIを生成してumiクライアントラッパーとmpl-candy-machine SDKを使用するか、構築済みのコミュニティUIを使用してCandy Machineの詳細を単純に提供することができます。

UI開発リソース

さらなる読み物