新着:HeliusがLight Protocolを買収
Solana NFTをミントする方法
ブログ/開発

Solana Dev 101 - SolanaでNFTをミントする方法

Developer ExperienceエンジニアXのOwen VenterLinkedInのOwen Venter
読了時間:4分

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開発の最新情報や新しい記事の公開通知を受け取れます

拡大画像