Skip to content

Repository files navigation

Solana 压缩 NFT 批量铸造工具

使用 Metaplex Umi 框架和 Bubblegum V2 在 Solana 开发网上批量铸造压缩 NFT 的工具。

功能特性

  • ✅ 自动创建和管理集合 NFT
  • ✅ 自动创建和管理 Merkle 树
  • ✅ 配置持久化和复用
  • ✅ 从 metadata 文件夹读取 NFT 元数据
  • ✅ 单个 NFT 铸造功能
  • ✅ 批量 NFT 铸造功能
  • ✅ 详细的日志输出和错误处理
  • ✅ 环境验证

项目结构

mint_demos/
├── src/
│   └── mint.ts          # 主要铸造逻辑
├── metadata/            # NFT 元数据文件夹 (37个示例文件)
├── assets/              # NFT 图片资产文件夹
├── config.json          # 配置文件(自动生成)
├── package.json         # 项目依赖
├── tsconfig.json        # TypeScript 配置
└── README.md           # 项目文档

前置要求

  1. Node.js (版本 16 或更高)
  2. pnpm 包管理器
  3. Solana CLI 工具
  4. Solana 钱包 密钥对

安装 Solana CLI

# 安装 Solana CLI
sh -c "$(curl -sSfL https://release.solana.com/v1.17.0/install)"

# 生成新的密钥对(如果还没有)
solana-keygen new

# 设置为开发网
solana config set --url https://api.devnet.solana.com

# 获取一些测试 SOL
solana airdrop 2

安装和使用

1. 安装依赖

pnpm install

2. 准备 NFT 元数据

项目已包含 37 个示例元数据文件在 metadata/ 文件夹中。每个文件的格式如下:

{
  "name": "Solana Legends #38 - Luna",
  "symbol": "SLEG",
  "description": "A legendary creature from the Solana Legends series, featuring Luna.",
  "image": "https://dcmripai5rlqc.cloudfront.net/numbers-test/0U9aC0U~P9pRmQo.png",
  "properties": {
    "files": [
      {
        "uri": "https://dcmripai5rlqc.cloudfront.net/numbers-test/0U9aC0U~P9pRmQo.png",
        "type": "image/png"
      }
    ],
    "category": "image"
  },
  "attributes": [
    {
      "trait_type": "Character",
      "value": "Luna"
    },
    {
      "trait_type": "Series",
      "value": "Solana Legends"
    }
  ]
}

3. 运行铸造程序

单个 NFT 铸造(推荐用于测试)

# 开发模式
npm run dev

# 生产模式
npm run mint

批量 NFT 铸造(铸造所有元数据文件)

# 开发模式(推荐)
npm run bulk

# 生产模式
npm run bulk-build

其他命令

# 构建项目
npm run build

# 运行单个铸造
npm run start

# 清理构建文件
npm run clean

工作流程

  1. 环境验证 - 检查 Solana 钱包和元数据文件夹
  2. 连接开发网 - 连接到 Solana 开发网 RPC
  3. 集合 NFT 管理 - 创建或复用现有的集合 NFT
  4. Merkle 树管理 - 创建或复用现有的 Merkle 树
  5. NFT 铸造 - 从元数据文件读取信息并铸造压缩 NFT
  6. 配置保存 - 保存地址信息以供后续使用

配置文件

程序会自动生成 config.json 文件来保存重要地址:

{
  "collectionMintAddress": "集合NFT地址",
  "collectionMetadataAddress": "集合元数据地址", 
  "merkleTreeAddress": "Merkle树地址",
  "treeAuthority": "树权限地址"
}

技术规格

  • Merkle 树深度: 14 (最多 16,384 个 NFT)
  • 缓冲区大小: 64
  • 网络: Solana 开发网
  • 压缩标准: Bubblegum V2
  • 集合: 自动创建和管理

脚本命令

命令 描述
npm run build 编译 TypeScript 代码
npm run start 运行编译后的单个铸造代码
npm run dev 开发模式运行单个铸造(使用 ts-node)
npm run mint 构建并运行单个铸造
npm run bulk 开发模式运行批量铸造
npm run bulk-build 构建并运行批量铸造
npm run clean 清理构建文件

故障排除

常见问题

  1. 找不到钱包文件

    ❌ 错误: 找不到 Solana 钱包文件
    

    解决方案: 运行 solana-keygen new 生成密钥对

  2. 余额不足

    ❌ 交易失败: 余额不足
    

    解决方案: 运行 solana airdrop 2 获取测试 SOL

  3. 网络连接问题

    ❌ 连接到 RPC 失败
    

    解决方案: 检查网络连接,或尝试其他 RPC 端点

日志输出说明

  • 🚀 程序开始
  • 🔗 网络连接
  • 💳 钱包信息
  • 🎨 集合 NFT 操作
  • 🌳 Merkle 树操作
  • 🔨 NFT 铸造过程
  • ✅ 成功操作
  • ❌ 错误信息
  • ⚠️ 警告信息
  • ♻️ 复用现有资源

查看结果

铸造成功后,您可以通过以下方式查看您的压缩 NFT:

  1. Solana 浏览器: https://explorer.solana.com/address/YOUR_WALLET_ADDRESS?cluster=devnet
  2. 交易详情: 程序会输出每个交易的链接

开发信息

  • 框架: Metaplex Umi
  • 压缩 NFT: Bubblegum V2
  • 语言: TypeScript
  • 包管理器: pnpm
  • 网络: Solana 开发网

许可证

ISC License

贡献

欢迎提交 Issue 和 Pull Request!

下一步计划

  • 实现批量铸造功能 ✅
  • 添加进度条显示
  • 支持自定义 RPC 端点
  • 添加 NFT 更新功能
  • 支持主网部署
  • 添加测试用例
  • 优化错误重试机制
  • 添加交易费用估算

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages