第4讲 共识机制:从拜占庭共识谈起

第4讲 共识机制:从拜占庭共识谈起

00:00
20:08


如果说区块链是比特币运行的躯干,

那共识机制就是灵魂。






【区块链的哲学三问】
 
区块链被确认有以下三个基本特征:

1、区块链是一个分布式数据库(系统)。
2、区块链采用密码学保证已有数据不被篡改。
3、区块链采用共识算法来对于新增数据达成共识。

这3点可以简单地从哲学上理解为:我是谁,我来自哪里,我要去哪里。

我是谁?我是一个分布式的数据库。


我来自哪里,密码学告诉我过往的记忆。

我要去哪里,共识算法告诉我应该怎么往前走。

区块链技术的伟大之处,就是它的共识机制在去中心化的思想上解决了节点间互相信任的问题。区块链拥有众多节点并达到一种平衡状态是因为共识机制,尽管密码学占据了区块链的半壁江山,但是共识机制才是让区块链系统不断运行下去的关键。

要深入谈及区域链的共识机制,就避不开一个问题:拜占庭问题。



【关于拜占庭问题及其分析】
  
拜占庭问题是容错计算中的一个老问题,由莱斯利•兰伯特(Leslie Lamport)等人在1982年提出:“拜占庭帝国为5~15世纪的东罗马帝国,拜占庭城邦拥有巨大的财富,令它的十个邻邦垂涎已久。但是拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个城邦的入侵行动都会失败,而入侵者的军队也会被歼灭,使得其自身反而容易遭到其他九个城邦的入侵。这十个城邦之间也互相觊觎对方的财富并经常爆发战争。”

拜占庭的防御能力如此之强,非大多数人一起不能攻破,而且只要其中有一个邻邦背叛盟军,那么该邻邦所有进攻军队都会被歼灭,并随后被其他邻邦所劫掠。因此,这是一个由互不信任的各个邻邦构成的分布式网络,每一方都小心行事,因为稍有不慎,就会给自己带来灾难。

为了获取拜占庭的巨额财富,这些邻邦分散在拜占庭的周围,依靠士兵传递消息来协商进攻目的及进攻时间。这些邻邦将军想要攻克拜占庭,面临着一个困扰,邻邦将军不确定他们中是否有叛徒,叛徒是否擅自变更进攻意向或者进攻时间。在这种状态下,将军们能否找到一种分布式协议来进行远程协商达成他们的共识,进而赢取拜占庭城邦的财富呢?


“拜占庭问题”模型中,对于将军们(节点)有两个默认的假设: 

所有忠诚的将军收到相同的命令后,执行这条命令得到的结果一定是相同的;

如果命令是正确的,那么所有忠诚的将军必须执行这条命令。

假设1的含义是:所有节点对命令的解析和执行是一样的,这个命令必须是一个确定性的命令,不能存在随机性,也不能依赖节点自身的状态。(这个命令不能是心情好就攻击敌人,心情不好就原地休息。)

假设2的含义是:忠诚的将军需要判断接收到的命令是不是正确的。这个判断命令的方法是整个拜占庭容错技术的核心。

对于将军们的通信过程,在“拜占庭问题”中也是有默认假设的:点对点通信是没问题的。也就是说,在这里,我们假设A将军要给B将军一条命令X,那么派出去的传令兵一定会准确地把命令X传递给B将军。如下图:




问题在于,如果每个城邦向其他九个城邦派出一名信使,意味着这十个城邦每个都派出了九名信使,也就是在任何一个时间有总计九十次的信息传输,并且每个城市分别收到九条信息,可能每一条都写着不同的进攻时间。

除此以外,信息传输过程中,如果叛徒想要破坏原有的约定时间,就会自己修改相关信息,然后发给其他城邦以混淆视听,这样的结果是部分城邦收到错误信息后,会遵循一个(或者多个)城邦已经修改过的攻击时间相关信息,从而背叛发起人的本意,由此遵循错误信息的城邦(包含叛徒)将重新广播超过一条信息的信息链,整个信息链会随着他们所发送的错误信息,迅速变质成不可信的信息和攻击时间相互矛盾的纠结体。




针对拜占庭问题的解决方法包括:口头协议算法、书面协议算法等。

口头协议算法的核心思想如下:要求每个被发送的消息都能被正确投递,信息接收者明确知道消息发送者的身份,并且信息接受者知道信息中是否缺少信息。采用口头协议算法,若叛徒数少于1/3,则拜占庭问题可解。也就是说,若叛徒数为m,当将军总数n至少为3m+1时,问题可解。

然而,口头协议算法存在着明显的缺点,那就是消息不能溯源。为解决该问题,提出了书面协议算法,该算法要求签名不可伪造,一旦被篡改即可发现,同时任何人都可以验证签名的可靠性。

书面协议算法也不能完全解决拜占庭问题,因为该算法没有考虑信息传输延时、其签名体系难以实现的问题,且签名消息记录的保存难以摆脱中心化机构。
  


【以比特币为例的区块链共识机制解决方案】
  
中本聪所创建的比特币通过对这个系统做出一个简单的变化解决了这个问题,它为发送信息加入了成本,这降低了信息传递的速率,并加入了一个随机元素,以保证在一个时间只有一个城邦可以进行广播。

中本聪加入的成本是“工作量证明”(即挖矿),并且工作量证明是基于计算一个随机哈希值。哈希算法唯一做的事情就是获得一些输入,然后进行计算,并得到一串64位的随机数字和字母的字符串。

就像如果我们输入“量子学派区块链”,运用哈希算法中的SHA256算法就会得到如下字符:

6ded5808805c1a92caa1334fcce014aeb8238103e8f2730d52b399af0d41b4e4

在比特币的世界中,输入数据包括了到当前时间点的整个总账(区块链)。尽管单个哈希值用现在的计算机几乎可以即时地计算出来,但是比特币系统接受的工作证明是无数个64位哈希值中唯一的哈希值,且这个哈希值前13个字符均为0,这样一个哈希值是极其罕见、不可能被破解的,并且在当前需要花费整个比特币网络总算力约10分钟的时间才能找到一个。

在一台网络机器随机地找到一个有效哈希值之前,上十亿个的无效值会被计算出来,计算哈希值需要花费大量时间,增加了发送信息的时间间隔,造成信息传递速率减慢,这就是使得整个系统可用的“工作量证明”。




而那台发现下一个有效哈希值的机器,能将所有的之前的信息放到一起,附上它自己的辨识信息,以及它的签名/印章诸如此类,向网络中的其他机器广播出去。只要其他网络中的机器接收到并验证通过了这个有效的哈希值和附着在上面的签名信息,他们就会停止他们当下的计算,使用新的信息更新他们的总账拷贝,然后把新更新的总账作为哈希算法的输入,再次开始计算哈希值。哈希计算竞赛从一个新的开始点重新开始。

如此这般,网络持续同步着,所有网络上的电脑都使用着同一版本的总账。

与此同时,每一次成功找到有效哈希值以及区块链更新的间隔大概是10分钟(这是故意的,算法难度每两周调整一次,以保证网络一直需要花费10分钟来找到一个有效的哈希值)。在那10分钟以内,网络上的参与者发送信息并完成交易,并且因为网络上的每一个机器都是使用同一个总账,所有的这些交易和信息都会进入每一份遍布全网的总账拷贝。当区块链更新并在全网同步之后,在之前10分钟内进入区块链的所有交易也被更新并同步,因此分散的交易记录是在所有的参与者之间进行对账和同步的。

最后,在用户向网络输入一笔交易的时候,他们使用内嵌在比特币客户端的标准公钥加密工具来加密,同时用他们的私钥以及接收者的公钥,为这笔交易签名。这对应于拜占庭问题中他们用来签名和验证消息时使用的“印章”。因此,哈希计算速率的限制,加上公钥加密,使得一个不可信网络变成了一个可信的网络,所有参与者可以在某些事情上达成一致(比如说攻击时间、或者一系列的交易、域名记录、政治投票系统、或者任何其他的需要分布式协议的地方)。

将比特币的共识机制引入拜占庭问题,就形成了这样一种情况:城邦A向其他九个城邦发送进攻相关信息时,直接将相关信息及其当时发送的时间附加在通过哈希算法加密的信息中,同样加上独属于自己的数字签名,传递给其他城邦。

当城邦B收到城邦A发送的消息后,用相应的网络机器验证通过有效哈希值和附加的签名和时间戳信息,通过解密获得其中信息,并将这条信息的相关记录同步在城邦B机器内(节点)。这条信息从城邦B发向城邦C时,会在原来的消息上加入城邦B查阅了该信息的记录,加盖时间戳后利用哈希算法对城邦B所有信息加密,再发给其他城邦。在其他城邦接受消息后,重复此流程直至所有城邦都收到消息。

如果叛徒想要修改进攻信息来误导其他城邦时,其他城邦的机器会立刻识别到异常信息,同步的虚假信息将不被认可,机器依旧会同步其他大部分共同的信息,这样叛徒就失败了。他无法破坏十个城邦当中的大多数节点,也就是至少六个节点,这样信息的一致性就得到了保证,完美解决了拜占庭问题。

这就是区块链共识机制为何如此特别的关键,它为一个算法上的难题提供了解决方案。区块链的共识机制通过不断同步各个节点的信息,使得各分布式节点之间达成一种平衡,保证了绝大多数节点的一致性,即达成了共识。


 
【区块链共识机制的发展变迁】
  
目前区块链的共识机制也出现了很多种,这里列举一些比较典型的共识机制:


PoW:Proof of Work,工作量证明

依赖机器进行数学运算来获取记账权,资源消耗相比其他共识机制多、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点出错。优点是完全去中心化,节点自由进出。

当然,现在由于PoW算力的中心化,很多人对PoW机制的“中心化”提出了怀疑,其中被质疑最多的就是比特币的算力中心化问题。


PoS:Proof of Stake,权益证明

总体上说,存在一个持币人的集合,他们把手中的代币放入PoS机制中,这样他们就变成验证者。假设很多验证者在区块链最前面发现了一个新区块(区块链中最新的块),这时PoS算法在这些验证者中随机选取一个人(选择验证者的权重依据他们投入的代币多少而定,比如一个投入押金为10000代币的验证者,被选择的概率是一个投入1000代币验证者的10倍),给他们权利产生下一个区块。与PoW一样,以最长的链为准。如果在一定时间内,这个验证者没有产生出一个新区块,则PoS会继续选出第二个验证者,代替原来被选中的验证者来产生新区块。

和选择PoW算法相比,选择PoS算法有什么好处呢?

简而言之:不再需要为了安全产生区块而大量消耗电能。 

由于不再需要大量能耗,通过发行新币以激励参与者继续参与网络的压力会下降。理论上负总发行量甚至成为可能,由于一部分交易费“被烧掉”,因此货币供应会随着时间减少。

由于新币理论上的负总发行量,就“合作博弈论”观点来看,PoS算法可以减少因自私挖矿攻击而造成的系统弱点,虽然PoW在一定程度上也可以做到这一点。

随着规模经济(指扩大生产规模引起经济效益增加的现象)的消失,中心化所带来的风险就会减小。价值一千万美元的代币带来的回报不多不少,是价值一百万美元的代币的十分之一,即作恶所付出成本需要价值一千万美元的代币,收益只能得到价值十万美元的代币,这样一来因为作恶的收获与付出不成正比,人们不会去攻击整个区块链。

同样,PoS也存在很多问题,如PoS相当于是大股东说了算,但如果大股东作恶怎么办,这也一直存在争议。





DPoS:Delegate Proof of Stake,股份授权证明

BitShares社区首先提出了DPoS机制。

DPoS与PoS的主要区别,在于其节点选举若干代理人,由代理人验证和记账,其合规监管、性能、资源消耗和容错性与PoS相似。类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。

DPoS的工作原理则为:

去中心化表示每个股东按其持股比例拥有影响力,51%股东投票的结果将是不可逆且有约束力的,其运作方式是通过及时而高效的方法,采用51%以上份额的股东投票来决定方案。为达到这个目标,每个股东可以将其投票权授予一名代表。

网络延迟有可能使某些代表没能及时广播他们的区块,这将导致区块链分叉。然而,这不太可能发生,因为制造区块的代表可以与制造前后区块的代表建立直接连接,而建立这种与你之后的代表(也许也包括其后的那名代表)的直接连接,是为了确保你能得到报酬。

该模式可以每30秒产生一个新区块,并且在正常的网络条件下,区块链分叉的可能性极其小,即使发生也可以在几分钟内得到解决,这样就可以大幅缩小参与验证和记账节点的数量,达到秒级的共识验证。


Ripple Consensus:瑞波共识机制

瑞波币的共识算法如下:

瑞波共识算法,使一组节点能够基于特殊节点列表达成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由当前该俱乐部中51%以上的会员投票通过。共识遵循这核心成员的51%权力,外部人员则没有影响力。与比特币和点点币一样,瑞波系统将股东们与其投票权隔开,并因此比其他系统更中心化。


Pool验证池

这是一种基于传统的分布式一致性技术,加上数据验证的机制,是目前行业链大范围在使用的共识机制。

优点:不需要代币也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础上,实现秒级共识验证。

缺点:去中心化程度不如bitcoin,更适合多方参与的多中心商业模式。

除此之外还有很多的共识机制,但现在主流的共识机制是PoW共识机制、PoS共识机制和DPoS共识机制。




但是目前,这些主流共识机制都还存在一定不足,bitcoin已经吸引全球大部分的算力,其它再用PoW共识机制的区块链应用,很难获得相同的算力来保障自身的安全,同时挖矿也会造成资源大量浪费、共识达成的周期较长等问题。

PoW之外出现最早,也是最重要的算法是PoS,它的原则是一个节点持有的币越多,越有机会产生下一个区块,也就是如果想要造假,需要持有大量的币。而既然造假者持有了那么多币,破坏网络的可信度就会造成资产的大量损失,这个损失极有可能是超过造假的收益的。

PoS相比PoW节约了大量的资源,但是它的缺点也显而易见:会造成富者越富,穷者越穷,然后用户会流失,新用户也不愿意加入。而且还是需要挖矿,本质上并没有解决商业应用的痛点,所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上很有可能存在其他攻击影响。而DPoS整个共识机制还是依赖于代币,很多商业应用是不需要代币存在的。



【结语】
  
基于以上所说,现在看来,没有一种共识机制是完美无缺的,同时也意味着没有一种共识机制是适合所有应用场景的。所以,区块链的共识机制也都还在不断地进步与发展。

虽然目前主流的区块链共识机制中绝大多数都是去中心化的公共链,但本身仍存在一些缺点。还有少部分机构采用了半中心化或者中心化的共识机制,而半中心化甚至中心化的共识机制是明显有违区块链的一致性的,会使权力掌握在少数人手里,出现很多问题,信用机器也将因此崩毁。

如今,世界还在等待一种新的共识机制——一种能让所有人都信服的共识机制。

但这可能是一个哲学问题,世界上永远没有完美的共识机制。

以上内容来自专辑
用户评论
  • 听友263280288

    去中心化 无中心 视乎和马克思主义对未来社会形态特征不谋而合