---
title: "如何使用 Metaplex 和 Gumdrop 空投 Solana NFTs"
description: "使用 Gumdrop 將 Solana NFTs 空投給收藏者"
---

# 如何使用 Metaplex 和 Gumdrop 空投 Solana NFTs

This tutorial walks you through how to airdrop NFTs on Solana using Gumdrop, one of the [NFT tools created by Metaplex](https://www.alchemy.com/overviews/metaplex)。如果你剛開始接觸在 Solana 上開發 NFT 專案，這篇新手教學就是為你準備的。

預估完成時間：15 分鐘

在本教學中，我們將會：

1. 建立一個 NFT
1. 鑄造一個 NFT
1. 使用 Gumdrop Command Line Interface（CLI）空投 NFT
1. 使用 Vervel 和 Gumdrop 建立可以分享給朋友的連結

如果你目前還不了解這些名詞的意思也不用擔心！我們會一起把每個步驟走過一遍。

## **什麼是 NFT 空投？**

NFT 空投是指將免費的 NFT 轉移到某個錢包地址。NFT 空投是 NFT 專案常用來獎勵收藏者、提升社群參與度，或發放即將鑄造的 NFT 白名單代幣的方式。NFT 空投最常被當作[一種 NFT 行銷手法](https://www.alchemy.com/blog/5-tips-for-nft-success)使用。

以下是一些 NFT 空投的例子：

1. Swim Protocol - 向使用其跨鏈橋的用戶空投 Swimmer NFT
1. Aurory - 向持有 Aurorian NFT 的收藏者空投新的藝術作品與收藏品
1. Degenerate Ape Academy - 向代幣持有者空投鑄造代幣，讓他們參與 Degenerate Trash Panda 的鑄造

透過向持有者贈送免費物品，NFT 專案可以持續為其代幣與社群創造價值。

### **什麼是 gumdrop？**

Gumdrop 是 [Metaplex](https://www.alchemy.com/dapps/metaplex) 推出的 NFT 功能，讓創作者能透過離線 handle 建立樹狀結構，直接將白名單使用者導向一個領取連結，並允許使用者將 NFT 兌換到任意錢包中。Gumdrop 也可以搭配 [Candy Machine](https://www.alchemy.com/overviews/candy-machine-v2) 使用，完成 NFT 空投並分發代幣。

Gumdrop 透過白名單簡化了發放我們的 Non-fungible token 的流程，讓在 Solana 上進行 NFT 空投變得容易。

## **如何使用 gumdrop 空投 Solana NFT**

為了確保你在進行這篇教學時一切就緒，你需要在你的機器上安裝以下工具：

1. [NodeJS](https://nodejs.org/en/)（version 16）
1. [TS-Node](https://www.npmjs.com/package/ts-node)
1. [SolanaCLI](https://docs.solana.com/cli/install-solana-cli-tools)
1. [Yarn](https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable)
1. [Git](https://git-scm.com/)
1. [Metaplex CLI](https://github.com/metaplex-foundation/metaplex.git)
1. [Phantom Wallet](https://phantom.app/)

如果你剛開始接觸 Solana 開發，請先了解[如何安裝 Solana 開發者工具](https://www.alchemy.com/overviews/solana-developer-tools)後再繼續往下進行。

如果你的機器上安裝了不同版本的 Node，可以使用 **NVM**。

如果現在覺得資訊量有點多也不用擔心，我們接下來會逐一示範每個工具的功能。

### **步驟 1. 使用 gumdrop CLI 進行初始化**

Gumdrop CLI 的安裝與設定都可以透過 Gumdrop GitHub [repository](https://github.com/metaplex-foundation/gumdrop) 完成，裡面提供了你所需要的一切。讓我們先把這個 repository clone 到本機。在繼續之前，我們也需要確認已經安裝了 node、yarn 和 ts-node。

你可以透過以下指令安裝 ts-node：

你可以透過以下指令進行驗證：

現在，讓我們在終端機中使用 mkdir 指令建立一個空資料夾。我們將這個資料夾命名為 solana-airdrop。

在該資料夾內執行以下指令，建立一個 [Solana wallet](https://www.alchemy.com/overviews/solana-wallets)：

你在終端機看到的訊息應該妥善保存，因為之後會需要用到 pubkey 和 seed phrase。

以下是這個訊息大致的樣子：

<ImageBlock
  src="https://media.alchemy.com/1703606637-solana-wallet-generation-output.jpg"
  alt="solana-keygen 產生新 Solana 錢包公鑰與助記詞的終端機輸出"
  width={1134}
  height={494}
  caption="Solana 錢包產生輸出結果"
/>

接下來，將 Gumdrop 專案 clone 到 solana-airdrop 資料夾中：

然後我們切換到包含 CLI 的目錄：

接下來，執行：

這個指令會安裝所有必要的相依套件。安裝過程可能需要幾分鐘的時間。

接下來，我們要[連線到 Solana Devnet cluster](https://www.alchemy.com/overviews/solana-devnet)，因為在學習階段我們不想花任何真實的錢。要注意的是，實際應用時我們會需要使用 mainnet。你可以透過以下指令切換到 devnet：

現在，我們需要建立一個新的 key 來持有我們的 NFT。這裡的「Se」代表我們的 pubkey 是以「Se」開頭

<ImageBlock
  src="https://media.alchemy.com/1703606780-solana-keypair-generation-output.png"
  alt="產生 Solana 金鑰對的終端機輸出，公鑰開頭為 Se"
  width={1134}
  height={142}
  caption="Solana 金鑰對產生輸出結果"
/>

讓我們再執行幾個指令來設定我們新的 Solana 地址：

這應該會顯示以下內容：

<ImageBlock
  src="https://media.alchemy.com/1703606953-solana-wallet-address-configuration-output.png"
  alt="設定 Solana CLI 使用新錢包地址後的終端機輸出"
  width={1134}
  height={290}
  caption="Solana 錢包地址設定輸出結果"
/>

### **步驟 2. 為你的 Devnet 錢包儲值**

現在我們需要[取得測試用的 Solana 代幣](https://www.alchemy.com/overviews/solana-faucet)。由於我們在 devnet 環境中，你可以在終端機執行以下指令快速取得一些 sol：

或者，你也可以從[一個 Solana faucet](https://solfaucet.com/) 取得一些 devnet SOL 代幣。

<ImageBlock
  src="https://media.alchemy.com/1703607074-solana-faucet-website-interface.png"
  alt="Solana faucet 網站介面"
  width={1400}
  height={576}
  caption="Solana faucet 網站介面"
/>

你可以在命令列執行以下腳本，確認你的 devnet 錢包中已經有 Solana：

### **步驟 3：將 Phantom wallet 連接到 Devnet cluster**

現在，我們要將剛剛建立的 devnet 錢包連結到 Phantom。要這麼做，請點選 **settings**，選擇 **Change Network**，然後選擇 **Devnet**。

<ImageBlock
  src="https://media.alchemy.com/1703607239-phantom-wallet-connect.gif"
  alt="Phantom 錢包設定：將網路切換至 Solana Devnet 叢集"
  width={728}
  height={1082}
  caption="將你的 Phantom 錢包連接至 Solana 的 devnet 叢集"
/>

### **步驟 4. 將 Devnet 錢包加入 Phantom**

現在我們必須取得 devnet 錢包的私鑰。開啟你的終端機，使用 **cat** 檢視 keypair.json 檔案的內容以取得該資訊：

要將 devnet 錢包加入 Phantom：

1. 開啟 Phantom
1. 複製你剛剛取得的輸出內容
1. 為它取一個合適的名稱
1. 從左上角的導覽選單中選擇 **Import Private Key**
1. 點選 **Add/Connect Wallet**‍
1. 將 key 貼到 **Private Key** 欄位中

現在，你的 Devnet [Phantom Wallet](https://www.alchemy.com/dapps/phantom) 應該會顯示 5 SOL。

### **步驟 5. 建立一個 NFT**

你可以使用像 Metaplex、Holaplex 或 [Solsea](https://www.alchemy.com/dapps/solsea) 這類遵循 metadata standard 的平台來建立並鑄造你的 Solana NFT。

以下是首先要做的事：

1. 設定好你的錢包，並確保裡面有一些 SOL 代幣
1. 造訪 [Holaplex](https://www.holaplex.com/) 網站
1. 將你的 Phantom wallet 連接到 Metaplex 平台

Metaplex 會要求檢視你資金的權限，並要求核准交易。你可以核准這些請求。

<ImageBlock
  src="https://media.alchemy.com/1703607352-creating-an-nft-using-holaplex.png"
  alt="Holaplex 建立頁面：上傳作品與細節以鑄造 Solana NFT"
  width={1430}
  height={1324}
  caption="使用 Holaplex 建立 NFT"
/>

接下來：

1. 點選 **create** 頁籤
1. 選擇 **browse file**‍
1. 上傳任意一張你選擇的圖片
1. 為你的圖片新增 **Name** 和 **description**
1. 加入一些 attributes
1. 點選 **Next**

我們將 NFT 設定為 **unlimited**，讓我們可以依需要鑄造任意數量的複本。

點選 mint 並成功之後，我們應該就能在錢包中看到這個 NFT。

現在，取得 metadata 並將其儲存在安全的檔案中，然後將這個 NFT 從你的 Phantom wallet 轉移到你先前產生的 pubkey 地址。

你可以透過執行以下指令查詢：

另外，更進階的 Solana 開發者可以使用 **Candy Machine** 進行鑄造。

### **步驟 6. 選擇你的空投類型**

在繼續之前，你必須了解 gumdrop 程式支援三種空投類型：

1. The Token Airdrop
1. NFT candy machine pre-sale
1. The Edition prints

我們也必須定義我們的分發方式與白名單：

以下列出一系列選項，指引我們如何使用這個 CLI：

在空投類型方面，我們會選擇 **Token Airdrop**。

這個方法讓 CLI 可以把代幣移到產生出來的一次性 keypair 中，讓後續建立更多 gumdrop 的邏輯更加合理。

在分發方式方面，我們可以透過 SMS、Discord、Email 或錢包進行空投。在這篇教學中，我們使用以下指令透過錢包進行空投：

在繼續執行完整指令之前，我們必須先建立一個 whitelist.json 檔案。這份 allowlist 將用來指定空投的接收對象。

它是一份清單，內容包含接收者以及識別用的值，例如要領取的 mint 或 print，以及版本數量。

whitelist 的格式如下：

你可以用以下資訊取代並依照將收到 NFT 空投的朋友人數填入內容。

接著，我們可以透過以下指令參照這份分發清單：

最後，執行以下所有指令：

### 步驟 7. 空投 Solana NFT

現在，讓我們把 NFT 空投到你選擇的地址。在檔案目錄中，找到「log」資料夾，檢查裡面所有的檔案，並找出如下所示、包含 URL 的 .json 檔案。這個檔案的內容就是 whitelist.json 檔案的內容，其中附有針對空投接收者的 URL。你可以在瀏覽器中開啟這個連結。

你應該會看到類似這樣的畫面：

<ImageBlock
  src="https://media.alchemy.com/1703607513-gumdrop-nft-claim-interface.jpg"
  alt="Gumdrop NFT 領取介面"
  width={1230}
  height={1412}
  caption="Gumdrop NFT 領取介面"
/>

Gumdrop 提供了一個互動式 UI，讓接收者可以輕鬆地領取他們的空投。我們可以將這個自訂的 gumdrop 網站部署到 Vercel。

就是這樣！你已經建立了一個可以將 NFT 空投給朋友的 gumdrop 網站。

### **步驟 8：關閉一個 gumdrop**[**​**](https://docs.metaplex.com/guides/airdrops#closing-a-gumdrop)

當 gumdrop 完成後，可以透過關閉該 gumdrop 來回收 master edition。如果你關閉 gumdrop，接收者可能就無法再領取他們的 gumdrop。

用來關閉 gumdrop 的程式碼片段如下：

若要撤回權限或回收代幣，你可以傳入更多關於 claim 整合的資訊。

### **步驟 9：部署一個自訂的 gumdrop 網站**[**​**](https://github.com/metaplex-foundation/gumdrop)

你可以選擇部署你自己的 Gumdrop 網站。我會推薦使用 **Vercel**，它以提供穩健的開發者體驗聞名，尤其適合用來建置前端框架和靜態網站。

首先，前往 [Vercel](https://vercel.com/) 註冊一個免費帳號，並使用 GitHub 以加快整合速度。

<ImageBlock
  src="https://media.alchemy.com/1703607611-create-a-new-project-in-vercel.png"
  alt="Vercel 儀表板：建立新專案以部署 Gumdrop 空投網站"
  width={1600}
  height={269}
  caption="在 Vercel 中建立新專案"
/>

以下是接下來要做的事：

1. 選擇 **new project**，並從你的 Github repository 匯入該檔案
1. 填入 Project name 並指定目錄
1. 開啟 **Build and Output Settings**，並依照下方所示進行調整‍

<ImageBlock
  src="https://media.alchemy.com/1703607729-github-vercel-import.png"
  alt="從 GitHub 匯入檔案，為你的 Solana NFT 空投建立 Vercel 網站"
  width={1476}
  height={1362}
  caption="從 GitHub 匯入檔案，為你的 Solana NFT 空投建立 Vercel 網站"
/>

現在，確認 Output Directory 已設定為 **override**，然後點選 **Deploy**，就能取得這個專案專屬的連結！

恭喜！你剛剛部署了一個自訂的 Gumdrop 網站 🎉

如果你想要分享給朋友，只要把連結分享出去即可。你也應該取得他們的錢包地址，因為這裡的 allowlist 分發方式是設定為 wallet。
