区块链中的随机数

分布式账本的核心问题就是随机选择出块人,随机性要被全网认可,不可被操纵更不可被预测。

POS 这里有一点比PoW的方案要好就是,要实现攻击,先得成为持币大户,如果攻击成功币价大跌,攻击者也会承受最大的损失。(精髓)

Ouroboros协议

    密码学手段:

    1.承诺(Commitment)和打开(open)

    2.简单随机数协议(Coin-Tossing)

    3.可验证秘密共享(Verifiable Secret Sharing)

最后综合一下整个协议流程:

  1. 在提交阶段,每个节点本地生成随机数和对应的承诺,同时把随机数拆成n份匹配其他的投票节点, 并且用相应投票节点的公钥对每一份信息进行加密,保证它只能被对应的节点解密, 然后把承诺和加密后的拆分信息一起广播给区块链。

  2. 当大家收到大部分节点的承诺和拆分信息后,就进入打开阶段,每个节点把自己的打开发到链上。

  3. 然后是恢复阶段,每个节点检查是否有节点发送了承诺但没有发送打开, 如果有,则解密自己对应的那份拆分信息并发布,然后根据大家发布的拆分信息恢复出该节点的随机数。

  4. 现在大家就有了所有节点的随机数,把它们异或到一起,最终得到了一个一致的随机数,并用它来选择下一轮的出块人。

  5. images/epoch.png


欢迎留言