
Solana 开发入门 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 实例
我们需要创建一个 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) {
// 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,指向数据的在线位置。
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 开发的最新动态,并在我们发布新内容时收到更新


