本
文
摘
要
我们通常所说的共识就是一群人对一件或者多件事情达成一致的看法或者协议。区块链中的共识算法实际还是分布式系统中最重要的一致性问题。 区块链本质也是一种去中心化的分布式账本系统,用于登记和发行数字化资产、产权凭证、积分等,以点对点的方式进行转账、支付和交易。由于各种原因,点对点网络总会存在延迟,并且众多网络节点中的每一个节点所观察到的事务先后顺序不可能完全一致。因此区块链系统需要设计一种机制对在一定时间窗口内发生的事务的先后顺序进行确立。这种对特定时间段内事务的先后顺序达成共识的算法被称为“共识机制”。 这个一致性的问题涉及到一个著名的“拜占庭将军问题”:拜占庭是古代东罗马帝国的首都,守卫不同边境的多个将军需要通过信使来向首都传递消息,达成某些一致的决定。但由于将军中可能存在叛徒,这些叛徒将努力向其他将军发送不同消息,试图会干扰一致性的达成。现在,拜占庭将军问题已经得到证明,当叛变者不超过1/3时,存在有效的算法,不论叛变者怎么传递消息,忠诚的将军们总能达成一致的结果。如果叛变者过多,则无法保证一定能达到一致性。 而解决“拜占庭将军问题”的任何算法,都可以说是共识算法的一种。这个系列常见的算法包括: 常见的共识算法还包括: 1)Pow工作量证明,就是挖矿。通过运算,计算出一个满足规则的随机数,解决规定的hash问题,即获得本次记账权。再发出本次需要记录的数据,全网其它节点验证后一起存储; 2)Pos权益证明。为了提高处理速度的一种共识机制;根据每个节点所占代币的比例和时间,获得股份比例。拥有代币股份越多的人越容易获取记账权。 3)DPos股份授权证明机制。持币者投出一定数量的节点作为代理点,代理点代持币者进行验证和记账。 当然,还有一些其它的共识算法或者多种算法结合形成的机制。但无论哪一种共识算法都有各自的应用场景,各有优劣。区块链到底选择哪种或者多种结合的共识算法,主要取决于网络和数据处理能力等多个方面。