Speedrun Ethereum Tokenization 实战排错索引

挑战地址:https://speedrunethereum.com/challenge/tokenization

本文是 Speedrun Ethereum Tokenization 实战排错系列索引。正文按 Challenge Checkpoint 拆成三篇,方便按实际开发顺序阅读和排查。

隐私说明:全系列不包含真实钱包地址、合约地址、交易哈希、部署 URL、团队名、项目名、IPFS 哈希或本地绝对路径。

文章目录

顺序 Challenge 步骤 文章 主要内容
1 Checkpoint 2: Deploy to a Testnet 账户生成与 Sepolia 部署排错 yarn generate 私钥解析失败、Sepolia 部署 OutOfGas
2 Checkpoint 3: Mint NFTs MetaMask Mint 交易耗尽 gas EIP-7702 包装交易、内层 mintItem gas 不足、trace 分析
3 Checkpoint 4: Ship Vercel 前端构建依赖修复 @x402/* 缺失、Vercel 干净安装、生产构建验证

推荐阅读顺序

如果正在从零完成挑战,按下面顺序阅读:

1
2
3
1. Checkpoint 2:生成账户并部署到 Sepolia
2. Checkpoint 3:连接前端并 Mint NFT
3. Checkpoint 4:构建并发布 Vercel 前端

如果已经遇到问题,可以直接按现象跳转:

现象 建议阅读
yarn generate 报 Could not extract private key from output Checkpoint 2
Sepolia 部署交易状态为 failed,且 gasUsed == gasLimit Checkpoint 2
MetaMask 显示已确认,但 Mint 链上失败 Checkpoint 3
Mint 交易类型是 EIP-7702,方法为 redeemDelegations Checkpoint 3
yarn vercel --prod 报 yarn run build exited with 1 Checkpoint 4
Vercel 报 Can't resolve '@x402/core/client' Checkpoint 4

环境信息

本系列排查环境:

1
2
3
4
5
6
7
8
9
10
11
12
操作系统: macOS
终端: zsh
Node.js: v26.7.0
Yarn: 4.13.0
Foundry: 1.8.5
Solidity 编译器: 0.8.37
Next.js: 16.2.12
Vercel CLI: 62.1.0
网络: Sepolia
Chain ID: 11155111
项目框架: Scaffold-ETH 2
智能合约框架: Foundry

三条关键结论

1. Foundry 输出格式变化会影响旧解析脚本

cast wallet new 在 Foundry 1.8.5 中把标签信息输出到 stderr,机器可读结果放在 stdout。只搜索 stdout 中 Private key: 的旧脚本会失败。

2. OutOfGas 可能发生在不同层级

部署交易可能因为 Foundry gas 估算偏低而耗尽;Mint 交易可能因为 MetaMask EIP-7702 包装逻辑消耗额外 gas,导致内层调用可用 gas 不足。

看到 gasUsed == gasLimit 时,应优先检查 gas,而不是立刻怀疑 Solidity 业务逻辑。

3. Vercel 会执行全新的依赖安装

本地 node_modules 有残留包,不代表 Vercel 干净环境也能安装成功。Vercel 构建失败时,要查看完整日志中的 Module not found 和 Import trace。

快速完整流程

以下命令只展示流程,不包含任何真实的钱包、交易或部署信息。

1. 创建 Sepolia 部署账户

1
2
3
cd "/path/to/challenge-tokenization"

cast wallet new sepolia-deployer

2. 查看账户并领取测试 ETH

1
yarn account

选择:

1
sepolia-deployer

3. 使用更高 gas 倍数部署

1
2
3
4
5
6
7
8
cd "/path/to/challenge-tokenization/packages/foundry"

forge script script/Deploy.s.sol \
--rpc-url sepolia \
--account sepolia-deployer \
--broadcast \
--ffi \
--gas-estimate-multiplier 800

4. 生成前端 ABI

1
node scripts-js/generateTsAbis.js

5. Mint NFT

推荐使用普通 MetaMask EOA。

如果使用 EIP-7702 智能账户,前端 Mint 请求可增加:

1
gas: 3000000n,

6. 验证并发布前端

1
2
3
4
5
cd "/path/to/challenge-tokenization"

yarn next:build

yarn vercel --prod

如果 Vercel 全新安装后缺少 @x402/*,执行:

1
2
3
4
yarn workspace @se-2/nextjs add \
@x402/core@2.28.0 \
@x402/evm@2.28.0 \
@x402/svm@2.28.0

然后重新执行:

1
2
yarn next:build
yarn vercel --prod

正文导航

  1. Checkpoint 2:账户生成与 Sepolia 部署排错
  2. Checkpoint 3:MetaMask Mint 交易耗尽 gas
  3. Checkpoint 4:Vercel 前端构建依赖修复