“随机性”指没有规律或不可预测的状态。比如扔硬币、指纹图案以及雪花的形状都是不可预测的。大自然中充满了随机性,但在计算机环境中却并非如此。计算机的一大特点是确定性,因此仅靠一组算法可能无法实现真正的随机性。 另外,虽然单个随机事件无法预测,但反复发生的事件出现不同结果的概率却是可以预测的。比如,掷一次色子的结果无法预测,但掷100次色子出现不同结果的概率是几乎可以准确计算出来的。 过去几十年中,随着互联网上经济、社会和文化活动日益频繁,有越来越多人呼吁在网上模拟出真实世界的不可预测性,并为数字化系统生成不可预测的结果。要实现不可预测性,就必须人为制造稀缺性,打造更稳健的安全机制,并执行完全中立的决策流程。 本文将详细阐述随机数的概念和类型,并探讨随机数对区块链和Web3带来的挑战。 随机数真的是随机的吗? Chainlink VRF拥有以下特质,因此得以成为行业标准: 不可预测——提前无法得知结果。 公正——每个结果出现的概率都必须相同。 可验证——结果必须可以独立验证。 防篡改——创建随机数的流程无法被任何一方操纵。 无法复现——创建随机数的流程无法复现,除非原始数列保留。 计算机是可预测的环境,由预设的电路、元件以及预定义的代码和算法组成,因此在特定条件下是有可能预测出计算机创建的随机数或随机数列的。计算机永远都能基于一个输入生成特定输出,这就好像你在计算器里输入2+2,结果永远都是4。因此,计算机无法生成真正的随机数。 为了解决这一问题,随机数生成器(RNG)通常会采用seed作为计算的初始值(输入),并用来生成计算结果。这个seed可以基于任何难以复现的信息创建,比如照片中捕捉的数据、一天中的时间点、用户鼠标移动轨迹或熔岩灯的运动轨迹。 然而,即使我们说随机数生成过程很难复现,也不意味着技术上完全没办法复现。如果使用多个难以复现的seed作为初始值来生成随机数,那么最终结果会相对更可靠,但仍有理由相信这些seed最终还是可能被破解。即使使用同样的算法来生成不同seed,结果仍然无法完全保障随机性。那么问题就来了:什么才是真正的随机数? 伪随机数生成器 VS 真随机数生成器 通常我们可以将随机数生成器分为两类,即:伪随机数生成器(PRNG)和真随机数生成器(TRNG)。PRNG采用数学算法来生成随机值,而TRNG则采用环境噪音等物理数据来生成随机数。 PRNG底层是一组算法,应用数学共识创建随机数列,来模拟真正的随机数。由于计算机是独特的系统,因此这些数字对人来说确实看上去像是随机数,但实际上它们可能存在某些不易察觉的规律,而通过大量统计分析就可能发现这些规律。 (责任编辑:admin) |