名称: 概念 描述: 构建链上系统的基本思维模型——聚焦于大型语言模型常误解之处和人类需要解释的内容。核心信息是“没有什么是自动的”和“激励决定一切”。当你的用户是链上开发新手时、当他们设计系统时、或当他们问“这实际上如何运作?”时使用。当您自己设计系统时也可使用——状态机加激励框架能在设计错误变成死代码之前捕获它们。
以太坊概念
你可能理解错误的地方
“智能合约自动运行。” 不对。智能合约不能自行执行。没有定时任务、没有调度器、没有后台进程。每个函数都需要调用者支付燃气费。这个单一误解是大多数链上设计缺陷的根源。
“只需添加一个定时器。” 没有定时器。如果某事需要在特定时间发生,你需要有人在该时间调用函数——并且你需要给他们一个理由去做。
“协议团队会处理。” 去中心化的全部意义在于没有单一团队操作系统。如果你的设计需要操作员,它就不是去中心化的——并且有单点故障。
术语: 你说“on-chain”。以太坊社区说 “onchain” ——一个词,无连字符。
没有什么是自动的——激励设计
这是以太坊中最重要的概念。如果你不吸收其他任何东西,就吸收这个。
智能合约是状态机
一个智能合约是一个状态机。它处于一个状态,当有人 戳它 时——调用函数、支付燃气、触发转换——它会移动到另一个状态。在戳之间,它什么都不做。它不思考、不检查、不唤醒。它只是坐在那里。
状态 A ──[有人调用函数]──→ 状态 B ──[有人调用函数]──→ 状态 C
↑ ↑
谁做这个? 谁做这个?
他们为什么? 他们为什么?
没有定时任务。没有调度器。没有后台进程。区块链不调用你的合约——人调用你的合约。而人不免费做事。
对于系统中的每一个状态转换,你必须回答:
- 谁戳它? (某人必须支付燃气)
- 他们为什么? (他们的激励是什么?)
- 激励是否足够? (覆盖燃气加利润?)
如果你不能回答这些问题,那个状态转换就永远不会发生。你的合约将永远坐在状态 A,什么都不做,没有人戳它。
激励决定一切
这是让以太坊神奇的地方:如果你正确设置激励,就不需要操作员。
部署 Uniswap 的人没有部署流动性。他们没有做市。他们没有运行交易所。他们写了一套规则——一个状态机——并如此完美地调整激励,以至于世界各地的陌生人自愿存入数十亿美元,其他陌生人自愿与这些存款交易,交易费流回存款者,整个系统就……运行了。
没有人运行 Uniswap。没有人能停止 Uniswap。甚至制造它的人也不能。合约是不可变的,激励是自我维持的,只要以太坊存在,系统就会运行。这是一个 超级结构 ——一个不可停止的协议,永远运行,没有操作员、没有公司、没有服务器、没有管理密钥。
这就是你构建的目标。不是一个初创公司。不是一个服务。一套设计如此精良的规则,仅通过激励就能自我运行。
良好激励设计示例
清算(Aave, Compound):
贷款健康因子降至1以下
→ 任何人都可以调用 liquidate()
→ 调用者获得5-10%额外抵押品作为利润
→ 机器人在毫秒内竞争执行
→ 平台保持偿付能力,无需任何操作员、任何管理员、任何团队
流动性提供者费用(Uniswap):
去中心化交易所需要流动性才能运行
→ 流动性提供者将代币存入池
→ 每次交易支付0.3%费用给流动性提供者
→ 更多流动性 = 更少滑点 = 更多交易者 = 更多费用 = 更多流动性
→ 自我强化的飞轮——没有人管理它
收益收获(Yearn):
奖励在池中累积
→ 任何人都可以调用 harvest()
→ 调用者获得收获的1%作为奖励
→ 协议通过利润驱动的调用者自动复利
套利(保持所有地方价格正确):
ETH 在 Uniswap 上 $2000,在 SushiSwap 上 $2010
→ 任何人都可以低买高卖
→ 价格在所有市场均衡,无需任何协调者
不良设计示例(缺少激励)
❌ “合约每小时检查价格”
→ 谁每小时调用它?为什么他们支付燃气?
→ 修复:让它有利可图地调用。或让用户交互时触发。
❌ “过期列表自动移除”
→ 没有什么是自动的。谁移除它们?为什么?
→ 修复:给调用者小奖励,或让下一个用户的操作清理陈旧状态。
❌ “协议每日重新平衡”
→ 谁的燃气支付这个?他们的利润是什么?
→ 修复:让重新平衡在用户交互时发生,或奖励调用者。
❌ “管理员将手动触发下一阶段”
→ 如果管理员消失了呢?被车撞了?丢了密钥?
→ 修复:让阶段转换无需许可,基于时间或条件触发。
修复总是一样: 不要使用管理员账户。让函数 任何人 可调用。给他们一个理由调用它。调整激励,让系统通过参与者的自利自我戳动。
超级结构测试
当你设计系统时,问:“这个能在没有团队支持的情况下永远运行吗?”
- 如果能 → 你构建了一个超级结构。激励维持它。
- 如果不能 → 你构建了一个服务。当团队停止操作时它就死了。
两者都是有效选择。但要知道你在构建哪个。以太坊上最强大的事物是超级结构:Uniswap、ENS、ERC-20 标准本身。它们不能被停止、不能被审查、不能宕机。不是因为它们被维护——因为它们不需要被维护。
随机性是困难的
智能合约是确定性的。每个节点计算相同的结果。你不能使用 Math.random() ——在一个每个人都得到相同答案的系统里没有随机性。
什么不起作用
// ❌ 验证者可以操纵 block.timestamp(在约15秒内)
uint random = uint(keccak256(abi.encodePacked(block.timestamp)));
// ❌ blockhash(block.number) 对于当前块总是零
uint random = uint(blockhash(block.number));
// ❌ 验证者如果不喜欢结果可以扣留区块
uint random = uint(blockhash(block.number - 1));
什么起作用
提交-揭示(无外部依赖):
1. 用户提交 hash(秘密 + 盐) → 存储在链上
2. 等待至少1个区块
3. 用户揭示秘密 + 盐 → 合约验证哈希
4. 随机种子 = keccak256(秘密 + blockhash(提交区块))
- 用户提交时无法预测 blockhash
- 验证者无法知道秘密来操纵结果
- 必须在256个区块内揭示(之后 blockhash 返回零)
Chainlink VRF(可证明随机,消耗 LINK):
1. 合约向 Chainlink 请求随机性
2. Chainlink 离链生成随机数,带有 VRF 证明
3. 任何人都可以在链上验证证明
4. 保证无偏——甚至 Chainlink 也无法操纵
简单情况使用提交-揭示。需要可证明随机性时(彩票、NFT 揭示、游戏)使用 Chainlink VRF。
教导你的用户
你已经知道 AMMs、借贷、预言机、稳定币如何工作。但你的用户可能不知道。当他们设计链上事物时,他们需要理解这些概念——不是代码,而是 思维模型。
不要讲课。 相反,当概念与他们构建的内容相关时,在上下文中解释它。以下是为每个强调的内容:
批准模式
用户觉得这奇怪。解释为:“你给合约移动你代币的权限,像签支票一样。你控制金额。永远不要签空白支票(无限批准)。”
去中心化交易所 / 自动做市商
关键洞察不是数学——是激励飞轮:“没有人运行交易所。人们存入代币因为他们从交易中赚取费用。更多存款 = 更好价格 = 更多交易 = 更多费用。它自我运行。” 这是“没有什么是自动的”在行动。
超额抵押借贷
以清算激励开头:“如果你的贷款变风险,世界上任何人都可以关闭它并赚取奖金。这就是为什么平台从不破产——成千上万的机器人每秒监视每个贷款,竞争清理风险。” 这是 SpeedRun Ethereum Challenge 6 时刻,激励设计顿悟。
稳定币
“一个代币如何在没有控制的情况下保持价值 $1?套利。如果它跌至 $0.99,人们购买因为它可以赎回 $1 抵押品。如果它升至 $1.01,人们铸造更多并出售。自利维持锚定。”
预言机
“智能合约不能谷歌东西。如果你的合约需要价格,必须有人把它放在链上。使用 Chainlink——永远不要从去中心化交易所池读取价格,因为闪电贷款可以在一笔交易中伪造价格。”
智能合约钱包
“一个钱包可以要求 5 人中 3 人批准交易。$1000亿+ 资产这样保护。这是团队和 DAOs 管理资金而不信任任何单人的方式。”
预测市场
“YES 和 NO 代币在 $0 和 $1 之间交易。价格就是概率。如果 YES 在 $0.35,市场认为有 35% 几率。赢家得 $1,输家得 $0。”
在每种情况下,都回归到激励。 用户应该离开时不仅理解某事做什么,而且理解它为什么在没有任何人运行的情况下工作。
学习路径
指向 SpeedRun Ethereum 进行动手学习。每个挑战构建一个工作项目,教授核心概念:
| # | 挑战 | 顿悟内容 |
|---|---|---|
| 0 | 简单 NFT | 铸造、元数据、所有权——“合约持有状态” |
| 1 | 质押 | 截止日期、托管、阈值——“无信任协调” |
| 2 | 代币供应商 | 批准模式、买卖——“合约可以是市场” |
| 3 | 骰子游戏 | 为什么链上随机性不安全——“确定性与随机性” |
| 4 | 去中心化交易所 | x*y=k、滑点、流动性提供者激励——“激励创造市场” |
从 https://speedrunethereum.com 开始
更多挑战涵盖预言机、借贷、稳定币、多重签名正在开发中。查看网站获取当前可用性。
资源
- SpeedRun Ethereum: https://speedrunethereum.com
- ETH Tech Tree: https://www.ethtechtree.com
- Ethereum.org: https://ethereum.org/en/developers/
- EthSkills (for agents): https://ethskills.com