EOS、波场随机数安全问题频发dapp成黑客提款机( 四 )

目前的区块链大体有如下实现方案:

1. 合约中调用外部中心化的随机数发生器获取随机数;

2. 使用区块hash中的某些值作为随机数 。

但是这两种方案都有非常明显的弊端 , 原因在于:

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

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

例如以下两个例子:

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

    推荐阅读