了解区块链的基本(第二部分):工作量证明(PoW)和股权证明(PoS)

在第一部分中,我们讨论了拜占庭将军问题、如何实现拜占庭容错以及他们与区块链的关系。

在上一篇文章中提到的算法实际上就是实现拜占庭容错的解决方案。但是,那个解决方案还不够有效率,它的变型也是有限制的,即不到三分之一的网络是不诚实的。

《了解区块链的基本(第二部分):工作量证明(PoW)和股权证明(PoS)》

用Lamport、Shostak和Pease提出的算法解决的拜占庭将军问题的运行时间(n = 成员数量, m = 叛徒数量)

这把我们带到了计算机科学中一个经典的问题:

我们能做的更好吗?

本文的主题将讨论实现拜占庭容错的替代算法。

注意:请原谅我做了一些简化。这些算法背后都有很多复杂的研究。我接下来将会为那些感兴趣的、想要更深入研究的读者们提供链接。

区块链用共识算法来选举一位领导者来决定下一个区块的内容。

那个领导者还要负责把该区块广播到网络,以便于其他同行可以验证其内容的有效性。

工作量证明(PoW)

这是像比特币和以太坊等货币最常用的算法,每一种都有自己的不同。

在继续之前,为了非技术性读者的一点解释:

一个散列函数(或译哈希函数)是任何可以将任意大小的数据映射到固定大小的数据的函数。

如果一个哈希函数是安全的,它的输出是无法与随机结果区分开的。

Example:
keccak256("hello") = 1c8aff950685c2ed4bc3174f3472287b56d9517b9c948127319a09a7a36deac8
keccak256("hello1") = 57c65f1718e8297f4048beff2419e134656b7a856872b27ad77846e395f13ffe

在工作量证明中,一个成员要想成为领导者并选择下一个要添加到区块链的区块,他们必须要找到解决一个特定数学问题的方法。

比如那个数学问题是:

给定数据X,找到一个数n,如附加到X结果的n的哈希是一个小于Y的数。

Example - hash is a hypothetical hash function that has the outputs listed as below
Y = 10, X = 'test'
hash(X) = hash('test') = 0x0f = 15 > 10
hash(X+1) = hash('test1') = 0xff = 255 > 10 
hash(X+2) = hash('test2') = 0x09 = 9 < 10 OK, 解决了.

鉴于所使用的哈希函数是加密安全的,找到解决这个问题的唯一方法就是用暴风算法(尝试所有的组合)。换句话说,从概率学的角度,首先解决上述问题的成员是拥有最大计算能力的成员。这些成员也被称为矿工。

这获得广泛的成功主要得益于一下特质:

  1. 这个问题很难找到解决方法
  2. 当该问题有解决方法的时候,很容易验证它的正确性

每当一个区块被开采的时候,该矿工会获得一些货币(区块奖励、交易费用),因此他就更有动力继续采矿。在工作证明中,其他节点通过检查区块的散列是否小于预设数字来验证区块的有效性。

由于计算能力的供应有限,矿工也不会想作弊。因为硬件、能源和错过的潜在开采利润的高成本,攻击网络会损失很多。

以下图片很好的说明了比特币和其他使用工作证明的币种是如何阻止恶意行为的。

《了解区块链的基本(第二部分):工作量证明(PoW)和股权证明(PoS)》

那些对链分裂(又名分叉或链重组)如何在分歧情况下工作感兴趣的读者,我建议读读这篇文章

工作量证明提供了所需的安全性,并且迄今为止也被证实是好用的。但是,它非常耗能:

《了解区块链的基本(第二部分):工作量证明(PoW)和股权证明(PoS)》

几乎所有的非洲国家(单独的)都比比特币矿业消耗的电力要少

股权证明(PoS)

在继续之前,让我把领导者选举(选择下一个区块的成员)比喻为抽奖:

在抽奖中,如果Bob比Alice有更多的票,他就更有可能获胜。

与此类似:

在工作量证明中,如果Bob比Alice拥有更多的计算能力和能量,从而可以输出更多的工作 — — 他就更有可能获胜(开采下一个区块)。

再一次,类似的:

在股权证明中,如果Bob比Alice拥有更多股权,他就更有可能获胜(“开采”下一个区块)。

股权证明去掉了工作量证明对于能源和计算能力的要求,并用股权替代。股权就是在一段时间内成员愿意锁定的货币数量。作为回报,他们有和他们的股权成比例的机会成为下一个领导者,并选择下一个区块。现在有一些币种只用股权证明如Nxt和Blackcoin。

《了解区块链的基本(第二部分):工作量证明(PoW)和股权证明(PoS)》
PoS的主要问题就是所谓的缺乏利害关系。从本质上来说,在分叉的情况下,股权持有人不是没有在两条链上持股的动机,然后就会增加双重支出问题的危险性。想了解更多,看这里。

为了避免这种情况,出现了混合共识算法,如Decred使用的PoW-PoS组合。以太坊基金和 Casper The Friendly Ghost 以及 Casper The Friendly Finality Gadget在一起积极研究一个安全的、去中心化的股权证明协议。

总结

在本文中,我们讨论了工作量证明和股权证明,它们是实现了拜占庭容错的共识算法,并在当今的区块链系统中得到实际应用。其他共识算法例如实用拜占庭容错PBFT(Tendermint)或分散式拜占庭容错(NEO)也是存在的。想了解比较PBFT和Casper的朋友可以看这里

原文作者:Georgios Konstantopoulos (Loom Network)

    原文作者:LoomNetwork
    原文地址: https://segmentfault.com/a/1190000014058722
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞