name: ship description: AI 代理的端到端指南——从 dApp 想法到部署的生产应用。首先获取这个,它引导你通过所有其他技能。
部署一个 dApp
你可能做错的地方
你没有计划就直接写代码。 在写任何一行 Solidity 之前,你需要知道:什么上链,什么留在链下,选择哪个链,需要多少合约,以及谁调用每个函数。跳过这一步,你将重写一切。
你过度设计。 大多数 dApp 需要 0-2 个合约。代币发行是 1 个合约。NFT 系列是 1 个合约。使用现有 DEX 流动性的市场需要 0 个合约。三个合约是 MVP 的上限。如果你写的更多,你就是在构建太多。
你放太多东西上链。 Solidity 用于所有权、转移和承诺。它不是数据库,不是 API,不是后端。如果不涉及无信任价值转移或永久承诺,它就不属于智能合约。
你跳过链选择。 2026 年的答案几乎总是 L2。消费者应用用 Base。DeFi 用 Arbitrum。公共物品用 Optimism。只有当你需要最大安全性或与仅限主网的协议组合时,才用主网。获取 l2s/SKILL.md 以获取完整决策矩阵。
你忘记没有什么是自动的。 智能合约不会自己运行。每个状态转换都需要一个调用者支付 gas 并有一个理由去做。如果你不能回答“谁调用这个,为什么?”对于每个函数,你的合约有死代码。获取 concepts/SKILL.md 以获取完整心智模型。
阶段 0 — 计划架构
在写任何代码之前做这个。这里花费的每一小时节省十小时的重写。
上链试金石测试
如果涉及以下情况,就上链:
- 无信任所有权 — 谁拥有这个代币/NFT/头寸?
- 无信任交换 — 交换、交易、借贷、借入
- 可组合性 — 其他合约需要调用它
- 抗审查 — 即使你的团队消失也必须工作
- 永久承诺 — 投票、证明、证据
如果涉及以下情况,留在链下:
- 用户资料、偏好、设置
- 搜索、过滤、排序
- 图片、视频、元数据(存储在 IPFS,链上引用)
- 频繁变化的业务逻辑
- 任何不涉及价值转移或信任的事情
判断调用:
- 声誉分数 → 链下计算,链上承诺(哈希或证明)
- 活动源 → 链上事件的链下索引(获取
indexing/SKILL.md) - 价格数据 → 链下预言机写入链上(Chainlink)
- 游戏状态 → 取决于赌注。有真实资金的扑克?上链。排行榜?链下。
MVP 合约数量
| 你构建什么 | 合约 | 模式 |
|---|---|---|
| 代币发行 | 1 | 带有自定义逻辑的 ERC-20 |
| NFT 系列 | 1 | 带有铸造/元数据的 ERC-721 |
| 简单市场 | 0-1 | 使用现有 DEX;可能有一个上市合约 |
| 保险库 / 收益 | 1 | ERC-4626 保险库 |
| 借贷协议 | 1-2 | 资金池 + 预言机集成 |
| DAO / 治理 | 1-3 | Governor + 代币 + 时间锁 |
| AI 代理服务 | 0-1 | 可能是一个 ERC-8004 注册 |
| 预测市场 | 1-2 | 市场 + 解析预言机 |
如果你的 MVP 需要超过 3 个合约,你就是在过度构建。 发布最简单的有效版本,然后迭代。
状态转换审计
对于合约中的每个函数,填写这个工作表:
函数:____________
谁调用它?____________
为什么他们会调用?____________
如果没人调用它怎么办?____________
需要 gas 激励吗?____________
如果“如果没人调用它怎么办?”破坏你的系统,你有设计问题。在写代码之前修复它。查看 concepts/SKILL.md 获取激励设计模式。
链选择(快速版本)
| 优先级 | 链 | 为什么 |
|---|---|---|
| 消费者应用,低费用 | Base | 最便宜的 L2,Coinbase 分发,强大生态系统 |
| DeFi,复杂协议 | Arbitrum | 任何 L2 上最深的 DeFi 流动性,成熟工具 |
| 公共物品,治理 | Optimism | 回溯性公共物品资助,OP Stack 生态系统 |
| 最大安全性 | 以太坊主网 | 只有当你需要主网可组合性或 $100M+ TVL 时 |
| 隐私功能 | zkSync / Scroll | ZK rollups 带有潜在隐私扩展 |
获取 l2s/SKILL.md 以获取完整的比较,包括 gas 成本、桥接和部署差异。
dApp 原型模板
在下面找到你的原型。每个告诉你需要多少合约,它们做什么,常见错误,以及获取哪些技能。
1. 代币发行(1-2 个合约)
架构: 一个 ERC-20 合约。如果有团队/投资者分配,添加一个归属合约。
合约:
MyToken.sol— 带有初始供应的 ERC-20,可能有铸造/销毁TokenVesting.sol(可选) — 团队代币的时间锁定释放
常见错误:
- 无限供应没有销毁机制(什么赋予它价值?)
- 没有初始流动性计划(部署一个没人能买的代币)
- 费用于转账机制破坏 DEX 集成
获取序列: standards/SKILL.md → security/SKILL.md → testing/SKILL.md → gas/SKILL.md
2. NFT 系列(1 个合约)
架构: 一个 ERC-721 合约。元数据在 IPFS。前端用于铸造。
合约:
MyNFT.sol— 带有铸造、最大供应、元数据 URI 的 ERC-721
常见错误:
- 将图片存储在链上(使用 IPFS 或 Arweave,在链上存储哈希)
- 没有最大供应上限(无限铸造破坏价值)
- 复杂的白名单逻辑,而简单的 Merkle 根有效
获取序列: standards/SKILL.md → security/SKILL.md → testing/SKILL.md → frontend-ux/SKILL.md
3. 市场 / 交易所(0-2 个合约)
架构: 如果交易现有代币,你可能需要 0 个合约——集成 Uniswap/Aerodrome。如果构建自定义订单匹配,1-2 个合约。
合约: -(通常没有——通过路由器使用现有 DEX 流动性)
OrderBook.sol(如果自定义) — 上市、匹配、结算Escrow.sol(如果需要) — 在交易期间持有资产
常见错误:
- 当 Uniswap V4 钩子可以做到时,从头构建 DEX
- 忽略 MEV(获取
security/SKILL.md以获取三明治攻击保护) - 中心化订单匹配(违背目的)
获取序列: building-blocks/SKILL.md → addresses/SKILL.md → security/SKILL.md → testing/SKILL.md
4. 借贷 / 保险库 / 收益(0-1 个合约)
架构: 如果使用现有协议(Aave, Compound),0 个合约——只需集成。如果构建保险库,1 个 ERC-4626 合约。
合约:
MyVault.sol— 包装收益源的 ERC-4626 保险库
常见错误:
- 忽略保险库通胀攻击(获取
security/SKILL.md) - 不使用 ERC-4626 标准(破坏可组合性)
- 硬编码代币小数(USDC 是 6,不是 18)
获取序列: building-blocks/SKILL.md → standards/SKILL.md → security/SKILL.md → testing/SKILL.md
5. DAO / 治理(1-3 个合约)
架构: Governor 合约 + 治理代币 + 时间锁。使用 OpenZeppelin 的 Governor——不要从头构建。
合约:
GovernanceToken.sol— ERC-20VotesMyGovernor.sol— 带有投票参数的 OpenZeppelin GovernorTimelockController.sol— 为安全延迟执行
常见错误:
- 没有时间锁(治理决策立即执行 = 欺诈向量)
- 低法定人数允许少数接管
- 代币分配太集中,一个鲸鱼控制一切
获取序列: standards/SKILL.md → building-blocks/SKILL.md → security/SKILL.md → testing/SKILL.md
6. AI 代理服务(0-1 个合约)
架构: 代理逻辑在链下。链上组件是可选的——ERC-8004 身份注册,或 x402 的支付合约。
合约: -(通常没有——代理在链下运行,使用现有支付基础设施)
AgentRegistry.sol(可选) — ERC-8004 身份 + 服务端点
常见错误:
- 将代理逻辑放在链上(Solidity 不用于 AI 推理)
- 过度复杂化支付(x402 处理 HTTP 原生支付)
- 忽略密钥管理(获取
wallets/SKILL.md)
获取序列: standards/SKILL.md → wallets/SKILL.md → tools/SKILL.md → orchestration/SKILL.md
阶段 1 — 构建合约
获取: standards/SKILL.md, building-blocks/SKILL.md, addresses/SKILL.md, security/SKILL.md
关键指导:
- 使用 OpenZeppelin 合约作为基础——不要重新发明 ERC-20、ERC-721 或 AccessControl
- 使用
addresses/SKILL.md中的已验证地址进行任何协议集成——从不伪造地址 - 对于每个外部调用,遵循 Checks-Effects-Interactions 模式
- 为每个状态变化发出事件(你的前端和索引器需要它们)
- 对所有代币操作使用
SafeERC20 - 在进入阶段 2 之前,运行
security/SKILL.md中的安全检查列表
对于 SE2 项目,遵循 orchestration/SKILL.md 阶段 1 以获取确构建序列。
阶段 2 — 测试
获取: testing/SKILL.md
不要跳过这个。不要“稍后测试”。在部署前测试。
关键指导:
- 单元测试每个自定义函数(不是 OpenZeppelin 内部)
- 模糊测试所有数学操作——模糊测试找到你没想过的 bug
- 分叉测试任何与外部协议(Uniswap, Aave 等)的集成
- 在部署前运行
slither .进行静态分析 - 目标边缘情况:零金额、最大 uint、空数组、自转移、未授权调用者
阶段 3 — 构建前端
获取: orchestration/SKILL.md, frontend-ux/SKILL.md, tools/SKILL.md
关键指导:
- 使用 Scaffold-ETH 2 钩子,而不是原始 wagmi —
useScaffoldReadContract,useScaffoldWriteContract - 实现三按钮流程:切换网络 → 批准 → 执行
- 在每个异步操作上显示加载状态(区块链需要 5-12 秒)
- 使用
formatEther/formatUnits以人类可读形式显示代币金额 - 从不使用无限批准
阶段 4 — 发布到生产
获取: wallets/SKILL.md, frontend-playbook/SKILL.md, gas/SKILL.md
合约部署
- 设置目标链的适当 gas 设置(获取
gas/SKILL.md) - 在区块浏览器上部署和验证合约
- 将所有权转移给多签(Gnosis Safe)——在生产的任何情况下都不要将单个 EOA 作为所有者
- 部署后检查:调用每个读取函数,验证状态,测试一个小事务
前端部署
获取 frontend-playbook/SKILL.md 以获取完整管道:
- IPFS — 去中心化、抗审查、永久
- Vercel — 快速、简单,但中心化
- ENS 子域名 — 指向 IPFS 的人类可读 URL
发布后
- 使用 The Graph 或 Dune 设置事件监控(获取
indexing/SKILL.md) - 在区块浏览器上监控合约活动
- 有事件响应计划(如果适用,暂停机制,通信渠道)
反模式
厨房水槽合约。 一个合约做所有事情——交换、借贷、质押、治理。拆分职责。每个合约应该做好一件事。
没人要求的工厂。 构建一个工厂合约,当你只需要一个实例时部署新合约。工厂用于服务于许多用户创建自己实例的协议(如 Uniswap 创建资金池)。大多数 dApp 不需要它们。
一切上链。 将用户资料、活动日志、图片或计算分析存储在智能合约中。使用链上用于所有权和价值转移,链下用于其他一切。
管理依赖。 依赖管理账户调用维护函数。当管理员丢失他们的密钥时会发生什么?设计具有适当激励的无许可替代方案。
过早的多链。 在第一天部署到 5 个链。在一个链上启动,证明产品市场契合度,然后扩展。多链在桥接、状态同步和流动性碎片化方面增加复杂性。
重新发明审计过的原语。 写自己的 ERC-20、自己的访问控制、自己的数学库。使用 OpenZeppelin。它们是审计过的、经过战斗测试的,并且免费。你的自定义版本有 bug。
忽略前端。 一个工作的合约加上一个破碎的 UI 是无用的。大多数用户通过前端交互,而不是 Etherscan。将 40% 的时间预算用于前端优化。
快速启动检查列表
- [ ] 确定什么上链 vs 链下(使用上面的试金石测试)
- [ ] 计算你的合约数量(MVP 目标 1-2 个)
- [ ] 选择你的链(大多数应用用 Base, Arbitrum 或 Optimism)
- [ ] 审计每个状态转换(谁调用它?为什么?)
- [ ] 使用 OpenZeppelin 基础合约写合约
- [ ] 使用 Foundry 测试(单元 + 模糊 + 分叉测试)
- [ ] 部署、验证、将所有权转移给多签
- [ ] 发布前端(IPFS 或 Vercel),运行生产 QA
技能路由表
使用这个知道在每个阶段获取哪些技能:
| 阶段 | 你做什么 | 要获取的技能 |
|---|---|---|
| 计划 | 架构、链选择 | ship/ (这个), concepts/, l2s/, gas/ |
| 合约 | 写 Solidity | standards/, building-blocks/, addresses/, security/ |
| 测试 | 测试合约 | testing/ |
| 前端 | 构建 UI | orchestration/, frontend-ux/, tools/ |
| 生产 | 部署 + 监控 | wallets/, frontend-playbook/, indexing/ |
基础 URL: 所有技能在 https://ethskills.com/<skill>/SKILL.md