这篇文章介绍了如何使用Candy Machine v2(CMv2)在Solana上设置NFT铸造,并详细解释了CMv2的新特性如不可预测的铸造索引、白名单、验证码集成和隐藏投放。文章还提供了配置CMv2的逐步指南,包括克隆Metaplex仓库、安装依赖、设置Solana CLI和创建Candy Machine的过程。
Candy Machine 2 已被弃用。
请参阅我们的使用 Metaplex Sugar 构建 Candy Machine 的指南。
你好,读者们,在本指南中,我们将介绍如何使用 Candy Machine v2 在 Solana 上设置 NFT 生成。Candy Machine v2 与 v1 有一些相似之处,但也有很多不同之处。驱动 v2 的主要因素是遏制 NFT 社区所遭受的机器人攻击。对于机器人而言,轻松抢购便宜项目的所有 NFT,导致许多新来者的体验不尽如人意。
在本指南中,我们将始终称 Candy Machine v2 为 CMv2。CMv2 包含几个令人兴奋的变化:
不可预测的铸造索引 — 在 CMv1 中,铸造按照预定顺序进行,这为想要特定 NFT 的人提供了游戏的机会。
白名单 — 现在你可以使用此新版本进行白名单设置。你可以分发任何 SPL 代币作为白名单。可调节的选项包括:提前铸造、关闭铸造或为拥有指定代币的用户提供折扣铸造。
验证码集成 — 此选项可防止机器人干扰你的铸造。
隐藏掉落 — 你现在可以使所有铸造共享单个哈希,这意味着你可以在打折售罄后填充所有 NFT 的元数据。
前提条件:
要按照本指南中的步骤操作,请确保你已设置以下技术和工具的最新版本:
现在,让我们开始配置。我们需要克隆 Metaplex 仓库,并安装所有依赖项。
注意: 所有命令均在 Unix 机器上运行。
让我们打开一个终端窗口,并导航到你想要设置项目的文件夹。接下来,创建一个新目录 solana-nft-project,并通过以下命令进入该目录:
mkdir solana-nft-project
cd solana-nft-project
简化调试的日志
你现在可以访问 RPC 端点的日志,这有助于你更有效地排除问题。如果你在 RPC 调用中遇到问题,只需查看 QuickNode 控制面板中的日志,以快速识别和解决问题。有关日志历史限制的更多信息,请访问我们的定价页面。
现在我们准备通过以下命令克隆 Metaplex 仓库:
git clone https://github.com/metaplex-foundation/deprecated-clis
然后要从 solana-nft-project 目录安装依赖项,请运行以下命令:
yarn install --cwd deprecated-clis
这应该安装一切正常。为了测试,我们可以通过运行以下命令来检查 Metaplex 的版本:
ts-node deprecated-clis/src/candy-machine-v2-cli.ts --version
你的输出应为:
0.0.2
现在,我们准备开始设置 Solana CLI 以进行开发网络测试。我们首先需要为特定的开发网络测试创建一个新钱包,使用以下命令:
solana-keygen new --outfile ./.config/solana/devnet-wallet.json
我们可以跳过密码(按 Enter),因为我们只会在开发网络上使用这个钱包,所以资金并不重要。我们可以确认我们刚生成的钱包是 Solana CLI 将使用的钱包,通过运行:
solana config set --keypair ./.config/solana/devnet-wallet.json
在继续之前,我们需要确保我们的 Solana CLI 已连接到一个节点。我们将通过 QuickNode 来完成这一点。
要注册一个免费的 QuickNode 账户,请导航到 Quicknode.com/signup。在本教程中,我们希望在 Solana 开发网络下启动我们的节点。
在设置好 Solana 开发网络的终端后,你现在可以运行此命令,用你复制的 HTTP URL 替换 YOUR_QUICKNODE_URL
:
solana config set --url YOUR_QUICKNODE_URL
现在要为你的钱包充资,你可以运行命令:
solana airdrop 1
如果命令成功,你应该能够在终端中运行 solana balance
并看到 1 SOL 在那儿。
随着我们的 Solana CLI 配置完成,我们现在需要为我们的 CMv2 创建配置。从 v1 到 v2 的变化之一是我们如何配置 candy machine。它读取一个 JSON 文件,你可以根据自己的需要调整。你可以在 Metaplex 文档中找到所有选项的完整列表,见这里。
我们将使用他们推荐的最小设置配置。要跟着操作,请确保你在 solana-nft-project 目录中,并创建一个 config.json 文件并将其放置在 ./dev/,使用以下命令:
mkdir dev
touch ./dev/config.json
接下来,使用你选择的文本编辑器打开该文件,并粘贴以下内容:
{
"price": 1.0,
"number": 10,
"gatekeeper": null,
"solTreasuryAccount": "<YOUR WALLET ADDRESS>",
"splTokenAccount": null,
"splToken": null,
"goLiveDate": "25 Dec 2021 00:00:00 GMT",
"endSettings": null,
"whitelistMintSettings": null,
"hiddenSettings": null,
"storage": "arweave-sol",
"ipfsInfuraProjectId": null,
"ipfsInfuraSecret": null,
"awsS3Bucket": null,
"noRetainAuthority": false,
"noMutable": false
}
将 <YOUR WALLET ADDRESS>
替换为你之前设置的密钥对地址。
注意:你可以在终端中运行 solana address 来获取你的地址。
完成这些步骤后,你应该准备好进行铸造了!但是,一个 NFT 项目没有一些 .jpegs 会怎么样呢?我们可以准备这个。
如果你之前使用过 CMv1 或 Metaplex,这个过程会很熟悉。我们需要创建一个 .PNG 文件和 .JSON 文件的一对一映射。文件应该按编号命名,因此 0.png 对应 0.json。编号应从 0 开始并顺序增加,永远不要跳过数字。
Metaplex 有一个示例资产集,我们可以下载并处理以保持一致。你可以编辑 json 以包含你想要的任意值,只要它符合URI json 架构。
注意: CM2 使用的是较旧的标准,要求每个 .json 文件中都有创作者份额。
下载示例集并将其存储在可以轻松从命令行引用的位置。我们将其放在 ./dev 目录下。这样,我们就可以通过路径 ./dev/assets 引用所有的 png 和 json 文件。
我们需要做的最后一件事是更新 json 文件中的地址值。该字段确定版税的分配位置。默认情况下,json 文件中使用的地址是 "6j4nNrozTJkk1zatiXHezSLZArnRUq3WkGKHACThXGpZ"。我们将更新所有这些地址为我们之前在 Solana CLI 中设置的地址。
为此,请在终端中运行以下 bash 脚本:
for json_file in ./dev/assets/*.json;
do
address=YOUR_SOLANA_ADDRESS
sed -i '' "s/6j4nNrozTJkk1zatiXHezSLZArnRUq3WkGKHACThXGpZ/$address/g" $json_file
done
这段代码将循环遍历我们资产目录中所有以 .json 结尾的文件。然后,它将你的 Solana 地址存储在一个变量中,address=YOUR_SOLANA_ADDRESS。最后,它使用 sed 命令行工具执行“查找和替换”操作。它遍历每个文件并用我们从 CLI 获取的地址替换 "6j4nNrozTJkk1zatiXHezSLZArnRUq3WkGKHACThXGpZ"。
注意: 如果你在 Mac 设备上,开头的空引号对是必需的。如果你在 Linux 机器上使用,可以省略 sed 命令中的初始空引号。
在加载所有资产并配置程序之后,我们现在可以创建一个 Candy Machine 并将其上传到 Solana 开发网络。
为此,我们将运行以下命令:
ts-node deprecated-clis/src/candy-machine-v2-cli.ts upload \
-e devnet \
-k ./.config/solana/devnet-wallet.json \
-cp ./dev/config.json \
-c example \
--rpc-url <YOUR_QUICKNODE_URL> \
./dev/assets
注意: 你可能会看到 signatureUnsubscribe error: Invalid subscription id 错误。这不会影响你的上传,你不应该在看到这些错误时停止进程。如果由于某种原因你的上传在完成之前停止,你可以重复运行此命令,直到上传成功。
从该输出中保存 CMv2 的公钥。如果你忘记此步骤,你随时可以在运行命令的地方找到它,路径为 /.cache/devnet-example.json。
运行该命令后,你应该会看到资产处理的过程。在完成后,我们需要验证一切是否成功上传。我们可以使用 verify_upload 命令来完成这个:
ts-node deprecated-clis/src/candy-machine-v2-cli.ts verify_upload \
-e devnet \
-k ./.config/solana/devnet-wallet.json \
-c example
你的输出应与下面的图片相似,但应替换为你的特定地址:
一旦成功运行,我们就可以开始启动前端,以便将我们的页面部署到互联网,并给予他人铸造 NFT 的能力。
为了尽可能简单的设置,我们将使用 Metaplex 提供的前端。你将前往克隆的 Metaplex 存储库,在我们的例子中是 ./metaplex/js/packages/candy-machine-ui。在你选择的代码编辑器中打开此文件夹。
将文件 .env.example 重命名为 .env。更改文件名后,你可以将其中的值更改为以下内容:
REACT_APP_CANDY_MACHINE_ID=<YOUR_CANDY_MACHINE_PUBKEY>
REACT_APP_SOLANA_NETWORK=devnet
REACT_APP_SOLANA_RPC_HOST=<YOUR_QUICKNODE_DEVNET_ENDPOINT>
将所有这些信息填入后,你现在可以保存该文件。从 candy-machine-ui 文件夹中,运行命令:
yarn install
yarn start
这将在 localhost:3000 上打开一个浏览器,你可以连接你的钱包并具有铸造 NFT 的能力。在继续之前,请确认你的 Phantom Wallet 设置为 devnet 而不是 mainnet。
你可以访问 https://solfaucet.com/ ,为钱包空投 SOL。确保在“Solana 账户地址”字段中使用你的 Phantom 钱包地址。
如果成功,你应会看到如下网站:
如果你看到“铸造失败”的错误,可能是你余额不足。添加资金后请再试。根据上面的截图,你可以看到我们已经铸造了原始的 10 个中的 2 个。在购买后,你可以在钱包中查看 NFT。Phantom 可能会花一些时间来渲染你钱包中的 NFT。我们的 NFT 看起来是这样的:
使用 Candy Machine v2 铸造的示例 NFT
恭喜你成功生成和铸造了自己的 CMv2 NFT 项目!我们已经涵盖了 Candy Machine 的内容以及如何配置它,并部署了我们自己的 NFT 项目。
订阅我们的通讯以获取更多文章和指南。如果你有任何反馈,欢迎通过Twitter与我们联系。你总是可以在我们的Discord社区服务器上与我们交流,这里聚集了一些你见过的最酷的开发者 :)
- 原文链接: quicknode.com/guides/sol...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!