你以为区块链上最可靠的是“不可篡改”。其实最可靠的东西藏在一个你从来没听过的地方:一群数学家正在用五十年前发明的方法,证明代码里的bug永远不会出现。
老师有没有告诉你,区块链上最值钱的不是代币——是一行被数学证明过永远不会出错的代码
2026-07-26 · 🕐 约 9 分钟
由 丢笔哥 发布
区块链想用数学替代信任,但数学本身也需要被信任——你能把信任一层一层往下推,但永远推不到底。
想象一下:你写了一段程序,然后在它上线之前,不是跑一百遍测试——而是用一个数学证明告诉全世界:这段代码在所有可能的情况下都不会出错。
:::story title="那个价值千万的逗号"
2017年,以太坊上一个叫Parity的多签钱包合约因为一个被删掉的库函数,导致价值超过1.5亿美元的以太币被永久锁定。不是被盗了——是所有人包括创建者都无法取出来。原因?合约里一段代码引用了一个共享库,有人不小心把这个库“自杀”了,所有依赖它的钱包全部变成死合约。如果当时有人对这段依赖关系做过形式化验证,系统会在依赖库被删之前就发出警报。但没人做。不是技术上做不到,是大家觉得“测试已经过了,不会有问题”。那1.5亿美元至今还锁在那几个地址里。每次以太坊价格创新高,就有人去查那些地址的余额,然后叹一口气。
:::
数字世界里最贵的东西不是代码——是“证明这段代码不会错”
你有没有想过一个问题:银行转账错了可以打电话撤销,支付宝被盗刷了可以申诉理赔。但如果智能合约里出现一个bug,转走的钱就是真的转走了——没有人能帮你“回滚”。这不是区块链的缺点,是它的底层设定:代码就是法律。那问题来了:你怎么保证这段“法律”没有漏洞?传统软件行业的答案是——测试。写一万个测试用例,覆盖所有你能想到的场景。但你知道这有什么问题吗?你只能测试你知道的东西。真正的灾难永远来自你不知道你不知道的东西。2016年那个叫The DAO的智能合约被黑客转走了360万个以太币,不是因为测试不够,是因为设计者从没想过“有人会利用递归调用的时间差”。测试能抓住你想到的错误。数学证明能抓住你没想到的错误。
数学家发明了一种“代码的安全证书”——比你想象的老一百年
1969年,英国计算机科学家托尼·霍尔提出了一套叫“霍尔逻辑”的方法,用来数学化地证明一段程序在执行前后满足某个性质。你可以把它理解为:不是让程序跑一遍看看对不对,而是用数学推导的方式证明它在所有可能的情况下都是对的。这件事当时听起来像天书。但五十年后,它变成了区块链上最值钱的技术之一——叫“形式化验证”。以太坊基金会每年花几百万美元请专业团队做这件事。为什么?因为以太坊上跑着上千亿美元的资产。一个bug等于一场金融地震。常规测试像在棋盘上走几步看看会不会踩雷。形式化验证像是在棋局开始之前用数学证明:你的每一步都不会走到雷区。同样的原理,NASA在送宇航员上太空之前,也是用形式化验证来证明飞船控制软件不会在半空中死机。
为什么不是所有智能合约都在用这套方法?因为它比你想象的贵一百倍
形式化验证有一个反直觉的特点:证明一段代码正确的时间,通常比写这段代码的时间长三到五倍。一个简单的代币合约,程序员三天能写完。但要完整验证它没有bug,可能需要一个专业团队干两周。这就像你造一栋房子花了三个月,但做安全检测花了一年。大部分项目等不起。更扎心的是:形式化验证本身也需要人来写“证明”。如果写证明的人犯了错呢?你证明了A合约在条件B下不会出bug,但万一条件B本身就不完整呢?这就是“证明的证明”问题——你永远需要信任写证明的那个人。你看,区块链想用数学替代信任,但数学本身也需要被信任。这才是这个领域最迷人又最无奈的地方:你能把信任一层一层往下推,但永远推不到底。
你每天都在做一个类似“形式化验证”的事——只是你没意识到
你出门之前摸口袋检查钥匙、手机、钱包——这就是一种形式化验证。你不是在“测试”,你是在用一个固定的检查清单(钥匙?有。手机?有。钱包?有。)来证明你出门不会出问题。同样的,飞机起飞前飞行员要逐项检查几十个开关——这不是测试,是形式化验证:通过穷举所有可能出错的条件,来数学化地证明这架飞机在所有预设场景下都是安全的。区块链上做形式化验证的人,做的事跟你摸口袋检查钥匙一模一样。区别只是:你的钥匙就三样,一个智能合约的“钥匙”可能有几百个状态变量。你要检查的不是“有没有带手机”,而是“有没有一个状态能让攻击者在不付钱的情况下拿走你的钱”。原理一样,只是规模和代价差了几个数量级。
最终你会发现:区块链努力消灭的东西,恰恰是它最需要的东西
区块链的终极理想是“trustless”——不需要信任任何人的系统。但形式化验证的存在本身就在说一件事:你仍然需要信任写验证工具的人、信任审阅证明的人、信任定义“正确”是什么的人。区块链没有消灭信任。它只是把所有分散的信任集中到了一个更锋利的点上——从“我相信这个银行”变成了“我相信这段代码和验证这段代码的数学家”。这是进步吗?是的。因为你至少可以审计代码,但你审计不了一家银行的内部操作。但这也是一个永恒的提醒:人类文明不可能完全脱离信任运行。你最多只能把信任推到离你最远的地方——推到那行被数学证明过的代码里,推到那个你永远看不到但理论上可以去验证的证明文件里。
小测验
1. 形式化验证和普通软件测试的最大区别是什么?
- A. 形式化验证更快
- B. 测试只能抓到“想到的”错误,形式化验证用数学推导覆盖所有可能情况
- C. 形式化验证更便宜
- D. 没有区别
查看答案
正确答案:B2. 为什么不是所有智能合约都用形式化验证?
- A. 技术不成熟
- B. 验证时间通常是写代码的3-5倍,成本太高
- C. 区块链不需要安全
- D. 没有人会做
查看答案
正确答案:B3. 形式化验证的存在说明了什么关于区块链的根本矛盾?
- A. 区块链没有矛盾
- B. 区块链想消除信任,但验证本身仍然需要信任写证明的人
- C. 数学已经不需要信任了
- D. 代码永远不会错
查看答案
正确答案:B关于丢笔哥
丢笔哥不是一个具体的人——它是一种态度。在信息爆炸的时代,用最直白的语言,把硬核知识讲透。覆盖金融证券、AI 前沿、Web3、东方智慧。
一支笔丢在桌上,一堂课就此开始。
📬 订阅丢笔哥 →📖 继续阅读
🤖 AI 前沿📬 不想错过下一堂丢笔课?
每周一篇硬核科普,用最好玩的方式讲最硬核的知识。
不卖课、不荐股、不画饼。
💬 讨论区