本文介绍了如何在Solana区块链上使用JavaScript创建和铸造NFT。内容涵盖了必要的环境设置、依赖项安装、钱包创建、元数据上传及NFT铸造的详细步骤,并提供了相关代码示例和实际操作的指导。
Owen Venter 4分钟阅读 2023年6月19日
GM!在这篇博客中,我们将深入研究Solana上的非同质化代币(NFTs)。
在这篇文章结束时,你应该清楚了解该过程,并能够使用JavaScript在Solana上创建自己的NFT。
如果你有任何问题,请随时加入Helius Discord或在Twitter上标记Helius以获得帮助。
在开始之前,请确保你的计算机上安装了Node.js和npm。你可以在这里下载它们。
首先,我们需要安装必要的依赖项。
在终端中运行以下命令以安装Solana JavaScript API和Metaplex JavaScript库:
npm install @solana/web3.js @metaplex-foundation/js
接下来,我们可以创建一个名为mintNFTs.js的新文件,并开始导入所需的依赖项:
const { Keypair, Connection } = require('@solana/web3.js');
const { Metaplex,keypairIdentity, bundlrStorage,toMetaplexFile } = require('@metaplex-foundation/js');
const {fs} = require('fs');
我们需要创建一个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的元数据和资产将存储在此处。
在这一步中,我们深入探讨通过createMetadata()
函数创建和上传NFT元数据和图像。
NFT的一个核心部分是图像,在此示例中我们将使用Helius Logo的这张图像!确保将要使用的图像添加到创建mintNFT.js文件的目录中。
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;
}
现在,我们继续通过创建名为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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!