• 共识算法之开篇


        初识共识算法,还是在关注比特币的时候。共识算法是区块链的核心,因此想要真正弄懂什么是区块链,首先就要理解什么是共识算法,为什么要用共识算法。

        共识算法并不是伴随着比特币的产生而出现的。

    早在 1997年 Adam Back 就设计出了Hashcash,可以认为是工作量证明的雏形,最初是为了预防垃圾邮件的。 

    2009年Satoshi Nakamoto在比特币上线时使用了一种工作量证明机制-POW,到后来以太坊为了防止比特币POW造成的算力集中,设计和实现了基于内存的POW机制-Ethash,再到后来为了减少POW电力浪费问题,出现了POS和DPOS,以及基于bft的算法,Algrand等。 

    粗略总结,共识算法发展经历了:POW -> POS -> BFT以及他们的融合阶段。但到目前为止由于POW本身的简单性和安全性,仍然是开源公链的主流共识算法~ 同时由于DPOS在减少算力浪费和提升tps方面的优势,也被人们所接受和应用。

    什么是共识算法?

        简单来说就是在一个不可信网络中,通过大家投票的方式来对某个确定性结果达成一致,这是一种少数服从多数的方法。不管是POW、POS还是BFT类共识算法,本质上都是一种投票的方法。

    1. 在POW中,当矿工挖到一个块后,需要迅速将块公布到网络中,以使其他矿工得到确认,这里投票的方式直观上来看就是验证区块,如果合法就将区块连接到区块链的末端。

    2. 在纯POS共识中,节点不充当矿工的角色,也就是不需要挖矿,只需要打包自己的区块,并一并提交本次作为出块者的证明。其他节点首先验证该证明有效,同时区块合法,就认为该区块是有效的。当然由于出块不需要工作量证明,为了防止出块节点作恶,POS共识一般会结合惩罚机制,该机制通过事后检查的方式来惩罚作恶人,奖励提供作恶证明的人。

    未完待续……

         

  • 相关阅读:
    物料描述不可更新(分配组织后)
    完工任务不允许更改需求
    作业需求更改,限制车间人员只允许修改子库
    只允许更改**类型的任务需求
    车间任务移动完工时检验倒冲子库
    有库存不能停用子库存
    不允许修改标准作业需求
    PHP关于重写与重载
    面向对象的三个基本特征 封装 继承 多态
    PHP中的面向对象 中的类(class)
  • 原文地址:https://www.cnblogs.com/informatics/p/8001111.html
Copyright © 2020-2023  润新知