閱讀時間 8 分鐘
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 包含幾項令人興奮的變更:
- 難以預測的鑄造指數— 在 CMv1 中,鑄造是依照預先設定的順序進行的,這使得使用者有機會利用系統漏洞,以獲得自己想要的特定 NFT。
- 白名單— 透過此新版本,您現在可以設定白名單功能。您可以發行任何 SPL 代幣作為白名單。可調整的設定選項包括:針對持有指定代幣的用戶開放提前鑄造、限時鑄造,或折扣鑄造。
- 驗證碼整合— 此選項可防止機器人干擾您的鑄幣流程。
- 隱藏發行— 現在您可以讓所有薄荷幣共用單一雜湊值,這意味著在發行售罄後,您即可填入該 NFT 的所有元資料。
先決條件:
若要按照本指南中的步驟操作,請確保已安裝以下技術與工具的最新版本:
- Node.js
- TS-Node
- 紗線
- Solana 命令列介面 (CLI)
- 文字編輯器
- Phantom 錢包設定
- GitHub CLI
設定 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目錄中執行以下指令以安裝依賴項:
毛線 安裝 --cwd 已廢棄的命令列介面
至此,所有內容都應該已正確安裝完畢。要進行測試,我們可以執行以下指令來檢查 Metaplex 的版本:
ts-node deprecated-clis/src/candy-machine-v2-cli.ts --version
您的輸出應為:
0.0.2
設定新錢包
現在,我們準備開始設定 Solana CLI 以進行開發網(devnet)測試。首先,我們需要使用以下指令建立一個專門用於開發網測試的新錢包:
solana-keygen new --outfile ./.config/solana/devnet-wallet.json
由於我們只會在開發網(devnet)上使用這個錢包,因此資金並不重要,可以跳過設定密碼(按下Enter 鍵)。我們可以執行以下指令,確認剛才建立的錢包就是 Solana CLI 將使用的錢包:
Solana 設定 設定 --keypair ./.config/solana/devnet-wallet.json
在繼續之前,我們需要確認 Solana CLI 已連線至某個節點。我們將透過 Quicknode 來完成這項操作。
使用 Quicknode 設定 Solana 節點
若要註冊免費的 Quicknode 帳戶,請前往Quicknode.com/signup。在本教學中,我們將在 Solana Devnet 環境下啟動我們的節點。

在 Solana Devnet 上設定好您的終端點後,現在您可以執行此指令,並將 YOUR_QUICKNODE_URL 使用您已複製的 HTTP URL:
Solana 設定 設定 --url 您的 QuickNode URL
現在,若要為您的錢包充值,您可以執行以下指令:
Solana 空投 1
如果指令執行成功,您應該能夠執行 Solana 餘額 在您的終端機中查看,確認那裡是否顯示 1 SOL。
設定 Candy Machine V2
在完成 Solana CLI 的設定後,我們現在需要為 CMv2 建立設定檔。從 v1 升級至 v2 的變更之一,在於配置「糖果機」的方式。它會讀取一個 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 了!不過,如果沒有一些 .jpeg 檔案,哪算得上是一個 NFT 專案呢?接下來我們就來準備這些檔案吧。
準備資產
如果您之前曾使用過 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 位於 ./dev/assets/*.json;
執行
地址=您的 Solana 地址
sed -i '' "s/6j4nNrozTJkk1zatiXHezSLZArnRUq3WkGKHACThXGpZ/$address/g" $json_file
完成
這段程式碼會循環處理 assets 目錄中所有以.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」錯誤:訂閱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 範例
您的輸出結果應與下圖類似,但其中應填入您的具體地址,而非我們的地址:

一旦執行成功,我們就可以著手啟動前端,以便將我們的網頁部署到網路上,並讓其他人能夠鑄造我們的 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 啟動
這將開啟瀏覽器並連至localhost:3000,您可以在該處連接您的錢包並鑄造 NFT。在繼續之前,請確認您的 Phantom 錢包已設定為開發網(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社群伺服器上與我們聊天,那裡聚集了您這輩子見過最酷的開發者們 :)