README.md 5.6 KB

Launchpad 测试脚本文档

📁 脚本文件结构

scripts/
├── 01-deploy-contracts.ts      # 部署合约
├── 02-distribute-tokens.ts     # 分发测试代币
├── 03-init-sale.ts            # 初始化销售
├── 04-test-contributions.ts   # 测试参与
├── 05-test-claiming.ts        # 测试领取
├── deploy-bsctest.ts          # 完整部署脚本(旧版本)
├── set-merkle-root.ts         # 设置默克尔树
├── testAccount/
│   └── BLaunchpadTest.json    # 测试账户文件
└── README.md                  # 本文档

🎯 脚本功能说明

1. 01-deploy-contracts.ts - 部署合约

功能: 部署所有必需的智能合约到 BSC 测试网

  • 部署 MockUSD1 代币(支付代币)
  • 部署 BasicERC20 代币(销售代币)
  • 部署 Launchpad 合约(众筹平台)
  • 保存合约地址到 contract-addresses.json

输出文件: contract-addresses.json

2. 02-distribute-tokens.ts - 分发测试代币

功能: 给所有测试账户分发测试代币和 gas 费

  • BLaunchpadTest.json 读取测试账户
  • 给每个账户分发 100K MockUSD1
  • 给每个账户分发 0.1 BNB 作为 gas 费
  • 部署 TestBNB 代币并分发 1000 TestBNB
  • 显示前3个账户的余额

依赖: contract-addresses.json, BLaunchpadTest.json

3. 03-init-sale.ts - 初始化销售

功能: 创建众筹销售并设置白名单

  • 支持两种场景:未满募和超募
  • 设置销售参数(时间、目标、价格、手续费)
  • 创建默克尔树白名单
  • 保存销售数据到 step2-data.json

环境变量:

  • SCENARIO=0 - 未满募场景(目标50K,用户限额30K)
  • SCENARIO=1 - 超募场景(目标5K,用户限额6K)

输出文件: step2-data.json

4. 04-test-contributions.ts - 测试参与

功能: 测试用户参与众筹

  • 验证销售是否已开始
  • 测试3个用户参与众筹
  • 验证白名单和贡献金额
  • 保存贡献数据到 step3-data.json

依赖: step2-data.json

输出文件: step3-data.json

5. 05-test-claiming.ts - 测试领取

功能: 测试用户领取代币和退款

  • 验证销售是否已结束
  • 启用 claim 功能
  • 测试用户领取代币
  • 测试 owner 提款
  • 保存最终数据到 final-data.json

依赖: step3-data.json

输出文件: final-data.json

🚀 使用方法

环境设置

# 设置私钥环境变量
export PRIVATE_KEY=your_private_key_here

完整测试流程

测试未满募场景

# 方式1: 逐步执行
npm run 01:deploy
npm run 02:distribute
npm run 03:init-undersubscribed
npm run 04:contribute
npm run 05:claim

# 方式2: 一键执行
npm run test:undersubscribed

测试超募场景

# 方式1: 逐步执行
npm run 01:deploy
npm run 02:distribute
npm run 03:init-oversubscribed
npm run 04:contribute
npm run 05:claim

# 方式2: 一键执行
npm run test:oversubscribed

单独执行脚本

# 部署合约
npm run 01:deploy

# 分发代币
npm run 02:distribute

# 初始化销售(指定场景)
npm run 03:init-undersubscribed  # 未满募
npm run 03:init-oversubscribed   # 超募

# 测试参与
npm run 04:contribute

# 测试领取
npm run 05:claim

📊 场景参数对比

参数 未满募场景 超募场景
目标金额 50K USD1 5K USD1
用户1限额 15K USD1 3K USD1
用户2限额 10K USD1 2K USD1
用户3限额 5K USD1 1K USD1
总限额 30K USD1 6K USD1
结果 未达到目标 超过目标

📁 输出文件说明

contract-addresses.json

{
  	"mockUSD1": "0x...",
	"saleToken": "0x...",
	"launchpad": "0x...",
	"deployer": "0x...",
  "testBNB": "0x..."
}

step2-data.json

{
  "mockUSDT": "0x...",
  "saleToken": "0x...",
  "launchpad": "0x...",
  "testUsers": {
    "user1": "0x...",
    "user2": "0x...",
    "user3": "0x..."
  },
  "merkleRoot": "0x...",
  "whitelistData": [...],
  "saleParams": {...}
}

step3-data.json

{
  // 包含 step2 的所有数据
  "contributions": {
    "total": "45000",
    "user1": "15000",
    "user2": "10000",
    "user3": "5000"
  }
}

final-data.json

{
  // 包含 step3 的所有数据
  "claiming": {
    "user1Tokens": "14250",
    "user2Tokens": "9500",
    "user3Tokens": "4750",
    	"ownerReceivedUSD1": "42750",
    "remainingTokens": "800000"
  }
}

🔧 故障排除

常见错误

  1. PRIVATE_KEY 未设置

    export PRIVATE_KEY=your_private_key_here
    
  2. 余额不足

    • 确保账户有足够的 BNB 支付 gas 费
    • 可以从 BSC 测试网水龙头获取测试 BNB
  3. 文件不存在

    • 确保按顺序执行脚本
    • 检查输出文件是否生成
  4. 时间问题

    • 销售时间基于当前时间设置
    • 可以修改脚本中的时间参数

调试技巧

  • 查看控制台输出的详细日志
  • 检查生成的 JSON 文件内容
  • 使用 BSCScan 测试网查看交易状态

📝 注意事项

  1. 私钥安全:不要在代码中硬编码私钥,使用环境变量
  2. 网络选择:脚本默认使用 BSC 测试网
  3. 时间设置:销售时间基于脚本执行时间
  4. 数据持久化:每个脚本都会保存数据供下一步使用
  5. 错误处理:脚本包含基本的错误检查和提示

🔄 重新开始

如果需要重新开始测试:

# 删除所有输出文件
rm -f contract-addresses.json step2-data.json step3-data.json final-data.json

# 重新执行流程
npm run 01:deploy
npm run 02:distribute
# ... 继续其他步骤