---
title: "如何使用 Metaplex 和 Gumdrop 空投 Solana NFT"
description: "使用 Gumdrop 向收藏者空投 Solana NFT"
---

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

本教程将带你了解如何使用 Gumdrop（[Metaplex 创建的 NFT 工具](https://www.alchemy.com/overviews/metaplex)之一）在 Solana 上空投 NFT。如果你刚开始在 Solana 上开发 NFT 项目，这篇入门教程适合你。

预计完成时间：15 分钟

在本教程中，我们将：

1. 创建一个 NFT
1. 铸造一个 NFT
1. 使用 Gumdrop 命令行界面（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 功能，它通过使用链下句柄构建树结构，让创作者可以直接向白名单上的用户发送领取链接，并允许用户将其兑换到任意钱包中。Gumdrop 还可以与 [Candy Machine](https://www.alchemy.com/overviews/candy-machine-v2) 配合使用，完成 NFT 空投并分发代币。

Gumdrop 通过白名单简化了投放非同质化代币的流程，使在 Solana 上进行 NFT 空投变得容易。

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

为确保你已准备好进行本教程，你需要在机器上安装以下工具：

1. [NodeJS](https://nodejs.org/en/)（版本 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**。

如果现在觉得内容有点多，不用担心。接下来我们会逐一演示每个工具的用法。

### **第一步：使用 gumdrop CLI 进行初始化**

Gumdrop CLI 的安装和配置都通过 Gumdrop 的 GitHub[仓库](https://github.com/metaplex-foundation/gumdrop)完成。仓库中提供了你所需的一切。让我们克隆该仓库到本地。在继续之前，我们还需要确认已安装 node、yarn 和 ts-node。

你可以通过运行以下命令安装 ts-node：

你可以通过运行以下命令进行验证：

现在，让我们在终端中用 mkdir 命令创建一个空文件夹。我们将这个文件夹命名为 solana-airdrop。

在该文件夹内运行以下命令来创建一个 [Solana 钱包](https://www.alchemy.com/overviews/solana-wallets)：

终端中显示的信息应妥善保存，因为稍后我们会用到其中的 pubkey 和助记词。

以下是一个示例，展示效果应该是这样的：

<ImageBlock
  src="https://media.alchemy.com/1703606637-solana-wallet-generation-output.jpg"
  alt="solana-keygen 的终端输出，显示新生成的 Solana 钱包 pubkey 和助记词"
  width={1134}
  height={494}
  caption="Solana 钱包生成输出"
/>

接下来，将 Gumdrop 项目克隆到 solana-airdrop 文件夹中：

然后进入包含 CLI 的目录：

接下来，运行：

该命令会安装所有必要的依赖项。安装过程可能需要几分钟。

接下来，我们将[连接到 Solana Devnet 集群](https://www.alchemy.com/overviews/solana-devnet)，这样学习过程中就不需要花钱。请注意，在实际应用中，我们需要使用 mainnet。你可以通过运行以下命令切换到 devnet：

现在，我们需要创建一个用于存放 NFT 的新密钥。这里的 “Se” 表示我们的 pubkey 以 “Se” 开头

<ImageBlock
  src="https://media.alchemy.com/1703606780-solana-keypair-generation-output.png"
  alt="生成 Solana 密钥对的终端输出，pubkey 以 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 钱包地址配置输出"
/>

### **第二步：为 Devnet 钱包充值**

现在我们需要[获取测试用的 Solana 代币](https://www.alchemy.com/overviews/solana-faucet)。由于我们处于 devnet 中，可以在终端运行以下命令快速获取一些 sol：

或者，你也可以从 [Solana 水龙头](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：

### **第三步：将 Phantom 钱包连接到 Devnet 集群**

现在，我们将新建的 devnet 钱包与 Phantom 关联起来。为此，点击**设置**，选择**更改网络**，然后选择 **Devnet**。

<ImageBlock
  src="https://media.alchemy.com/1703607239-phantom-wallet-connect.gif"
  alt="Phantom 钱包设置：将网络切换为 Solana Devnet 集群"
  width={728}
  height={1082}
  caption="将你的 Phantom 钱包连接到 Solana 的 devnet 集群"
/>

### **第四步：将 Devnet 钱包添加到 Phantom**

现在我们需要获取 devnet 钱包的私钥。打开终端，使用 **cat** 查看 keypair.json 文件的内容以获取私钥：

要将 devnet 钱包添加到 Phantom：

1. 打开 Phantom
1. 复制刚才得到的输出
1. 为其起一个合适的名字
1. 从左上角导航菜单中选择**导入私钥**
1. 点击**添加/连接钱包**
1. 将密钥粘贴到**私钥**区域

现在，你的 Devnet [Phantom Wallet](https://www.alchemy.com/dapps/phantom) 应该显示 5 SOL。

### **第五步：创建一个 NFT**

你可以使用 Metaplex、Holaplex 或 [Solsea](https://www.alchemy.com/dapps/solsea) 等遵循元数据标准的平台来创建和铸造你的 Solana NFT。

首先要做的是：

1. 设置好你的钱包，并确保其中有一些 SOL 代币
1. 访问 [Holaplex](https://www.holaplex.com/) 网站
1. 将你的 Phantom 钱包连接到 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. 点击**创建**标签
1. 选择**浏览文件**
1. 上传你选择的任意图片
1. 为图片添加**名称**和**描述**
1. 填写一些属性
1. 点击**下一步**

我们将 NFT 设置为**无限**，以便可以按需铸造任意数量的副本。

点击铸造并成功后，我们现在应该能在钱包中看到这个 NFT。

现在，获取元数据并将其存储在安全的文件中，然后将 NFT 从你的 Phantom 钱包转移到你之前生成的 pubkey 地址。

你可以运行以下命令来查询：

另外，更有经验的 Solana 开发者可以使用 **Candy Machine** 进行铸造。

### **第六步：选择你的空投类型**

在继续之前，你需要了解 gumdrop 程序支持三种空投类型：

1. 代币空投（Token Airdrop）
1. NFT candy machine 预售
1. 版本印刷品（Edition prints）

我们还需要定义分发方式和白名单：

以下列出了一系列选项，指导我们如何使用该 CLI：

对于空投类型，我们将选择**代币空投（Token Airdrop）**。

这种方式让 CLI 可以将代币转移到生成的一次性密钥对中，从而更合理地支持后续创建更多 gumdrop。

对于分发方式，我们可以通过 SMS、Discord、Email 或钱包进行空投。本教程中，我们使用以下命令通过钱包进行空投：

在运行完整命令之前，我们需要创建一个 whitelist.json 文件。该白名单将用于指定空投的接收者。

它是一个包含接收者的列表，其中带有识别信息，例如待领取的 mint 或 print，以及版本数量。

白名单的格式如下：

你可以用下面的信息替换它，并根据将收到 NFT 空投的朋友数量进行填充。

然后我们可以通过以下命令引用该分发列表：

最后，运行下面的所有命令：

### 第七步：空投 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 站点。

### **第八步：关闭 gumdrop**[**​**](https://docs.metaplex.com/guides/airdrops#closing-a-gumdrop)

当 gumdrop 结束后，可以通过关闭 gumdrop 来收回 master edition。如果关闭 gumdrop，接收者可能无法再领取他们的 gumdrop。

关闭 gumdrop 的代码片段如下：

要撤回权限或返还代币，你可以传入关于领取集成的更多信息。

### **第九步：部署自定义 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. 选择**新建项目**，并从你的 Github 仓库导入文件
1. 填写项目名称并指定目录
1. 展开**构建和输出设置**，并按下图所示进行修改

<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 网站"
/>

现在，确认输出目录已设置为 **override**，并点击**部署**，即可获得该项目的专属链接！

恭喜！你刚刚部署了一个自定义 Gumdrop 网站 🎉

如果你想与朋友分享，只需把链接发给他们即可。由于白名单的分发方式设置为钱包，你还应该获取他们的钱包地址。
