区块链共识协议指南

已经有很多公有区块链在试图改变世界,但是要在全球范围内运行,共享公有账本需要一个可行、高效和安全的共识机制。

一种共识机制,向比特币的工作量证明(Proof of Work),有两个作用:确保区块链中的下一个区块是唯一且真实的那一个,保护系统安全防止分叉。

在工作量证明机制中,矿工通过解决极其困难的密码学难题互相竞争来将下一个区块(一系列交易)添加到区块链中。第一个解决难题的矿工将会获得奖励,该矿工会获得12.5个新产生的比特币以及少量的交易费。

尽管比特币的工作量证明机制本身是开创性的,但并非完美的。

常见的批评包括它需要大量的算力资源,无法很好地扩展(交易确认需要10-60分钟),而且大多数的挖矿集中在全球电费便宜的地区。

比特币的发明者中本聪唤醒了我们对区块链潜力的认知,但是这并不意味着我们无法探索更快、更去中心化和更节能的共识机制。

以下是一些常见的替代共识机制:

权益证明(Proof of stake)

在这种类型的共识机制中,验证者无需投入大量昂贵的算力设备来挖矿区块,相反它们需要的是系统的代币。

注意这个用词‘验证者’。因为在权益证明机制中,不会创建新的币。相反,所有的币在第一天就出现了,验证者(也成为股东,因为它们持有系统的股份)只能获得交易费。

在权益证明系统中,创建下一个区块的机会取决于你所拥有的系统币的比例。拥有300个币的验证者验证区块的机会大概是拥有100个币的3倍。

一旦验证者创建了一个区块,区块仍然需要写入到区块链中。不同的权益证明系统在处理时会不尽相同。例如,在Tendermint中,系统中所有的节点停止广播活动,直到实现大多数的投票,而在其它系统中,会随机选择签名者。

现在的问题是:怎么能阻止验证者创建两个区块以及广播两套交易费呢?以及如何阻止验证者在这两个区块上签名呢?这就是所谓的‘Nothing -at-stake’问题。参与者进行破坏行为时没有损失。

在迅速发展的密码学经济领域,区块链工程师们一直在探索解决这一问题的方法。一种方法就是要求验证者将它们的货币锁定在某个类型的虚拟器中。

如果验证者试图双重签名或者分叉系统,它们就会被扣除。

Peercoin是第一个实施权益证明的,紧接着是blackcoin和NXT。以太坊现在是工作量证明机制,但是正在计划于2018年初转向权益证明。

活动证明(Proof of activity)

为了避免恶性通货膨胀,比特币最终将只有2100个币。这意味着,在某个时间点,比特币区块奖励将会停止,比特币的矿工只能获得交易费。

一些人认为这会导致严重的问题,人们的行为会是利己主义,而且会破坏系统。因此,活动证明(Proof of activity)作为比特币的一种替代激励结构而出现了。活动证明是一种结合了工作量证明和权益证明的混合方法。

在活动证明中,挖矿是以传统的工作量证明形式进行的,矿工互相竞争来解决密码学难题。挖矿产生的区块(它们更像是模板)不包含任何交易,因此获胜的区块只含有头部和矿工奖励地址。

这个时候,系统切换到权益证明。基于头部信息,选择随机的验证者来签名新的区块。验证者拥有的系统种的代币越多,它就越有可能被选择。只要所有的验证者都对其签名,模板就成为成熟的区块。

如果被选中的某些验证者没有完成区块,那么就会选择下一个获胜的区块,然后选择一群新的验证者,以此类推,直到区块获得正确数量的签名。交易费分发给了矿工和所有签名区块的验证者。

活动证明的弊端在于既存在工作量证明的弊端(需要很多的能量来挖矿区块),也存在权益证明的弊端(无法检测双重签名的验证者)。

Decred是目前唯一使用活动证明的币种。

销毁证明(Proof of burn)

在销毁证明中,不需要昂贵的计算设备,而是通过将币发送至一个地址来销毁它们,而且这是不可复原的。通过将你的币发送至想象中的地址,根据随机选择过程你获得了在系统中进行永久挖矿的权利。

根据销毁证明实施的不同,矿工可能会销毁原生代币或其它链的代币,例如比特币。你销毁的币越多,你获得挖矿下一个区块链的机会就越大。

随着时间的进行,你在系统中的股份会降低,因此最终你将会销毁更多的币来增加你挖矿区块的概率。(这有点类似比特币的挖矿过程,你需要持续不断地投入更先进的算力设备来维持算力。)

尽管销毁证明是一个有趣的替代方案,但它仍然需要浪费能源。另外一个问题是,算力流向了那些愿意销毁更多资金的人。

容量证明(Proof of capacity)

正如上述所提到的,绝大部分的替代协议都使用了某些类型的付费参与的模式。容量证明也无例外,但是你需要支付的是硬盘空间。你拥有的硬盘容量越多,那么你挖矿下一个区块并获得区块奖励的概率就越大。

在容量证明系统中挖矿之前,该机制会产生大量的‘plots’数据,将会存储在你的硬件中。你拥有的plots越多,你发现下一个区块的概率就越大。

通过投入大量的硬盘空间,你可以创建复制区块,并分叉系统。因此仍然存在无啊识别nothing at stake的问题。

容量证明的变种高快存储证明和空间证明

运行时间证明(Proof of elapsed time)

芯片制造商因特尔发布了自己的共识协议运行时间证明。该系统的工作原理类似于工作量证明系统,但能量消耗很少。

而且,参与者无需解决密码学难题,相反该机制使用了可信执行环境(TEE) – 例如SGX – 来确保区块是以随机方式产生的,但是无需工作量。

因特尔的方法是基于TEE提供的保证等待时间的。根据因特尔的说法,该机制可以扩展至上千个节点,而且可以有效地运行在任何支持SGX的因特尔处理器中。

该协议存在的一个问题是需要你信任因特尔 – 如果要信任第三方的话,我们岂不是又在远离公有区块链吗?

【来源】http://www.coindesk.com/short-guide-blockchain-consensus-protocols/