随机数漏洞问题严重制约EOS、波场、ETH发展,比特元更安全( 四 )

1. 区块链多节点之间智能合约执行结果是要求强一致的 , 如果合约从外部读取数据 , 是很有可能获取到不同结果的(比如网络原因导致有的节点读取正常 , 有的返回错误)进而导致分叉 。

2. 区块的哈希可以被控制 , 导致随机数被控制 。 比如EOS , 没有提供很好的随机数算法 , 所以很多Dapp开发者会自己封装自认为完美的随机数算法导致随机数被预知 。

例如以下两个例子:

  1. Eosbet第一次随机数攻击:这个游戏在开奖时使用了EOS中一个名为ref_block_num的随机数因子 , 但是在游戏开奖时合约中还是读取了老区块中的值 , 导致随机数被预知 , 进而被攻击 。

  2. Eosbet第二次随机数攻击:在修改了上一次的问题后 , 开发者再引入了一个新的参数:用户余额作为随机数因子 。 然而攻击者利用这一点 , 模拟完全一样的DApp代码 , 然后不停修改余额去尝试开奖逻辑 , 直到碰撞出开奖结果 , 进而又遭到攻击 。

还有其它很多EOS上的游戏遭受了类似手段的攻击 , 造成大量的损失 。

推荐阅读