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

接着共识算法从区块链中找到已经成熟的票(Ticket)开始打包 , 由于共识打包区块操作只在节点本地执行 , 所以它可以读取本地存储的私钥 , 算出一个私密哈希(privHash)并将这个参数放入到挖矿交易中:

privHash =

hash(privateKey:index:hash(randNum))

最后 , 智能合约收到挖矿交易 , 对比hash(privHash)和pubHash的值 , 两者一致挖矿交易成功 , 对应的节点获得挖矿奖励 。 否则挖矿交易执行失败 。

最后总结一下 , SPOS共识的实现结合了随机数 , 由于一般情况下是无法预测其它节点的共识信息 , 所以也无法获取到它的共识随机数 。

并且系统设定私密哈希(privHash)不能提前泄露 , 就算有恶意矿工自己提前暴露 , 它对应的票也会被作废 , 同时本金会被冻结较长时间(2天以上) 。

再加上系统设定票需要经过12小时的成熟期后才可以参与挖矿 。 这些条件组合起来 , 系统的随机数几乎是无法被操控的 。 这样当开发者实现的DApp中需要保证公平随机时 , 就可以直接使用系统提供的这个安全的随机数了 。

推荐阅读