我们经常听说很多有关公有区块链将如何改变世界的讨论,但是如果要在全球范围内发挥作用,一种共享公共账本就需要一种实用,高效且安全的共识算法。
共识算法,如比特币的工作量证明(PoW),主要做两件事:1)确保了区块链的下一个区块就是真理的唯一版本;2)阻止强大的敌手破坏系统并成功分叉区块链。
对于PoW,矿工通过相互竞争解决一种极其困难的密码谜团来将下一个区块(一些交易)添加到区块链中。最先解决这个谜团的矿工将会赢得奖励。作为对他(她)的工作的回报,该矿工将会获得12.5个新挖出来的比特币——和一小部分交易手续费。
然而,尽管比特币PoW是一个杰作,但是并不完美。
经常有人批评说比特币PoW需要大量的计算能量,不能很好地扩展(交易确认需要10—60分钟),以及绝大多数的比特币挖矿被集中到电力成本低的地区。
比特币创始人中本聪让我们认识到了比特币区块链的潜力,但是这并不意味着我们未来不能继续去寻找速度更快、中心化程度更低和能源效率更高的共识算法。
尽管不是很全面,不过以下这几种共识算法都是被开发出来取代PoW的。
权益证明(PoS)
PoW最常见的替代选择就是权益证明(PoS)。
在PoS这种共识算法中,相反于投资昂贵的计算机设备进行挖矿,一种“验证器(validator)”会对这种系统的币进行投资。
注意“validator”这个术语。这是因为在PoS不存在创币(挖矿)过程。相反,所有的币从一开始就已经被全部挖出,而validator(也叫作利益相关者,因为他们持有该系统中股权)将会严格按照手续费模式获得支付。
在PoS中,你被选中去创建下一个区块的几率取决于你手中持有的币(或者说你拥有的股份)。一个拥有300个币的validator被选中的概率是拥有100个币的人的三倍。
一旦某位validator成功创建了一个区块,这个区块仍旧需要被提交给区块链。不同的PoS系统处理区块的方式也不相同。例如Tendermint,该系统中的每一个节点都必须为区块进行签名投票直到获得绝大多数的投票,而其他系统则是随机选出一些签名人来对区块进行签名。
那么问题来了,如何阻止一个validator创建两个区块和索要两份交易费呢?以及如何阻止签名者对这两个区块进行签名?这被称为“无风险(nothing-at-stake)”问题。没有东西可以失去的参与者没有理由要表现的很好。
在“加密经济”的新兴领域中,区块链工程师正在探索解决这个问题和其他问题的方法。答案之一就是要求validator以虚拟金库的方式来锁定自己的资金。
如果该Validator尝试重复签名或分叉该系统,那么这些币将会被削减。
Peercoin就是第一种实施PoS的加密货币,之后是blockcoin和NXT。ETH目前依赖于PoW,但是正在计划于2018年初转向PoS。
活动证明(Proof of activity,PoA)
为了避免恶性通货膨胀(太多货币涌入系统),比特币将总供应量限制在了2100万。这就意味着,在某一时间点,比特币区块奖励将会消失,比特币矿工将只能依赖于获得交易手续费。
一些人已经推测这可能会因为“公地悲剧”而导致比特币网络安全问题,人们将会为了私利而破坏系统。所以PoA被创建出来用于替代比特币的激励结构。PoA是一种PoW和PoS的混合方式。
在PoA中,首先以一种传统的PoW方式开始挖矿,矿工相互竞争来解决密码谜团。根据这种实施,挖出的区块不包含任何的交易(它们更像模板),所以赢得的区块将会仅仅包括一个header和该矿工的奖励地址。
这时候,系统将会切换到PoS。基于这个header的信息,一组随机的validators被挑选出来对这个新的区块进行签名。手中持有币越多的validator被选中的概率就越高。一旦这些被选中的validator全部完成对该区块的签名,该模板就成为了一个完整的区块。
如果一些被选中的validator不可用于对该区块进行签名,那么将会被选中对下一个区块进行签名,然后再选出新一组的validators等等,直到区块获得正确数量的签名。手续费将会被分配给矿工和参与区块签名的validator。
PoA遭受了与PoW(挖矿需要的计算能源太多)和POS(无法阻止Validator重复签名)一样的批评。
Decred是目前唯一使用PoA变化形式的加密货币。
燃烧证明(proof of burn,PoB)
对于PoB,不同于将资金投入到昂贵的计算机设备,你可以通过把币发送到不可挽回的地址来“燃烧”这些币。通过把你的币发送到一个永远无法找回的地址,你可以获得一种在某个基于随机选择程序的系统上进行挖矿的终生特权。
根据PoB的实施方式,矿工可以燃烧本地货币或者某种替代区块链的货币,如比特币。你燃烧的币越多,你被选中挖掘下一个区块的概率就越高。
随着时间的推移,你在这个系统上的份额就会减少,所以最终你将会想要通过燃烧更多的币来增加被选中的几率。(这模仿了比特币挖矿流程,你必须持续地投资更加现代的计算设备来保持自己的算力份额。)
尽管PoB是PoW的一种有趣的替代选择,但是这种协议仍旧造成了很多不必要的资源浪费。另一种批评就是挖矿能力只会被那些愿意燃烧更多资金的人所掌控。
能力证明(proof of capacity, PoC)
正如我们所看到的,这些替代性协议中大多数都采用了某种类型的‘付费参与(pay-to-play)’方案。PoC也不例外,但是对于POC,你使用硬盘空间进行‘支付’。你拥有的硬盘空间越多,挖掘下一个区块和获得区块奖励的机会就越高。
通过投入百万兆字节的硬盘空间,你可以为自己买到更好的机会来创建重复区块和分叉系统。但是对于POC,我们仍旧在阻挡不良分子的过程中面临“无风险(nothing-at-stake)”问题。
PoC的一种变体包括存储证明(Proof of storage)和空间证明(Proof of space)。Burstcoin是唯一使用PoB形式的加密货币。
消逝时间证明(Proof of elapsed time)
著名芯片制造商英特尔(Intel)已经提出了自己的替代性共识协议——消逝时间证明(Proof of elapsed time)。这个系统的工作原理类似于PoW,但耗电少得多。
此外,相反于让参与者解决一个密码谜团,这种算法使用了一种受信任的执行环境(TEE)——如英特尔的SGX——来确保以一种随机的方式生成区块。
英特尔的方法是基于一种通过TEE提供的受到保证的等待时间。据英特尔所说,消逝时间证明算法将扩展到数千节点,并高效地运行在所有支持SGX的英特尔处理器上。
这些协议存在的一个问题就是需要你把信任交给英特尔,这与正在摆脱第三方机构的公有区块链相违背。