区块链的基本运作方式,区块链的基本原理是

  

  共识机制在决定谁负责生成区块链系统中的新块方面起作用。   

  

  

一、什么是共识?

  

  

  在理解共识的概念之前,我们先简单假设我们村有100个人。现在我们要投票选举村长。如果100个人都到场给自己投票,参与率就是100%。如果这100个人选10个代表投票,参与率只有10%。这两种投票哪一种更能代表民意?毫无疑问是前者,因为参与度更高;反之,后者选10个代表投票,参与度低,难免覆盖全地。通过这个假设,我们可以对什么是参与有一个简单粗暴的认识。   

  

  共识是一切交易的基础。共识越分散(参与度越高),其效率越低,但满意度越高,所以越稳定。反之,共识越集中(参与度越低),效率越高,越容易出现独裁和腐败。   

  

  区块链技术的伟大之处在于去中心化和去信任化(或者说降低信贷成本)。在完全陌生的网络环境下,如何通过代码匹配交易?言下之意是,这些代码施展了什么样的魔力,让买卖双方产生了信任?   

  

  答案是共识机制。   

  

  共识机制   

  

  区块链系统的核心是系统中的节点竞争记账。这种竞争过程被称为共识机制。区块链的底部由四部分组成。分布式数据库用于存储过去和未来的交易数据。密码术的公-私密钥系统用于确认交易双方的身份。P2P网络用于广播和传播各种消息(如节点加入的消息、节点失败的消息、挖掘数据的消息)以及用于确定节点记账权限的共识机制。   

  

  共识机制在区块链发挥着核心作用。共识机制决定了谁有记账权,以及记账权的选择过程和理由。不同的虚拟货币采用共识机制,如POW、POS、DPOS拜占庭容错等。现整理如下:   

  

  目前区块链的一致性机制大致可以分为PoW(工作量证明)、PoS(权益证明)、DPoS(份额授权证明)和分布式一致性算法。   

  

  (一):工作量证明PoW   

  

  POW(工作证明),即工作量证明机制。整个系统中的每个节点为整个系统提供计算能力(简称计算力),通过一种竞争机制,计算工作做得最好的节点会得到系统的奖励,也就是新产生的货币会被分配。区块链由持续增长的顺序块组成。每个块包含一个头文件和一系列事务字母TXi,其中前一个块的时间戳Ti、索引Hi-1和nounce Ni-1在头文件中受到保护。区块链是密码安全的。对于每一轮,只要找到对应HASG的碰撞,就成功了。HASG冲突的含义可以理解为哈希值的前几位是相同的。我们知道找到两个具有相同哈希值的文件有多困难,但是我们可以找到前几个相同的文件。我们整理出一个完整的开采流程如下:   

  

  其中Di是难度系数,可以认为是第一次碰撞次数。挖掘的过程就是不断尝试寻找Ni的过程。我们举个模拟采矿的例子。测试环境描述:   

  

  运行以下脚本:   

  

  对结果进行排序,找出前9位成功碰撞的N的值。   

  

  实验结果如下:   

  

  虽然只是一个模拟实验,但它完全体现了POW的运行原理。   

  

  (二):权益证明PoS   

  

  POS(股权证明)是股权的证明。顾名思义,是指根据所持股份直接达成共识的机制。其目的是让链条中所谓的“股权持有人”取代POW中的矿工。本质的共识过程是用“股权”取代“挖矿”过程。   

  

  在PoW机制中,由于寻找符合条件的nonce.nonce往往需要耗费大量的功率和时间,为了使每个块更快地生成,PoS机制去掉了穷举noncenonce的过程,然后采用以下更快的算法:   

  

  SHA256(SHA256(Bprev),A,t)天平(A)m   

  

  一些散列函数   

  

  t是UTC时间戳。   

  

  Bprev指的是前一个块。   

  

  余额(A)代表账户A的余额。   

  

  唯一可以不断调整的参数是T,等式右边的M是一个固定的实数。所以余额(A)越大,找到合理T的概率越大。在网络中,一般对T的范围有限制,比如可以尝试的时间戳不能超过标准时间戳1小时,即一个节点可以尝试7200次才能找到一个合格的T,如果找到   

不到即可放弃。因此,在PoS中,一个账户的余额越多,在同等算力下,就越容易发现下一个区块。

  

但是它和POW机制一样解决问题的思想也导致了它与POW拥有一样的缺点,也是牺牲了一部分的共识(同样分叉),而且需要等待多个确认。

  

优点:对节点性能要求低,达成共识时间短(网络环境好的话可实现毫秒级);

  

缺点:没有最终一致性

  

PoW与PoS流程对比图:

  

(三):股份授权证明DPos:

  

是基于POS衍生出的更专业的解决方案,股份授权证明类似于董事会投票,假设某个区块链系统的世界里有10万人,现在这10万人投票选出了4位股东作为代表来行驶记账权,这4位董事分别是A、B、C、D,在记账过程中,按顺序每位董事有两秒钟的时间来记账,如果在规定的时间内记账失败,则直接把权限交给下一位董事,这样原本10万人参与记账竞争的游戏,现在变成了4人。

  

这样做的优点是大幅缩减了参与验证和记账的数量,形成共识几乎可以达到秒级,缺点是固定数量的董事作为记账候选人,与去中心化的理念相违背,董事数量太少,参与度太低,也缺乏一定的代表性。

  

对比这三种最常用的共识算法,不难发现各有利弊,它们的诞生都围绕着一个核心――如何更加公平、公正、透明、轻量(不过多消耗资源)、高效(更快)地达成共识,挑选出记账的人(节点)。

  

PoS与DPoS对比图:

  

结论:

  

PoW采用简单粗暴但极为有效的方式,通过节点首先自证其资质后才进行广播的方式,大幅度减少了网络间的通讯压力,但与之带来的问题则在于自证资质的计算资源消耗极大。

  

PoS采用与传统分布式一致性验证类似的机制,通过代币数量(或存储容量等指标)作为权重依据,使用某种分布式算法选举出每次的检查点节点。这种机制的好处在于没有消耗计算资源的自证资质过程,但是带来的问题在于每次选举时在大量节点的网络中对网络压力极大。

  

DPoS作为PoS的变形,通过缩小选举节点的数量以减少网络压力,是一种典型的分治策略:将所有节点分为领导者与跟随者,只有领导者之间达成共识后才会通知跟随者。该机制能够在不增加计算资源的前提下有效减少网络压力,在优秀的软件实现中将会具有较强的应用价值。

  

在区块链的共识机制中,其本质与分布式数据库的一致性算法存在极多的相似之处。拜占庭问题的引入仅仅从算法和选举节点数量上对网络结构做出一些调整,但是并不从本质上改变分布式系统一致性选举的机制。

  

作者:区块链安全档案;本文仅代表作者观点,不代表链得得官方立场。

相关文章