一文读懂随机数对于Web3的重要意义
“随机性”指没有规律或不可预测的状态。比如扔硬币、指纹图案以及雪花的形状都是不可预测的。大自然中充满了随机性,但在计算机环境中却并非如此。计算机的一大特点是确定性,因此仅靠一组算法可能无法实现真正的随机性。
另外,虽然单个随机事件无法预测,但反复发生的事件出现不同结果的概率却是可以预测的。比如,掷一次色子的结果无法预测,但掷100次色子出现不同结果的概率是几乎可以准确计算出来的。
过去几十年中,随着互联网上经济、社会和文化活动日益频繁,有越来越多人呼吁在网上模拟出真实世界的不可预测性,并为数字化系统生成不可预测的结果。要实现不可预测性,就必须人为制造稀缺性,打造更稳健的安全机制,并执行完全中立的决策流程。
本文将详细阐述随机数的概念和类型,并探讨随机数对区块链和Web3带来的挑战。
随机数真的是随机的吗?
首先,我们要定义什么是随机数列。要实现随机数列,就必须满足以下条件:
- 不可预测——提前无法得知结果。
- 公正——每个结果出现的概率都必须相同。
- 可验证——结果必须可以独立验证。
- 防篡改——创建随机数的流程无法被任何一方操纵。
- 无法复现——创建随机数的流程无法复现,除非原始数列保留。
计算机是可预测的环境,由预设的电路、元件以及预定义的代码和算法组成,因此在特定条件下是有可能预测出计算机创建的随机数或随机数列的。计算机永远都能基于一个输入生成特定输出,这就好像你在计算器里输入2+2,结果永远都是4。因此,计算机无法生成真正的随机数。
为了解决这一问题,随机数生成器(RNG)通常会采用seed作为计算的初始值(输入),并用来生成计算结果。这个seed可以基于任何难以复现的信息创建,比如照片中捕捉的数据、一天中的时间点、用户鼠标移动轨迹或熔岩灯的运动轨迹。
然而,即使我们说随机数生成过程很难复现,也不意味着技术上完全没办法复现。如果使用多个难以复现的seed作为初始值来生成随机数,那么最终结果会相对更可靠,但仍有理由相信这些seed最终还是可能被破解。即使使用同样的算法来生成不同seed,结果仍然无法完全保障随机性。那么问题就来了:什么才是真正的随机数?
伪随机数生成器 VS 真随机数生成器
通常我们可以将随机数生成器分为两类,即:伪随机数生成器(PRNG)和真随机数生成器(TRNG)。PRNG采用数学算法来生成随机值,而TRNG则采用环境噪音等物理数据来生成随机数。
PRNG底层是一组算法,应用数学共识创建随机数列,来模拟真正的随机数。由于计算机是独特的系统,因此这些数字对人来说确实看上去像是随机数,但实际上它们可能存在某些不易察觉的规律,而通过大量统计分析就可能发现这些规律。
TRNG采用不可预测的物理数据,比如宇宙噪音、同位素放射性衰变以及无线电波中的静电,基于自然现象生成随机数。TRNG从物理现象中“提取”随机数,因此这种随机数生成方案被认为比计算机更加稳健且不可预测。但即使如此,TRNG使用的数据仍然有可能具有确定性。如果有人监测TRNG扫描的物理环境,那么他们也可以捕捉到同样的信号,并破解随机数列。
TRNG生成的随机数被破解的概率相对较小,但这种方案的成本也相对较高,因此无法大规模应用。PRNG相比TRNG还有一个优势,那就是可以复现。观察者如果知道数列的起始点,就可以复现同一个随机数列,因此就可以验证随机数的生成过程,这对于使用随机数的Web3应用来说非常有帮助。
随机数对区块链有哪些重要价值?
安全的随机数是区块链加密技术的基础,加密哈希函数是cryptocurrency钱包创建私钥的关键要素,保障任何人都无法破解钱包的私钥。据估计,比特币协议使用的哈希函数SHA-256中可能的私钥组合接近可观测宇宙中的原子数量。
分布式共识在底层受到了吞吐量和延迟的限制。吞吐量指一段时间内可以发送的消息数量;延迟指网络发送一条消息所需要的时间。一条公链上有几千个分布式的节点共同达成共识,要每个节点都向所有其他节点发送消息是不现实的。为了尽量减少达成共识所需的消息数量,比特币采用了工作量证明(PoW)作为随机数来源,决定哪个节点可以向区块链添加新区块。矿工需要解开高难度的计算题,才能成功向区块链添加新区块,因此多个节点在同一时间解出计算题的概率非常低,这样将降低网络达成共识所需发送的消息数量。
权益证明(PoS)系统中通常也使用随机数,以公平且不可预测的方式分配验证节点的任务。如果恶意攻击者可以操纵筛选流程中使用的随机数,那么就可以提高自己被选中的几率,并因此威胁整个网络的安全性。
由于区块链是公开透明的,所有参与者都可以看到所有输入和输出,因此也可能预测出随机生成的数列。比如,一些生成链上随机数的方案(如:基于区块哈希生成随机数)存在明显的安全漏洞。如果矿工或验证节点想要操纵随机数,就可以选择不发布对他不利的区块,从而影响随机数生成。这样做基本上等于不断重新掷色子,直到最终结果对自己有利为止。
而另一方面,链下RNG解决方案缺乏透明性,用户只能相信中心化的数据提供商不会操纵结果,而且无法判断随机数的真伪。随着RNG解决方案保障的价值越来越高,这两种方案都越来越令人担忧。
Web3的随机数
当谈到区块链游戏、NFT项目或数字艺术时,人们可能不会意识到随机数的重要性。Web3需要安全的随机数来源来实现公平且不可预测的结果,比如决定元宇宙里游戏道具的摆放位置;在生成式艺术的算法中添加变量;创建宝箱内容;铸造NFT;为赢家发放奖励;验证活动门票;或定期为DAO治理委员会选出成员。
这些系统都具有极大的实际价值,如果因为随机数方案存在漏洞而导致结果被操纵,那么一部分参与者将因为信息不对称而遭到不公平对待。这往往会导致恶性循环,最终导致经济活动和社会协调的底层经济机制和博弈机制完全崩溃。
要获得完全防篡改、不可预测且所有人都可以验证的随机数并非易事。然而,Web3行业本着提升公平性和透明性的初心,推出了许多应用和协议,并超越了Web2同类应用。随机数可以保障公平和公正性,并且可以安全地进行验证,这解锁了一系列创新应用,包括区块链游戏、NFT、去中心化治理、Web3社交媒体、慈善募款以及社交通证等。
Chainlink VRF
Chainlink可验证随机函数(VRF) 为RNG解决方案建立了行业标准,智能合约和链下系统可以利用链下计算和加密技术获得可验证的随机数来源。VRF将区块数据(注:当请求发起时区块数据未知)与预言机节点预先提交的私钥结合,生成随机数以及加密证明。应用只接受附加了有效加密证明的随机数,而只有防篡改的VRF流程才能生成有效的加密证明。
Chainlink VRF自发布以来已经完成了650多万次请求,输出公平公正的随机数。目前,Chainlink VRF为Avalanche、BNB Chain、以太坊和Polygon等各个区块链上超过3400个智能合约提供可验证的随机数。
Chainlink VRF拥有以下特质,因此得以成为行业标准:
- 不可预测——任何人都无法预测Chainlink VRF生成的随机数,因为在请求随机数时无法得知区块数据。
- 公平公正——基于均匀分布生成随机数,也就是说所有数字都有同样的选中概率。
- 可验证——用户可以在链上验证Chainlink VRF的加密证明,以保障接入Chainlink VRF应用的安全性。
- 防篡改——任何人,包括预言机、外部方或开发团队,都无法操纵随机数生成过程。如果VRF流程被操纵,节点就无法创建有效的加密证明,智能合约因此也不会接受随机数输入。
- 公开透明——由于代码是开源的,因此用户可以验证随机数生成过程。
Chainlink VRF不仅拥有上述特质,还建立了一系列安全机制,并基于用户反馈持续改进。正因如此,接入Chainlink VRF的应用可以利用防篡改的RNG生成可验证公平性且不可预测的随机结果,并解锁丰富的功能和体验。
如果你是一名开发者,并希望快速将智能合约连接至Chainlink VRF,请查看开发者文档并加入我们在Discord上的技术讨论群。如果你希望安排一次电话会议具体讨论集成细节,请点击此处联系我们。