DApp部署指南Skill ship

这个技能提供了一个从计划到生产部署去中心化应用(dApp)的端到端完整指南,涵盖架构设计、智能合约开发、测试、前端构建和部署监控。关键词:dApp 部署、智能合约、区块链开发、Web3、前端开发、测试、生产部署、MVP、架构设计、链选择。

DApp开发 0 次安装 0 次浏览 更新于 3/24/2026

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.mdsecurity/SKILL.mdtesting/SKILL.mdgas/SKILL.md

2. NFT 系列(1 个合约)

架构: 一个 ERC-721 合约。元数据在 IPFS。前端用于铸造。

合约:

  • MyNFT.sol — 带有铸造、最大供应、元数据 URI 的 ERC-721

常见错误:

  • 将图片存储在链上(使用 IPFS 或 Arweave,在链上存储哈希)
  • 没有最大供应上限(无限铸造破坏价值)
  • 复杂的白名单逻辑,而简单的 Merkle 根有效

获取序列: standards/SKILL.mdsecurity/SKILL.mdtesting/SKILL.mdfrontend-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.mdaddresses/SKILL.mdsecurity/SKILL.mdtesting/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.mdstandards/SKILL.mdsecurity/SKILL.mdtesting/SKILL.md

5. DAO / 治理(1-3 个合约)

架构: Governor 合约 + 治理代币 + 时间锁。使用 OpenZeppelin 的 Governor——不要从头构建。

合约:

  • GovernanceToken.sol — ERC-20Votes
  • MyGovernor.sol — 带有投票参数的 OpenZeppelin Governor
  • TimelockController.sol — 为安全延迟执行

常见错误:

  • 没有时间锁(治理决策立即执行 = 欺诈向量)
  • 低法定人数允许少数接管
  • 代币分配太集中,一个鲸鱼控制一切

获取序列: standards/SKILL.mdbuilding-blocks/SKILL.mdsecurity/SKILL.mdtesting/SKILL.md

6. AI 代理服务(0-1 个合约)

架构: 代理逻辑在链下。链上组件是可选的——ERC-8004 身份注册,或 x402 的支付合约。

合约: -(通常没有——代理在链下运行,使用现有支付基础设施)

  • AgentRegistry.sol(可选) — ERC-8004 身份 + 服务端点

常见错误:

  • 将代理逻辑放在链上(Solidity 不用于 AI 推理)
  • 过度复杂化支付(x402 处理 HTTP 原生支付)
  • 忽略密钥管理(获取 wallets/SKILL.md

获取序列: standards/SKILL.mdwallets/SKILL.mdtools/SKILL.mdorchestration/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

合约部署

  1. 设置目标链的适当 gas 设置(获取 gas/SKILL.md
  2. 在区块浏览器上部署和验证合约
  3. 将所有权转移给多签(Gnosis Safe)——在生产的任何情况下都不要将单个 EOA 作为所有者
  4. 部署后检查:调用每个读取函数,验证状态,测试一个小事务

前端部署

获取 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