第 31 讲:预言机——链下数据的信任边界
链的封闭性不是缺陷而是确定性的代价。这一讲说明为什么「外部世界的事实」原则上无法被密码学证明、因此预言机只能被设计成作恶不划算而不能被证明正确;用第 30 讲同一把「信任假设」尺子给预言机分类;推导 TWAP 把操纵成本抬高了多少倍;并指出最危险的失效模式是预言机忠实地报告了一个真实但不具代表性的价格。
链的封闭性不是缺陷而是确定性的代价。这一讲说明为什么「外部世界的事实」原则上无法被密码学证明、因此预言机只能被设计成作恶不划算而不能被证明正确;用第 30 讲同一把「信任假设」尺子给预言机分类;推导 TWAP 把操纵成本抬高了多少倍;并指出最危险的失效模式是预言机忠实地报告了一个真实但不具代表性的价格。
从「色盲朋友与两个球」建立直觉,到 Schnorr Sigma 协议的完整三性质证明:知识提取器为什么定义了「知识」,模拟器为什么定义了「零知识」;Fiat-Shamir 变换如何把交互证明变成签名;以及通用 ZK 的简洁性从哪来——Schwartz-Zippel 引理如何让「检查一个点」等价于「检查整个多项式」。
伪匿名的致命性质是回溯性——一次关联暴露全部历史;链分析的四类启发式;CoinJoin、环签名加隐蔽地址、零知识池三条技术路线的原理与各自的失效条件;匿名集为什么是隐私的唯一度量;以及「可审计的隐私」在技术上意味着什么。
MEV 为什么无法被消除只能被重新分配;套利与清算为什么是良性的而三明治是纯粹的价值提取(含一个可验算的完整数值例子,说明滑点容忍度如何直接决定被抢走多少);MEV 对共识安全的真实威胁;以及 PBS、加密内存池、批量拍卖三条缓解路线。
合约漏洞不是粗心,而是抽象泄漏——开发者脑中的模型与 EVM 实际语义之间的缺口。按五类假设失效来组织:控制流、权限身份、数值、外部数据、经济博弈;闪电贷为什么不是漏洞而是「移除了资金门槛这个隐含防御」;以及形式化验证能保证什么、不能保证什么。全课的收束。
从零实现一棵带域分隔的 Merkle 树、包含证明的生成与验证,并动手复现两个真实漏洞:比特币的 CVE-2012-2459 重复叶子攻击,以及缺少域分隔时的第二原像攻击。附完整测试与参考实现。
实现一条完整的 UTXO 链:交易结构与序列化、签名与验签、UTXO 集合维护、双花检测、区块组装与链验证,以及一个栈式脚本解释器。含五个必须能复现的攻击测试。
两部分:实现 PoW 的挖矿与难度调整并用模拟验证出块间隔的指数分布;实现一个简化 PBFT 并用测试证明它在 f 个拜占庭节点下仍然安全、在 f+1 个时会失败。含自私挖矿的状态机模拟。
实现一台可运行的 EVM 子集:栈、内存、存储、Gas 计量、JUMPDEST 校验、调用与回滚语义。用它编译并跑通一个简单合约,然后亲手复现三个真实的定价与语义陷阱。
扩容单元的动手实验:实现交互式二分挑战并亲手把百万步的争议压缩到一步、实现纠删码与数据可用性采样并做出编码错误证明、计算 TWAP 把操纵成本抬高了多少倍。三个任务分别对应 Rollup 安全的三根支柱:可裁决、可获取、可信输入。