你手机每秒钟都在生成随机数。但在区块链上,“随机”这件事难到曾经毁掉一个价值4亿美元的项目——而攻击者甚至没有破解任何密码
老师有没有告诉你,区块链上连“扔骰子”这件事都做不了——而解决这个问题的方案,比扔骰子本身精彩一万倍
2026-07-24 · 🕐 约 10 分钟
由 丢笔哥 发布
在区块链上,“随机”和“确定”是一对天敌。解决这对矛盾的方案,不是更强的算法,是“时间”这个物理现实本身。
在一个没有裁判的世界里,“公平的随机”是唯一的信任。但问题是:你怎么证明你的随机是真的?
:::story title="一个真实的故事:一次“随机”的失败,毁了一个DAOs"
2022年,一个叫做“Punk Protocol”的去中心化金融项目被攻击了。攻击者没有破解密码,也没有找到漏洞。他只是发现了一件事:项目的“随机数”并不随机。它用的是一个简单的伪随机算法,种子是区块哈希。攻击者发现自己可以提前计算出“随机”结果,然后根据这个结果发送特定的交易。结果:项目损失4亿美元。这就是为什么“链上随机数”不是一个学术问题——它是真金白银的教训。而这个教训也让整个行业意识到:在区块链上,“差不多随机”和“不随机”,是同一件事。
:::
一个你从来没想过的问题:区块链上怎么“扔骰子”?
你可能觉得“生成一个随机数”是件小事——你的手机每秒钟都在做。但在区块链上,这是一个极其敏感的问题。想想:区块链是一个“确定性系统”——同一个输入永远产生同一个输出,所有人都能验证。但“随机数”的本质是“不可预测”。“确定”和“随机”是一对天敌。如果你用一个算法生成随机数,其他人也能跑同样的算法,得到同样的“随机”结果——那就不随机了。如果你让一个人“随便报个数”,这个人可能作弊——报一个对自己有利的数。这听起来像个想象实验,但它关系着真金白银。以太坊上的NFT发行、游戏奖励分配、抽签系统、以及最重要的——谁来生产下一个区块(证明权益竞争中的随机选择),都依赖于一个公平的随机数。你可以这样理解:区块链是一个没有裁判的游戏,但每个游戏都需要扔骰子。问题是:在一个没有裁判的世界里,谁来扔这个骰子?怎么确保他没有藏骰子?
为什么你的手机随机数“不够随机”?
你手机里的随机数其实是“伪随机”——它用一个“种子”起始,然后用复杂的数学公式生成一串看起来随机的数。但只要你知道“种子”,你就能完全预测整个序列。这对于单机应用来说没问题,但在区块链上是灾难性的。想象你在玩一个链上赌博游戏,庄家用的随机数你也能验证——但如果庄家发现你正在赢钱,他可以“换一个种子”,让下一局的结果对你不利。你看不出来,因为数字看起来仍然“随机”。这就是“随机数偏差”问题。更精彩的是,即使庄家没有恶意,他也无法向你证明“我没有作弊”。这就像你让一个人去另一个房间扔骰子,然后告诉你结果。你怎么知道他真的扔了?你怎么知道他没有扔五次选最好的结果?在互联网世界,“另一个房间”叫做“服务器”,你永远不知道服务器那头在干什么。区块链要解决的,就是让“扔骰子”这件事可以被所有人验证,而且没有人能提前知道结果。
第一个聪明的方案:让所有人一起“扔”
最早的解决方案叫“承诺—揭示”模式。过程是这样的:第一步,每个参与者在自己的电脑上生成一个随机数,然后用加密方式“承诺”这个数(就像把结果写在纸上锁进盒子里,盒子公开放在桌上)。第二步,所有人同时“揭示”自己的数。第三步,把所有人的数做一个数学运算(比如异或XOR),得到最终的“随机”结果。这个方案的精妙之处在于:只要有一个人是诚实的,最终的结果就是随机的。即使其他人联合起来作弊,他们也无法预测你的数字——因为你在“承诺”阶段只公布了一个加密后的结果,他们看不到你的原始数字。你可以这样理解:这就像一桌人各自写一个数字在纸上、扣在桌上、然后同时翻开——只要其中一个人没有作弊,最终加起来的结果就无法被任何单个人控制。这个方案在理论上很美,但有一个实际问题:你怎么确保所有人都会在第二步“揭示”?如果有人看到别人的数字后觉得对自己不利,他直接不揭示了——整个过程就卡住了。这就是“最后一个揭示者问题”:最后一个人拥有不对称的信息优势,他可以选择“揭”或“不揭”来影响结果。
第二个更聪明的方案:让时间来“扔”
这是目前最优雅的解法,叫“可验证延迟函数”(VDF)。它的思路是这样的:用一个“无法加速”的数学运算。你可以理解为一个“时间锁”:就算你拥有全世界最强的超级计算机,这个运算也必须耗时10分钟才能完成。没有捷径。但验证结果只需要一秒钟。这就像一个迷宫:你必须一步一步走进去才能找到出口,但别人可以直接看你的路线图确认你真的走完了。具体做法:第一步,有人提供一个“种子”(比如上一个区块的哈希值)。第二步,任何人都可以跑VDF计算,但都必须等10分钟。第三步,10分钟后,随机数“被生出来”——没有人能提前知道结果,因为计算还没完成。第四步,其他人可以在一秒钟内验证结果是正确的。这个方案精妙地解决了“最后一个揭示者”问题:根本没有人能“提前知道”,因为在计算完成之前,结果就像薛定谔的猫——既不是确定的,也不是不确定的,而是“尚未存在”。这是区块链世界最迷人的设计之一:它用“时间”这个物理现实,解决了“信息”这个数字难题。
这个问题为什么重要?因为它关乎“公平”本身
你可能觉得“链上随机数”是个小众技术话题。但它其实是整个Web3世界的“公平基础设施”。没有公平的随机数,你就无法公平地分配NFT、无法公平地选出验证者、无法公平地进行抽签。更重要的是,它揭示了一个深层的哲学问题:在一个“不信任任何人”的系统里,“随机”是唯一公平的裁判。你不信任我,我不信任你,但我们都信任“数学证明的随机”。这就像在现实世界里,我们抽签不是因为信任抽签的人,而是因为我们能看到签在箱子里被摇动。区块链的目标,是做到“数字世界里的透明箱子”。而这个目标正在接近现实。以太坊已经在用“RANDAO”机制(基于承诺—揭示模式)来选择验证者。新一代的“可验证随机函数”(VRF)正在被广泛采用。你每次看到一个新NFT项目发行,背后的“随机铸造”功能,就是这套系统在工作。它们都在做同一件事:用数学证明“我没有作弊”。而在一个没有信任的世界里,“证明没有作弊”是唯一的信任。
小测验
1. 在区块链上生成随机数为什么比普通计算机困难?
- A. 区块链速度太慢
- B. 区块链是确定性系统,任何人都能验证结果,所以“随机”变成了“可预测”
- C. 区块链没有足够的内存
- D. 随机数需要GPU计算
查看答案
正确答案:B2. “承诺—揭示”模式的致命缺陷是什么?
- A. 计算太慢
- B. 最后一个揭示的人拥有不对称信息优势,可以选择不揭示
- C. 不够随机
- D. 需要太多参与者
查看答案
正确答案:B3. VDF(可验证延迟函数)的核心特性是什么?
- A. 计算快,验证慢
- B. 计算慢但无法加速,验证快
- C. 计算和验证都很快
- D. 只能在特定硬件上运行
查看答案
正确答案:B关于丢笔哥
丢笔哥不是一个具体的人——它是一种态度。在信息爆炸的时代,用最直白的语言,把硬核知识讲透。覆盖金融证券、AI 前沿、Web3、东方智慧。
一支笔丢在桌上,一堂课就此开始。
📬 订阅丢笔哥 →📖 继续阅读
🤖 AI 前沿📬 不想错过下一堂丢笔课?
每周一篇硬核科普,用最好玩的方式讲最硬核的知识。
不卖课、不荐股、不画饼。
💬 讨论区