Solana 开发基础 101 - 如何在 Solana 上铸造 NFT

  • Helius
  • 发布于 2023-06-21 14:15
  • 阅读 26

本文介绍了如何在Solana区块链上使用JavaScript创建和铸造NFT。内容涵盖了必要的环境设置、依赖项安装、钱包创建、元数据上传及NFT铸造的详细步骤,并提供了相关代码示例和实际操作的指导。

如何在Solana上铸造NFT

Solana开发101 - 如何在Solana上铸造NFT

Owen Venter 4分钟阅读 2023年6月19日

GM!在这篇博客中,我们将深入研究Solana上的非同质化代币(NFTs)。

在这篇文章结束时,你应该清楚了解该过程,并能够使用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快,而且没有存档功能。https://api.mainnet-beta.solana.com。如果你还希望使用比标准RPC更快和更优质的RPC服务,你可以在这里创建一个免费的Helius账户。

然后,我们将根据我们刚刚创建的钱包种子短语创建一个钱包密钥对。

async function createMetadata(imageName) {

  // 创建一个图像缓冲区
  const metadataURI = await metaplex.nfts().uploadMetadata({
    name: "Helius NFT",
    description: "在SolanaDev 101课程中创建的Helius NFT",

    // 图像: await uploadIMG(imageName),
    image: await toMetaplexFile(fs.readFileSync(imageName), "heliusLogo"),
    attributes: [
      { trait_type: "测试", value: "是" },
      { trait_type: "标志", value: "Helius" },
    ],
  });
  return metadataURI;
}

在上面的代码中,我们创建了Metaplex SDK的实例,这是与Metaplex协议交互的工具包。然后,我们使用与Solana集群的连接、用户的钱包以及存储提供商来配置该实例。.use(bundlrStorage())配置实例使用Bundlr作为存储提供商,即NFT的元数据和资产将存储在此处。

步骤4:创建和上传NFT元数据

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

NFT的一个核心部分是图像,在此示例中我们将使用Helius Logo的这张图像!确保将要使用的图像添加到创建mintNFT.js文件的目录中。

Helius Logo

Helius Logo

此函数首先使用fs读取由imageName指定的图像文件,然后使用toMetaplexFile()将其转换为适合Metaplex的格式。我们随后使用metaplex.nfts().uploadMetadata()函数上传元数据。

元数据包含关于我们的NFT的重要信息,包括其名称、描述、我们准备的图像以及一组提供NFT更多细节的属性。你可以在NFT中包含更多数据,你可以在这里了解更多有关Metaplex NFT标准的信息。

在元数据成功上传后,该函数将返回指向数据在线位置的元数据URI。

async function createMetadata(imageName) {

  // 创建一个图像缓冲区
  const metadataURI = await metaplex.nfts().uploadMetadata({
    name: "Helius NFT",
    description: "在SolanaDev 101课程中创建的Helius NFT",

    // 图像: await uploadIMG(imageName),
    image: await toMetaplexFile(fs.readFileSync(imageName), "heliusLogo"),
    attributes: [
      { trait_type: "测试", value: "是" },
      { trait_type: "标志", value: "Helius" },
    ],
  });
  return metadataURI;
}

步骤5:铸造NFT

现在,我们继续通过创建名为createNFT()的函数来铸造NFT。最初,我们调用createMetadata()函数,以"./heliusLogo.png"作为参数(图像文件的路径)。

接下来,我们通过调用metaplex.nfts().create()来铸造NFT。此函数接受一个包含多个属性的对象,例如元数据URI、NFT名称、卖家费用(设定为5%)和创建者数组,其中每个创建者对象包括地址和该钱包应获得的版权分成百分比。

成功创建NFT后,该函数将记录NFT的铸造地址。该铸造地址是区块链上NFT的唯一标识符。你可以复制此地址并在区块浏览器如XRAY上查找NFT。

async function createNFT() {
  // 创建并上传元数据
  const metadata = await createMetadata("./heliusLogo.png");
  // 创建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 }],
  });

  // 记录NFT铸造地址
  console.log("NFT:", nft.mintAddress.toBase58());
}
createNFT();

运行此代码,使用node mintNFT.js创建的NFT可以在这里查看。

结论

恭喜你!你刚刚创建了一个NFT。我希望这个教程可以帮助你入门Solana上的NFT。NFT是Solana生态系统的一个基本方面,因此了解它们的结构和如何创建它们是一项很好的技能。

你可以在这里找到完整的代码。祝你编程愉快!

参考资料:

  • 原文链接: helius.dev/blog/how-to-m...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Helius
Helius
https://www.helius.dev/