Speedrun Ethereum Tokenization 实战排错索引
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 | 1. Checkpoint 2:生成账户并部署到 Sepolia |
如果已经遇到问题,可以直接按现象跳转:
| 现象 | 建议阅读 |
|---|---|
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 | 操作系统: macOS |
三条关键结论
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 | cd "/path/to/challenge-tokenization" |
2. 查看账户并领取测试 ETH
1 | yarn account |
选择:
1 | sepolia-deployer |
3. 使用更高 gas 倍数部署
1 | cd "/path/to/challenge-tokenization/packages/foundry" |
4. 生成前端 ABI
1 | node scripts-js/generateTsAbis.js |
5. Mint NFT
推荐使用普通 MetaMask EOA。
如果使用 EIP-7702 智能账户,前端 Mint 请求可增加:
1 | gas: 3000000n, |
6. 验证并发布前端
1 | cd "/path/to/challenge-tokenization" |
如果 Vercel 全新安装后缺少 @x402/*,执行:
1 | yarn workspace @se-2/nextjs add \ |
然后重新执行:
1 | yarn next:build |
正文导航
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Stitch's Blog!
评论
