
Solana Dev 101 - SolanaでNFTをミントする方法
GM!このブログでは、Solanaにおける非代替性トークン(NFT)の世界を掘り下げます。
この記事を最後まで読むと、一連のプロセスを明確に理解し、JavaScriptを使用してSolana上で独自のNFTを作成できるようになります。
ご質問がある場合は、HeliusのDiscordに参加するか、TwitterでHeliusをタグ付けしてお気軽にお問い合わせください。
前提条件:
始める前に、Node.jsとnpmがマシンにインストールされていることを確認してください。こちらからダウンロードできます。
ステップ1:依存関係をインストールする
まず、必要な依存関係をインストールします。
ターミナルで次のコマンドを実行し、Solana JavaScript APIとMetaplex JavaScriptライブラリをインストールしてください。
npm install @solana/web3.js @metaplex-foundation/jsステップ2:依存関係をインポートする
次に、mintNFTs.jsという新しいファイルを作成し、必要な依存関係をインポートします。
const { Keypair, Connection } = require('@solana/web3.js');
const { Metaplex,keypairIdentity, bundlrStorage,toMetaplexFile } = require('@metaplex-foundation/js');
const {fs} = require('fs');ステップ3:ウォレットを作成し、接続を初期化して、Metaplexインスタンスを作成する
NFTのミントと保管に使用するSolanaウォレットを作成する必要があります。これにはSolana CLIツールを使用します。ターミナルで次のコマンドを実行すると、新しいウォレットを取得できます。このウォレットは、シードフレーズを含むJSONファイルとして保存されます。
solana-keygen newこれをPhantomやBackpackなどのブラウザウォレット拡張機能にインポートできます。
秘密鍵は誰にも共有しないでください。
次に、Solanaクラスターへの接続を初期化します。レート制限が非常に厳しく、アーカイブ機能も備えていない公開RPCより高速なため、Heliusを使用してメインネットクラスターに接続します(https://api.mainnet-beta.solana.com)。標準のRPCより高速で高品質なRPCサービスを利用したい場合は、こちらから無料のHeliusアカウントを作成できます。
続いて、先ほど作成したウォレットのシードフレーズからウォレットのキーペアを作成します。
async function createMetadata(imageName) {
// Create an image buffer
const metadataURI = await metaplex.nfts().uploadMetadata({
name: "Helius NFT",
description: "Helius NFT created in the SolanaDev 101 course",
// Image: await uploadIMG(imageName),
image: await toMetaplexFile(fs.readFileSync(imageName), "heliusLogo"),
attributes: [
{ trait_type: "Test", value: "Yes" },
{ trait_type: "Logo", value: "Helius" },
],
});
return metadataURI;
}上記のコードでは、Metaplexプロトコルを操作するためのツールキットであるMetaplex SDKのインスタンスを作成しています。次に、Solanaクラスターへの接続、ユーザーのウォレット、ストレージプロバイダーを使用してインスタンスを構成します。.use(bundlrStorage())は、メタデータとNFTのアセットを保存するストレージプロバイダーとしてBundlrを使用するようにインスタンスを構成します。
ステップ4:NFTメタデータを作成してアップロードする
このステップでは、createMetadata()関数を使用して、NFTのメタデータと画像を作成・アップロードします。
NFTの中核となる要素の1つが画像です。この例では、Heliusのロゴ画像を使用します。使用する画像を、mintNFT.jsファイルを作成したディレクトリに追加してください。
この関数は、まずfsを使用してimageNameで指定された画像ファイルを読み込み、toMetaplexFile()でMetaplexに適した形式に変換します。その後、metaplex.nfts().uploadMetadata()関数を使用してメタデータをアップロードします。
メタデータには、名前、説明、用意した画像、NFTの詳細情報を示す一連の属性など、NFTに関する重要な情報が含まれます。NFTにはさらに多くのデータを含めることができます。Metaplex NFT標準の詳細はこちらをご覧ください。
メタデータのアップロードに成功すると、関数はデータのオンライン上の場所を指すメタデータURIを返します。
async function createMetadata(imageName) {
// Create an image buffer
const metadataURI = await metaplex.nfts().uploadMetadata({
name: "Helius NFT",
description: "Helius NFT created in the SolanaDev 101 course",
// Image: await uploadIMG(imageName),
image: await toMetaplexFile(fs.readFileSync(imageName), "heliusLogo"),
attributes: [
{ trait_type: "Test", value: "Yes" },
{ trait_type: "Logo", value: "Helius" },
],
});
return metadataURI;
}ステップ5:NFTをミントする
次に、createNFT()という関数を作成してNFTをミントします。最初に、"./heliusLogo.png"を引数(画像ファイルへのパス)としてcreateMetadata()関数を呼び出します。
続いて、metaplex.nfts().create()を呼び出してNFTをミントします。この関数は、メタデータURI、NFTの名前、販売者手数料(ここでは5%に設定)、クリエイターの配列など、複数のプロパティを持つオブジェクトを受け取ります。各クリエイターオブジェクトには、アドレスと、そのウォレットが受け取るロイヤリティ額の配分率が含まれます。
NFTの作成に成功すると、関数はNFTのミントアドレスをログに出力します。このミントアドレスは、ブロックチェーン上でNFTを識別する一意の識別子です。このアドレスをコピーし、OrbなどのブロックエクスプローラーでNFTを確認できます。
async function createNFT() {
// Create and upload the metadata
const metadata = await createMetadata("./heliusLogo.png");
// Create the NFT
const nft = await metaplex.nfts().create({
uri: metadata.uri,
name: "Helius NFT",
seller_fee_basis_points: 500, // 5%
creators: [{ address: wallet.publicKey, verified: true, share: 100 }],
});
// Log the NFT mint address
console.log("NFT:", nft.mintAddress.toBase58());
}
createNFT();node mintNFT.jsでこのコードを実行すると、こちらで確認できるNFTが作成されます。
まとめ
おめでとうございます!これでNFTを作成できました。このチュートリアルが、SolanaでNFTを扱い始める際の参考になれば幸いです。NFTはSolanaエコシステムの基盤となる要素です。その構造と作成方法を理解することは、非常に有用なスキルです。
完全なコードはこちらで確認できます。コーディングを楽しんでください!
参考資料:
関連記事
Heliusを購読
Solana開発の最新情報や新しい記事の公開通知を受け取れます


