使用 Metaplex Candy Machine 在 Solana 上创建 NFT。
指南概述
在尝试使用现有的指南在 Solana 上创建自己的NFT时,我感觉就像走过雷区一样,于是我决定自己编写一个对初学者非常友好的指南。
我不会深入探讨所有细节是如何运作的,而是帮助对 Rust 一无所知的人了解如何借助 Metaplex 糖果机和 Web 入门套件在 Solana 上创建他们自己的NFT 。
注:我使用的是Ubuntu 21.10 - Wayland版本。具体步骤可能因您使用的操作系统而异。
Metaplex糖果机是什么?
Metaplex是一个与 candy-machine 程序交互的命令行工具。在本指南中,我们将使用它来:
- 将您的图像及其元数据上传到arweave,然后在 Solana 区块链上注册它们。
- 请确认您的糖果机状态是否有效且完整。
- 铸造单个代币。
Candy Machine这是一个公平铸造 NFT 的系统。
• 所有用户的铸造过程同时开始和结束。
• 如果没有NFT可供出售,系统将不会接受您的资金。
先决条件
- NodeJS (版本 14.17.6)
- SolanaCLI
- Metaplex CLI
- 幻影钱包
如果你的系统上安装了不同版本的 Node,你可以使用nvm,它允许你通过命令行快速安装和使用不同版本的 Node。
入门
安装 SolanaCLI
Solana 已经提供了非常完善的命令行安装和使用指南。
•安装 Solana 命令行工具
使用 Devnet
Devnet 对于开发者来说非常有用,可以用来测试他们的程序和应用程序。
您可以使用以下命令将 Solana 的默认 URL 设置为 devnet:$ solana config set --url https://api.devnet.solana.com
现在,让我们创建一个 devnet 钱包:$ solana-keygen new --outfile ~/.config/solana/devnet.json
请记住将您的助记词保存在安全的地方。
我强烈建议将 devnet 设置为默认密钥对。$ solana config set --keypair ~/.config/solana/devnet.json
为 Devnet 钱包充值
首先,让我们通过检查配置来确保我们位于 devnet 上。
$ solana config get
//Output:
Config File: /Users/dev/.config/solana/cli/config.yml
RPC URL: https://api.devnet.solana.com
WebSocket URL: wss://api.devnet.solana.com/ (computed)
Keypair Path: /Users/dev/.config/solana/devnet.json
Commitment: confirmed
现在,让我们给这个钱包充值:
首先,我们检查一下我们当前钱包的余额。
$ solana balance
//Output:
0 SOL
然后我们会将相应数量的 SOL 空投到我们的钱包。请记住,空投数量上限为 5 个 SOL。
$ solana airdrop 4
//Output
Requesting airdrop of 4
Signature: Transaction Signature
4 SOL
现在,让我们查看一下余额,确认空投是否成功。
$ solana balance
//Output:
4 SOL //This can vary depending on the balance you initially had.
如果您对以上任何步骤感到困惑,可以运行以下命令查看手册以获得更深入的理解:
$ solana help config
$ solana help balance
$ solana help airdrop
配置幻影钱包
设置好 Phantom 钱包后,我们可以将上面新建的 DevNet 钱包链接到 Phantom。
为此,首先需要打开 Phantom 钱包的设置,点击Change Network并选择“链接到 DevNet”。Devnet
现在,我们需要获取 devnet 钱包的私钥。为此,请打开终端并查看文件cat内容。keypair.json
$ cat .config/solana/devnet.json
//Output:
[12,22,.....]
现在复制你收到的输出结果,打开 Phantom Wallet。点击左上角的导航菜单,Add/Connect Wallet然后点击“创建Import Private Key钱包”,给它起一个合适的名字,并将之前复制的内容粘贴到“私钥”字段中。
你的钱包里应该能看到 4 SOL。
运行糖果机 CLI
请确保您已拥有node并yarn安装相关软件后再继续操作。
也可以ts-node通过运行以下命令进行安装:$ npm install -g ts-node
现在,让我们将 Metaplex 项目克隆到您选择的位置。
$ git clone https://github.com/metaplex-foundation/metaplex.git
$ cd metaplex/js
$ yarn install && yarn bootstrap && yarn build
要运行命令行实用程序,
$ ts-node metaplex/js/packages/cli/src/candy-machine-cli.ts help
Usage: candy-machine-cli [options] [command]
Options:
-V, --version output the version number
-h, --help display help for command
Commands:
upload [options] <directory>
verify [options]
verify_price [options]
create_candy_machine [options]
update_candy_machine [options]
mint_one_token [options]
sign [options]
sign_candy_machine_metadata [options]
help [command] display help for command
整理和上传您的资产
本指南将使用预先制作好的素材,您可以点击此处下载。素材由solana-candy-factory
提供。请 将此文件夹放置assets在合适的位置。
以下是您应该如何组织要上传的NFT文件:
ls assets | sort -n
0.json
0.png
1.json
1.png
2.json
2.png
3.json
3.png
....
您可以注意到这些文件以数字对的形式出现,它们1.png构成了 NFT1.json的两部分。文件 1png是艺术作品,json文件 2 包含元数据。
目录名称assets无关紧要,您可以随意命名。
验证您的资产
这可能感觉很繁琐,但同样重要。请查看
https://docs.metaplex.com/nft-standard上的操作手册。
上传项目资源
现在我们已经有了资金,资产也都整理好并核实过了,我们可以开始做有趣的事情了!
我们将继续使用命令行界面 (CLI) 上传资产。请记住,我们的资产位于:metaplex\js\packages\cli\example-assets
$ ts-node metaplex/js/packages/cli/src/candy-machine-cli.ts upload assets --env devnet --keypair ~/.config/solana/devnet.json
//Output
Processing file: 0
Processing file: 1
Processing file: 2
Processing file: 3
Done
通过上传,它会将文件发送到 Arweave,同时也会将这些文件注册到您的糖果机中。Arweave 和 Solana 都会在运行成功后进行初始化。
验证您的糖果机
您可以使用以下方式确认链上资产的健康状况和状态:
$ ts-node metaplex/js/packages/cli/src/candy-machine-cli.ts verify --env devnet --keypair ~/.config/solana/devnet.json
//Output:
Looking at key 0
Name {redacted-name} 0 with https://arweave.net/{redacted-tx-id} checked out
Looking at key 1
Name {redacted-name} 1 with https://arweave.net/{redacted-tx-id} checked out
Looking at key 2
Name {redacted-name} 2 with https://arweave.net/{redacted-tx-id} checked out
Looking at key 3
Name {redacted-name} 3 with https://arweave.net/{redacted-tx-id} checked out
启动你的糖果机
确认所有资产准备就绪后,我们终于可以启动糖果机了。$ ts-node metaplex/js/packages/cli/src/candy-machine-cli.ts create_candy_machine --env devnet --keypair ~/.config/solana/devnet.json
更新您的糖果机
我们可以修改糖果机的详细信息,包括开始日期和/或价格等。
$ ts-node metaplex/js/packages/cli/src/candy-machine-cli.ts update_candy_machine --env devnet --keypair ~/.config/solana/devnet.json --price 1 --date "29 Oct 2021 00:12:00 GMT"
铸造我们的NFT
要铸造我们的NFT,我们可以mint_one_token这样操作:
$ ts-node metaplex/js/packages/cli/src/candy-machine-cli.ts mint_one_token --env devnet --keypair ~/.config/solana/devnet.json
如果一切顺利,你现在可以打开你的虚拟钱包,打开收藏品页面(它位于底部的 $ 符号旁边),瞧!你新铸造的NFT就在那里!
设置 Web 入门套件
既然我们已经成功将NFT铸造到钱包中,接下来让我们创建一个 Web 应用程序来执行铸造操作!
注意:本项目尚处于早期阶段,可能会出现一些问题,如果遇到问题,请在 GitHub 上提交报告。
该项目的目标是让您能够根据自己的喜好进行配置和定制。
先 fork 这个项目,然后将其克隆到你想要的位置。
链接:https ://github.com/exiled-apes/candy-machine-mint
现在我们需要着手建设这个项目。
cd candy-machine-mint
yarn install
yarn build
事情到这里就有点复杂了。当我们上传NFT时,会在与资源目录相同的目录下创建一个缓存文件。但是,这个.cache文件夹是隐藏的!如果您使用的是 Ubuntu 系统,请使用 `--display- files` 命令ctrl+h显示隐藏文件。
找到该文件夹后,打开它,你会找到devnet-temp一个文件。在你的 IDE 中打开它,你会看到以下内容。
{
"program": {
"uuid": "Ch3xxx",
"config": "Ch3xxx"
},
"items": {
"0": {
"link": "https://arweave.net/xxxx",
"name": "TEST",
"onChain": true
},
"1": {
"link": "https://arweave.net/xxxx",
"name": "TEST",
"onChain": true
},
"2": {
"link": "https://arweave.net/xxxx",
"name": "TEST",
"onChain": true
},
"3": {
"link": "https://arweave.net/xxxx",
"name": "TEST",
"onChain": true
},
"4": {
"link": "https://arweave.net/xxxx",
"name": "TEST",
"onChain": true
},
"5": {
"link": "https://arweave.net/xxxx",
"name": "TEST",
"onChain": true
}
},
"env": "devnet",
"cacheName": "temp",
"authority": "9xJxxxx",
"candyMachineAddress": "3Wmxxxx",
"startDate": 1632615120
}
当我们运行用于铸币的 Web 应用程序时,我们需要所有这些数据。
配置糖果机-薄荷糖
打开 candy-machine-mint 文件夹,你会找到一个名为.env.example
(该文件通常是隐藏的,使用ctrl+h显示隐藏文件)的文件。
将其重命名为.env,然后打开它来编辑以下详细信息:
REACT_APP_CANDY_MACHINE_CONFIG=__PLACEHOLDER__
这是program.config我们.cache/devnet-temp文件中的关键信息。
REACT_APP_CANDY_MACHINE_ID=__PLACEHOLDER__
这是candyMachineAddress我们.cache/devnet-temp文件中的内容。
REACT_APP_TREASURY_ADDRESS=__PLACEHOLDER__
这是 Solana 接收铸币过程中筹集资金的地址。这是authority我们.cache/devnet-temp文件中的信息。
REACT_APP_CANDY_START_DATE=__PLACEHOLDER__
这是startDate我们.cache/devnet-temp文件中的关键信息。
注意:如果您找不到它,请update_candy_machine按上述方法使用,因为您可能漏掉了填写日期。
REACT_APP_SOLANA_NETWORK=devnet
这用于指定要连接的 Solana 网络。选项包括 devnet、testnet 和 mainnet。
REACT_APP_SOLANA_RPC_HOST=https://explorer-api.devnet.solana.com
这将指定您的 Web 应用程序将通过其访问 Solana 网络的 RPC 服务器。
启动 Web 应用程序
打开终端并导航到该candy-machine-mint目录,然后使用以下命令启动 React 应用:yarn start
当您在终端中看到“编译成功”时,打开http://localhost:3000在浏览器中查看。
现在您可以继续连接您的钱包,然后点击铸币按钮。
点击铸造按钮后,您可以在幻影钱包的收藏品页面查看您新铸造的NFT!
本指南的内容就到这里。如果您遇到任何问题,请在下方留言,我会尽力帮助您!
其他资源
- https://hackmd.io/@levicook/HJcDneEWF
- https://docs.metaplex.com/
- Solana Discord
- 关注Anatoly和Raj Gokal,感受正能量。
PS:如果你看到了这里,请点个赞并留言告诉我你的想法!哦,如果能关注一下就更好了:')
文章来源:https://dev.to/devindxdev/creating-an-nft-on-solana-with-metaplex-candy-machine-4agp