Realtime Price(实时价格):

亚马逊支持,悬赏10万美金就为这一谜题!一旦破解,将影响以太坊、EOS 未来

作者:coindesk中文网

发布时间:2019年8月14日

网络来源:币世界

在区块链行业,随机数虽小,但一刻也不容忽视。

去年 EOS 菠菜类游戏 Eosbet 就曾因随机数攻击损失了高达 18 万个 EOS,EOSDice、FFgame、FairDice 等也深受其害。此外,以太坊在由工作量证明(PoW)转向权益证明(PoS)过程中的安全性保障,也与随机数问题息息相关,比如防止 PoS 验证节点利用随机数进行作恶等。事实上,以太坊 2.0 的安全性确实是业内人一直关注的话题。
以太坊为此做了巨大的努力。近日,以太坊基金会联合 Interchain 基金会、协议实验室(Protocol Labs)、Synopsys 等,在亚马逊云服务(AWS)的帮助下发起了一个求解 VDF(可验证延迟函数) 的 FPGA 编程竟赛(详见文末),赏金高达 10 万美元(约合 70.64 万人民币),旨在解决随机数“不随机”的问题。谜题如下:
由给定的 1024-bit 输入 x,尽可能快地计算出 VDF ‘ h=x^(2^t) mod N ‘。

图|参数 t、N 的取值,来源:AWS 官网)
VDF 是什么?与区块链有何关系?简单来讲,VDF 是一种抗并行计算的谜题函数,其中一个用处就是保证‘很高安全性的随机产生’,并且其他节点可以以很低的成本去验证这个随机数的正确性。尽管破解这一难题并非易事,不过一旦解决,必将会对以太坊乃至整个区块链生态产生积极的影响。或多或少,这个谜题在一定程度上影响着以太坊 2.0 的未来
区块链与随机数

“随机数,是专门的随机试验的结果。”这是百度百科对随机数下的定义。但就是这个小小的随机数,事实却证明,它对区块链的安全性至关重要,甚至可以直接决定一个项目的生死

(来源:Pixabay)

真正的随机数只存在于物理世界中,比如掷骰子的结果。但从目前来看,区块链世界没有真正的随机数。长期以来,密码学家一直在研究生成一个真正的随机数,但即使在一台单独的计算机上也很难实现,区块链网络中随机数的生成则难上加难。随机数是区块链游戏的灵魂,但很多区块链游戏因随机数漏洞面临着生死的危机。

很不幸,EOS 深受其害

去年,“随机数”的概念一度因 EOS 游戏类 DApp 屡屡被黑而火了起来。菠菜类游戏 Eosbet、FFgame 和 EOSDice 就是三个实际的惨例。
2018 年 9 月 12 日,菠菜类游戏 Eosbet 遭受随机数攻击,损失约 42000 个EOS。Eosbet 游戏在开奖时使用了 EOS 中一个名为 ref_block_num 的随机数因子,但在游戏开奖时合约中还是读取了老区块中的值,因此导致随机数被预知,进而被攻击。
仅仅过了一个月,Eosbet 便再次遭受随机数攻击,损失高达近 14 万个 EOS。尽管 Eosbet 开发者在修改了上一次的问题后引入了一个新的参数,将用户余额作为随机数因子,但攻击者却利用这一点模拟了完全一样的 DApp 代码,然后不停修改余额去尝试解开开奖逻辑,直到碰撞出开奖结果,进而成功实施了攻击。

(来源:Pixabay)
无独有偶,2018 年 11 月 4 日,同为菠菜类游戏的 EOSDice 也遭受随机数攻击,损失近 2500 个 EOS。攻击者获取正确的随机数种子,通过伪随机算法计算出了游戏结果,然后根据结果下注,保证了百分百的胜率。
一周后,攻击者再次攻击了 EOSDice,此次损失近 4900 个 EOS。攻击者在知道伪随机算法和种子来源的情况下,通过改变种子的数值让伪随机算法计算出自己下注的游戏结果,从而保证了百分百的胜率。
如果选出一个史上最倒霉的 DApp,FFgame(一款 EOS 竞猜类游戏)无疑是一个很合适的选择。2018 年 11 月 8 日,FFgame 游戏在尚未正式运营时就遭受了随机数攻击,损失 1331 个 EOS。攻击者通过部署攻击合约并在合约中使用与 FFgame 相同的算法计算随机数,随后立即在 inline_action 中使用随机数攻击合约,导致中奖结果被“预测”,从而达到了超高中奖率。
此类事件数不胜数,可以说随机数的一小步,就是区块链安全的一大步

随机数与以太坊 2.0

不只 EOS 饱受随机数问题的困扰,以太坊同样也不例外。
如今以太坊正大步向前,迈向以太坊 2.0 阶段,这其中一个必经的过程就是由 PoW 转向 PoS,但 PoS 并没有想象中的那样安全,会存在验证节点作恶的行为。因为在 PoS 系统中,网络上的任何节点都可以是验证者,但只有一定数量的正式验证者,同时这些验证者是随机选择的一旦随机,就存在作恶的可能。
以太坊 Go-Ethereum 核心开发者戎佳磊(Gary Rong)向 CoinDesk 中文 表示:
“以太坊 2.0 提出了分片技术(Sharding)的概念,原先所有的交易都需要被整个网络的节点验证,节点越多,网络就越安全。但在这种模式下,整个网络的节点所能够处理交易的数量是固定的。Sharding 的理念是,让网络节点的一个子集去验证一个分片的交易。这样随着节点数目的增加,整个网络可以水平扩展。但这也就意味着原先一笔交易需要 N 个节点处理,现在是 N/L(L 是 shard 的数目)个,安全性是下降的。
此外,Gary 还表示,“为解决这个三难问题,其中一种思路就是让 N 个节点随机划分到 L 个 shard(分片) 中。假设整个网络最基本的安全假设是网络中至少超过 1/2 节点是诚实节点,那么一个 shard 中被随机分配的节点数目超过一定数量,例如 P,那么这个 shard 中恶意节点超过 1/2 的概率就会小于 1/2^(x)(可以根据概率论进行计算)。但其中最关键的一步就是要保证验证者(validator)的随机是“真正随机”,而现在的很多随机方法都易受控制(比如矿工)。”
也正是为了致力于解决这一作恶的问题,以太坊基金会才联合了 Interchain 基金会、协议实验室(Protocol Labs)、Synopsys 等,在亚马逊云服务(AWS)的帮助下,发起的求解 VDF 的 FPGA 编程比赛,目的就是想解决这一问题

(来源:Pixabay)
VDF 的计算很大程度上是串行的,所以给定一个函数,求解函数的值需要至少经过一定的时间。
对此,区块链资深开发者郑旗表示,“这种函数用于区块链技术中,有很多好处,主要是提升区块链的安全性,比如用于随机数的生成,攻击者知道随机数的结果必须经过很长时间,想要再回去作恶修改随机数输入的可能性很低,这就保证了区块链中随机数生成的安全性。”
针对 VDF 对以太坊的影响,Gary 表示,“VDF 其中一个用处就是保证‘很高安全性的随机产生’,并且其他节点可以以很低的成本去验证这个随机数的正确性。有了 VDF,以太坊的验证者就会以‘高安全性的随机方式’被分配到 shard 上,也就一定程度上实现了‘shard 之间共享网络安全’的目标,降低了验证者作恶的可能性。
此外,Gary 还谈到了本次 FPGA 编程比赛设置的初衷,“VDF 期望把计算目标跟计算时间 T 较为严格地绑定在一起,所以现在大家想要找到一个数学模型,找到一个能够符合上述要求的计算公式。目前较为认可的方案是基于阶数未知的阿贝尔群(Abelian Group),这是高阶数学的东西,’h = x ^(2 ^ t)mod N’ 只是其中一个 VDF 的候选公式。所以这次 FPGA 编程比赛的目的是希望有人能够最大程度地去做优化。”

将对区块链生态产生积极影响

“一旦这一难题得以解决,必将对以太坊、EOS 等公链生态产生积极的影响。可以从两方面来解释:从基础链方面讲,可以提速、降低能耗、增加安全性;从 DAPP 方面讲,目前不论是以太坊还是 EOS 都没有真正的随机数(EOS 上的菠菜类游戏深受其害就是实证),VDF 可以较好、较安全地解决此类问题。”志顶科技技术总监吴忠信说。
CyberMiles 首席科学家 Michael Yuan 对此表示了认可,“VDF 算法使得用‘假随机数发生器’也能产生安全的随机数,而且是用去中心化的方法,不需要超级节点,未来会赋能更多新的应用。比如菠菜类游戏,必须有安全的随机数。现在菠菜类游戏,尤其是 EOS 区块链上的菠菜类游戏经常受攻击,就是随机数可以被猜中。以太坊 2.0 的分片与各种奖励机制,也是要求做恶的人不能很简单地猜出随机数。”
区块链资深开发者郑旗认为,“此次以太坊基金会等组织悬赏重金面向全社会征集 VDF 函数的最快 FPGA 解决方案,其实是想从侧面证明 VDF 函数的安全性。理论上 VDF 函数求解由于其对并行计算的抵抗,所以它计算结果和时间因素是有关系的。通过设计 FPGA,求解该谜题的最快解,理论上找不到低于预设时间数量级的解。这场比赛的最终结果可以佐证 VDF 函数的安全性。因此,将这样一个安全的技术应用于区块链技术,就可以解决区块链中的随机数生成攻击、Nothing-at-stake 攻击等问题,会对区块链的发展会产生非常深远的影响。”
但这种数学问题都很难,因为连有没有解都不知道。”Michael Yuan 补充道。

这个谜题,由你破解!

既然这个 VDF 谜题对区块链行业如此重要,那热爱区块链的你又如何参与呢?
据官方网站介绍,本次 FPGA 编程竞赛周期历时 5 个月,共分为两轮
第一轮时间为 2019 年 8 月 1 日 – 2019 年 9 月 30 日,第一轮获胜者(计算结果具有最低延迟的参赛者)将根据基于基线(初始设定为 50 ns)的改进效果获得赏金(3000 美元/ns)。
第二轮时间为 2019 年 10 月 15 日 – 2019 年 12 月 30 日,第二轮的起始基线将根据第一轮的结果设定。详细时间线如下图:

图|FPGA 编程竞赛时间线,来源:FPGA 官网)

报名链接及更多细节,请参考 FPGA 编程竞赛官方网站:
https://supranational.atlassian.net/wiki/spaces/VA/pages/36569208/FPGA+Competition
只要你热爱区块链技术,只要你想挑战自己的极限,只要你想为区块链生态加一把暖火,无论你是谁,都可以积极参与。希望通过我们的共同努力,让区块链生态变得越来越繁荣!

相关文章:

比特币布道者

比特币的坚定信仰者!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注