批准证明(Proof-of-Approval)- "一个更好的区块链共识协议"

作者:Shunsai Takahashi - 高桥顺斋 Read in English

批准证明(Proof-of-Approval)“一个更好的区块链共识协议”

2018年3月15日,12分钟阅读

本文于2018年5月27日针对协议更新进行了更新。

区块链是账本。它们像政府机构或金融机构一样,在一个账本中记录信息(交易、资产等)。它们的不同之处在于,没有一个实体或组织拥有或控制这个账本。这个帐本是公开的,任何人都可以查看。此外,任何人都可以要求在其中记录一项交易,并且在某些限制下,该交易会被记录下来。一旦一项交易被记录在帐本中,它应该永远留在帐本中。这一属性通常被称为 “最终性”(finality) ,简单地说,如果帐本显示某人今天拥有某样东西,而他或她没有进行交易或消费,那么他或她在下一年、下十年或下一个世纪仍将拥有它。

区块链如何在没有人信任的情况下实现所有这些功能,以确保这个账本的安全?这只有通过以下方式才能实现。

  1. 有多方为了自己的利益而工作,以及
  2. 一个协议,或一个循序渐进的程序,供各方确定什么进入帐本,什么在帐本中。

可以想象,上述协议被称为共识协议,对区块链相当关键。事实上,一个区块链的安全性由其共识协议决定(A Survey on Security and Privacy Issues of Bitcoin)。如果共识协议选择不当,将使区块链容易受到攻击,损害其数据并使其失去作用。 这篇文章介绍了一个新的,也许是更好的协议,以实现区块链的理想功能。该协议的完整描述可以在论文Proof-of-Approval区块链的分布式共识协议中找到。

审批证明 #

使用该协议的网络以预定的时间间隔定期发布块,称为槽(slot)。每个槽位最多可以创建一个区块,而有些槽位可能不创建任何区块。该协议定义了另一个更大的间隔,包含预定的槽数,称为epoch。

该协议是无许可的,即各方(节点)可以自由地加入和离开网络。对于每个档期,网络中的几个节点有最低的股份,被允许竞争创建区块。获胜区块的创造者将获得区块中包含的新币和交易费用的奖励。

一个区块必须由持有法定股权的利益相关者批准,才能有效并被放入区块链中。区块创建者在网络上广播他们的区块,接收节点验证并选择批准这些区块。节点通过向区块创建者发出明确的消息来表明他们的批准。只要被批准的区块共享同一个父体,批准者可以选择批准多少个区块。如果不是,这些批准被认为是冲突的,不能使用。批准者(拥有有效的批准)按其在网络中的利益比例得到奖励。

当批准的数量超过所需的法定数量时,区块创建者将收集到的批准信息广播给网络。下一个区块的创建者将把这些批准放在他们创建的区块内。存储在区块内的批准股权也决定了哪些币卷的所有者被允许创建下一个区块。对于每一个档期,区块创建者都会在含有最高存储批准权的区块上进行创建。

一个纪元的最后一个块是特殊的,因为它包含纪元批准。纪元批准类似于块批准,但被设计用来接收来自慢速或间歇性连接的节点的批准。纪元审批的奖励与区块审批的奖励差不多,但与区块审批不同的是,需要很少的计算或网络连接。纪元批准鼓励所有节点,甚至那些计算或网络能力有限的节点,签署和批准链。纪元批准阻止了历史攻击。

如果网络遇到通信困难,只要能达到利益相关者的法定人数,它将继续正常运作。如果不是,许多槽位将不会创建任何区块,直到连接性改善。一个使用Proof-of-Approval的区块链可能看起来像图1。

图1:批准证明区块链

分叉优先权的确定 #

当一方首次加入网络,或在中断后重新加入网络时,它可能会收到来自其他参与者的多个分叉,必须选择首选分叉来构建区块。它使用以下程序。

  1. 如果分叉不相等,选择最长的分叉。请注意,分叉的长度是分叉所跨越的槽的数量,而不是其中包含的块的数量。
  2. 如果分叉有任何不共享的历时,首先选择有不共享历时的首选分叉(如下),拒绝其他分叉。
  3. 如果仍有多个分叉,则选择在其头块存储有最高批准者权益的分叉。

用不共享的历时确定首选分叉。

  1. 对于每一对分叉,确定未共享的纪元和区块,然后确定创建任何区块、或批准任何区块、或批准任何纪元、或签署任何交易(转移或花费他们的股权)的各方。我们称这些为 “签署 “方。
  2. 确定所有 “签署 “方在每个分叉的第一个独立区块中的总股权分数(占网络总股权)。
  3. 在第一个分离区块中选择签字桩分数较大的分叉。

如何处理区块链和赌注的相互依赖性? #

任何基于赌注的决策过程都必须考虑到区块链每个区块的赌注变化,而这些赌注在每次分叉中都可能是不同的。如果不能考虑到这种赌注的变化,可能会导致多个不同的分叉同时成为首选分叉,导致区块链的失败。批准证明(Proof-of-Approval)通过以下两个属性解决了这个问题。

  1. 每个区块都限制了可以转让的最大赌注金额(占网络总赌注的百分比)。这可以防止不同分叉中的各方的股权过快增长。一个典型的实施方案可能会把这个数额设定为网络总股份的0.5%-1%。
  2. 批准被存储在区块链中,以防止长距离攻击,并非常迅速地解决分叉之间的偏好。事实上,只需要一个额外的区块来确定首选分叉。

区块链的理想属性 #

为了实现其目标,区块链必须具备以下属性。

安全属性 #

由于区块链是分布式系统,它们必须容忍系统故障和参与者的恶意行为。一个拥有许多奇妙属性但无法承受这种对抗性条件的区块链最终将被对手控制,导致其失败。以下属性被用来衡量区块链的安全性。

对抗性容忍 Adversarial Tolerance #

它是对手在没有获得区块链控制权的情况下可以控制的区块链最关键资源的最大部分。预计区块链的性能会随着对手力量的增加而日益恶化,最终导致其灾难性的失败。

持久性 #

持久性是衡量区块链中的记录(区块)的持久性。与集中式账本不同的是,交易一旦记录下来就是永久的,而区块链上记录的交易可能不那么持久,至少在记录后的一段时间内不那么持久。对于区块链来说,持久性可能是目标交易后存储的区块数量的一个概率函数。什么会导致一条记录从区块链上消失?区块链网络决策过程有时可以选择一个备用分叉,将所有其他分叉中的区块从区块链中移除。一个区块被移除的几率会随着在一个区块之上添加额外的区块而下降。

Weak-finality和finality是持久性量表上的点,可能对实际目的有用。弱最终性可以被认为是电子商务交易的 “足够好 “的持久性,例如运送货物。最终性,也被称为 “强一致性”,是可与主流金融系统相比的持久性。

其他理想的属性 #

Liveness 活性

活性属性意味着,与目标时间表相比,区块被添加到区块链的频率。如果区块没有被添加,那么区块链就没有完成其记录交易的工作。一个理想的区块链会完全按照计划添加区块,没有任何空隙。大多数区块链,在典型的操作条件下,能够实现接近其目标的有效性。

公平性

公平性意味着一个区块链的奖励过程有多容易被利用。区块链打算按照对其最关键的资源的比例提供奖励,这可以是采矿能力、网络股权或任何其他指定标准。各方会试图获得不公平的奖励份额,但应该被阻止。一个理想的区块链将完全阻止任何试图赢得不公平比例的奖励的人。

可扩展性、交易率和分片

区块链的可扩展性是其交易率和分片特性的组合。交易率只是其两个设计属性的结果–区块大小和区块时间周期。虽然一个新的区块链可以很容易地选择这些值,但一个公共区块链可能需要代码升级和网络共识来对这些属性进行更改。

分片是一种通过将每个节点的工作负荷分给许多并行运行的节点来进一步增加区块链中存储的交易数量的方法。为了采用分片,区块链可能需要代码升级和网络共识。

一般来说,交易率和分片都与区块链的设计选择有很大关系,而不是一些非凡的技术。安全,而不是高交易率,是当今大多数公共区块链的主要设计关注点。

与流行区块链的比较 #

这里的比较将集中在安全性上,这是区块链最关键的方面。这里使用每个区块链和协议自己的文件和分析来进行比较。为了使比较容易理解,在相同的情况下使用数字,而不是复杂的表达方式。

该比较着眼于区块链的对抗性容忍度,以及它们在这些对抗性条件下的表现。两种对抗力量被用于比较–25%和略低于50%(今天没有区块链能容忍50%或更高的对抗力量)。持久性的比较是通过任意定义弱最终性为 “五个九”(99.999%)的确定性,最终性为 “十二个九 “的确定性。

下面几段讨论单个区块链,而图3显示了整体的比较结果。

图3:与流行区块链的比较

理想协议 #

一个理想的协议,如果它存在的话,在这里被用来作为其他区块链的衡量标准。正如预期的那样,它能完全阻止对手(容忍度为100%),并提供即时的弱最终性和最终性(0个区块)。

比特币 #

比特币的PoW协议可以容忍25%的对抗性采矿能力。在25%的对抗性采矿能力下,它在11个区块后实现了弱最终性,在26个区块被存入目标交易后实现了最终性(On Settlement Finality)。由于该协议在超过25%的对抗性挖矿能力时失败,所以在≈50%的对抗性挖矿能力时,弱最终性和最终性永远无法实现。

以太坊和以太坊与Casper FFG #

就像比特币一样,以太坊和带有Casper FFG的以太坊使用PoW,可以容忍25%的对抗力量,并导致相同的弱最终性和最终性结果。Casper FFG并没有提高以太坊的对抗性容忍度,也似乎没有对本次比较所定义的弱最终性和最终性产生影响。

瑞波(XRP) #

Ripple的对手容忍度只有20%(The Ripple Protocol Consensus Algorithm),因此在我们的比较中,它从未实现过任何一个最终性措施。

瑞波公司称自己是企业区块链。虽然Ripple确实使用了类似区块链的数据结构,而且它确实让节点在自己的计算机系统上存储数据,而且它可能是一个 “企业 “应用,但它不是一个真正的区块链,因为有以下原因。

  1. 它并没有解决拜占庭将军问题(BGP)。BGP设置指出:“然而,他们中的一个或多个可能是叛徒,会试图迷惑其他人。问题是要找到一种算法来确保忠诚的将军们达成一致”。Ripple解决了这个问题的非常简单的版本(很容易找到一群诚实的将军来努力达成共识)。
  2. 它并没有消除对可信第三方的需求。正如中本聪在《比特币:一个点对点的电子现金系统》中所说,”……如果仍然需要一个受信任的第三方来防止双重消费,那么主要的好处就失去了。“另一方面,瑞波币允许,甚至可能需要人工干预。

Steem, Tezos Alpha和EOS(DPoS)。 #

Steem、Tezos Alpha和EOS使用的DPoS都依赖于DPOS共识算法–《失踪的白皮书》中描述的共识协议,其重点是在 “区块生产者 “被选中后的共识过程。该文件假设不超过1/3的区块生产者是对抗性的,这意味着该协议的对抗性容忍度是总股份的1/3。但这是完全错误的。

来自论文 有多少Steem人没有投票给证人?我找到了答案!Steem的秘密#6:见证者的投票是最多的!我们知道,只有大约7.5%的用户实际投票(或有代理)选择区块生产者。很容易看出,拥有15-20%股份的对手可以主导区块生产者的选择过程,导致>1/3的区块生产者是对手的。因此,在25%或更高的对抗性股权中,交易不太可能实现弱最终性或最终性。 DPoS的对抗性容忍实际上可能更糟糕。由于每一方都被期望投票选举区块链生产者,一个诚实的一方只会想投票给另一个诚实的一方。一个人唯一能确定的诚实的一方就是他们自己。这很可能会使诚实的投票变得支离破碎,在这种情况下,大多数政党都会为自己投票。另一方面,对抗性政党串通一气。这将导致对抗性候选人获得未被分割的选票并赢得区块生产者的位置。因此,在对抗性攻击下,大多数区块生产者可能是对抗性的,损害了区块链。

NEO #

使用实用拜占庭容错的变体,该协议实现了即时终结性,最大的对手容忍度为33%的节点。虽然这可能听起来相当强的容忍度,但应该注意的是,这是33%的节点,而不是33%的网络股权。破坏这个区块链只需要33%或更多数量的节点的对抗性。 创建对抗性节点会产生计算成本。使用DigitalOcean的小液滴,人们可以创建10,000个节点,成本仅为70美元/小时。一个拥有30,000个节点的NEO区块链,只需70美元的计算费用就可以被打败了

卡达诺 Cardano #

Cardano使用Ouroboros。一个可证明的安全取证区块链协议用于其共识。这是一个经过深思熟虑的协议,确实超过了Steem和EOS.IO的DPoS能力。在25%的对抗性权益下,它表现得相当好,但在50%的对抗性权益下,实现弱最终性和最终性需要成千上万的区块。

Ton #

TON区块链提出了很多主张,但并没有披露任何有关这些主张如何实际实现的信息。简单地说,他们的主张更可能是幻想而不是现实。

Dfinity #

Dfinity协议在DFINITY技术概述系列共识系统中描述。虽然该协议的分析根据其假设坚持其主张,但其最基本的假设(来自第4.2节线程模型的假设1),打破的成本相当低,可能导致对手控制区块链。这里的分析将使用Dfinity论文的10,000个节点的例子,并将尝试估计创建10,000个违反假设1的对抗性节点的成本。

创建每个对抗性节点将产生两个障碍–计算资源成本和注册。使用DigitalOcean的小液滴,人们可以创建10,000个节点,成本仅为70美元/小时。这个数额是如此微不足道,以至于它甚至不会进入随后的计算中。Dfinity文件的第8.2.2节规定,使用未指定的抗塞比尔方法注册节点,其中可能包括背书、锁定存款、PoW拼图或权威机构的认证。这些抗塞比尔方法中的每一种都可以转化为成本–创建虚假身份的成本、PoW的资源成本、存款成本或贿赂其他诚实节点的成本。如果Dfinity网络打算吸引新成员,这个成本就不能设置得太高。假设每个节点的成本为100美元的中级Sybil屏障,对手只需要花费100万美元就可以破坏网络。这个成本比攻破PoW或PoS系统所需的1000-5000万美元小得多。事实上,在10,000个节点时,Sybil的障碍必须提高到1,000-5,000美元,才能使对手同样困难。情况实际上更糟糕。没有一个网络,包括Dfinity,可以从一开始就有10,000个节点。在开始的时候,它的节点数会小得多,很可能低于1000个。要想在只有1000个节点的情况下保证网络的安全,需要将每个节点的Sybil障碍提高到10,000-50,000美元。一个网络不可能以这样的进入成本吸引许多节点。

审批证明 #

论文Proof-of-Approval。区块链的分布式共识协议的第3.2节定义了分析的参数。选择(νc + νa + νe)=0.00001,δ=0.005,ρ=0.5001的结果是对手的股权ε<0.49509,非常接近50%。

第3.3.1节显示,一旦一个或多个区块被存放在目标交易之上,弱最终性和最终性就得到了满足。

对 “Proof of approval” “的分析显示了一些非常有希望的结果。即将发表的一篇文章将关注与区块链的扩展有关的理论和实践问题,以及解决这些问题的架构模式。

参考文献 #

  1. 拜占庭将军问题
  2. 比特币:一个点对点的电子现金系统
  3. 批准证明。区块链的分布式共识协议
  4. 关于比特币安全和隐私问题的调查
  5. 关于和解的最终结果
  6. 瑞波协议的共识算法
  7. DPOS共识算法 - 失踪的白皮书
  8. Steem秘诀#6: 见证者的投票是最多的!
  9. 有多少Steemians不投票给证人?我找到了答案!
  10. 实用拜占庭式容错
  11. Ouroboros:一个可证明的安全取证的区块链协议
  12. DFINITY技术概述系列共识系统