如何在 Solana 上铸造 NFT

GM!在本博客中,我们将深入探讨 Solana 上的不可替代代币 (NFT) 的世界。读完本文后,您应该清楚地了解该过程,并能够使用 JavaScript 在 Solana 上创建您自己的 NFT

如何在 Solana 上铸造 NFT
如何在 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实例

我们需要创建一个 Solana 钱包,用于铸造和持有 NFT。为了实现这一点,我们将使用 Solana CLI 工具,您可以在终端中运行以下命令来获取新钱包。该钱包将保存为包含种子短语的 JSON 文件。

solana-keygen new

您可以将其导入浏览器钱包扩展程序,例如 Phantom 或 Backpack。

⚠️警告⚠️:确保不要与任何人分享您的私钥。

现在,我们初始化与 Solana 集群的连接。我们将使用 Helius 连接到主网集群,因为这比公共 RPC 速度更快,公共 RPC 的速率受到高度限制,并且不具备存档功能。 (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 SDK 的一个实例,这是一个用于与 Metaplex 协议交互的工具包。然后,我们使用与 Solana 集群、用户钱包和存储提供商的连接来配置实例。.use(bundlrStorage())将实例配置为使用 Bundlr 作为存储提供程序,这是 NFT 的元数据和资产的存储位置。

第 4 步:创建并上传 NFT 元数据

在这一步中,我们通过createMetadata()函数深入研究 NFT 元数据和图像的创建和上传。

NFT 的核心部分之一是图像,在本例中我们将使用 Helius 徽标的图像!确保将要使用的图像添加到创建 mintNFT.js 文件的目录中。

赫利乌斯标志

该函数首先使用fs读取imageName指定的图像文件,然后使用toMetaplexFile()将其转换为适合 Metaplex 的格式。然后,我们使用metaplex.nfts().uploadMetadata()函数上传元数据。元数据包含有关我们的 NFT 的重要详细信息,包括其名称、描述、我们准备的图像以及提供有关 NFT 的其他详细信息的一组属性。您可以在 NFT 中包含更多数据,您可以在此处阅读有关 Metaplex NFT 标准的更多信息。

元数据成功上传后,该函数将返回元数据的 URI,该 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 的唯一标识符。您可以复制该地址并在XRAY等区块浏览器上查找 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 生态系统的一个基本方面,因此了解它们的结构以及如何创建它们是一项很棒的技能。

💡
原文链接:Solana Dev 101 - How to Mint an NFT on Solana
本文由SlerfTools翻译,转载请注明出处。

SlerfTools专为Solana设计的工具箱,致力于简化区块链操作,提供无编程全可视化界面,使发币管理流动性无代码创建Dapp等复杂过程变得安全简单。