本文是一份关于如何在 Solana 上使用已弃用的 Candy Machine V2 铸造 NFT 的操作指南。它详细介绍了 CMv2 的配置、NFT 资产的准备、Candy Machine 的创建以及前端网站的设置步骤。文章明确指出 CMv2 已被 Metaplex Core Candy Machine 取代,但该指南仍可用于历史教育目的。
Candy Machine V2 已弃用
Metaplex Core Candy Machine 已取代原版 Candy Machine,成为在 Solana 上发布 NFT 集合的推荐方式。请参阅 如何使用 Metaplex Core Candy Machine 发布 NFT 集合。本指南仅用于历史教育目的。
各位读者,在本指南中,我们将逐步介绍如何使用 Candy Machine v2 在 Solana 上设置 NFT 铸造。Candy Machine v2 与 v1 有一些相似之处,但也有很多不同。推动 v2 开发的主要原因是为了遏制 NFT 社区所遭受的机器人行为。机器人很容易抢购廉价项目的所有 NFT,这给许多新入行者带来了不尽如人意的体验。
在本指南中,我们将把 Candy Machine v2 称为 CMv2。CMv2 包含一些令人兴奋的更改:
先决条件:
要完成本指南中的步骤,请确保你已设置以下技术的最新版本和工具:
现在,让我们开始配置。我们需要克隆 Metaplex 存储库,并安装所有依赖项。
注意: 所示所有命令均在 Unix 机器上运行。
让我们首先打开一个终端窗口,导航到你希望设置项目的文件夹。接下来,创建一个新目录 solana-nft-project,并使用以下命令切换到该目录:
mkdir solana-nft-project
cd solana-nft-project
现在我们准备好使用以下命令克隆 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
现在,我们准备开始为 Devnet 测试设置 Solana CLI。我们首先需要使用以下命令专门为 Devnet 测试创建一个新钱包:
solana-keygen new --outfile ./.config/solana/devnet-wallet.json
我们可以跳过密码(通过按 Enter),因为我们只会在 Devnet 上使用此钱包,因此资金不重要。我们可以通过运行以下命令来确认我们刚刚生成的钱包是 Solana CLI 将使用的钱包:
solana config set --keypair ./.config/solana/devnet-wallet.json
在继续之前,我们需要确保我们的 Solana CLI 已连接到节点。我们将使用 Quicknode 来完成此操作。
要注册免费的 Quicknode 账户,请访问 Quicknode.com/signup。我们将选择在 Solana Devnet 下启动我们的节点以进行本教程。

设置好 Solana Devnet 上的端点后,你现在可以运行此命令,将 YOUR_QUICKNODE_URL 替换为你复制的 HTTP 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 命令行工具执行“查找和替换”操作。它搜索每个文件并将其中的 "6j4nNrozTJkk1zatiXHezSLZArnRUq3WkGKHACThXGpZ" 替换为我们从 CLI 中获取的地址。
注意: 如果你使用的是 Mac 设备,开头的空引号是必需的。如果你使用的是 Linux 机器,则可以省略 sed 命令中的初始空引号。
所有资产加载完毕且程序配置完成后,我们现在可以创建 Candy Machine 并将其上传到 Solana Devnet。
为此,我们将运行以下命令:
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。我们的看起来像这样:

使用 Candy Machine v2 铸造的示例 NFT
恭喜你成功生成并铸造了自己的 CMv2 NFT 项目!我们已经介绍了什么是 Candy Machine 及其配置方式,并部署了我们自己的 NFT 项目。
订阅我们的 时事通讯 以获取更多文章和指南。如果你有任何反馈,请随时通过 Twitter 联系我们。你也可以随时在我们的 Discord 社区服务器上与我们聊天,那里有一些你将遇到的最酷的开发者 :)
- 原文链接: quicknode.com/guides/sol...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!