区块链共识算法Proof-of-Stake (PoS/权益证明) 常见问题解答 (1)

Original post: https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ

什么是Proof-of-Stake

权益证明(PoS)是一种公共区块链的共识算法类别,它依赖于验证者在网络中的经济利益 。 在基于工作证明(PoW)的公共区块链(比如比特币和当前实施的以太坊)中,算法奖励解决密码难题的参与者,以验证交易并创建新的区块(即采矿)。 在基于PoS的公共区块链(例如以太坊即将推出的Casper实现)中,一组验证者轮流在下一个区块提出投票并投票,每个验证人投票的权重取决于其存款的大小(即股权)。 PoS的显着优势包括安全性,集中化风险降低和能源效率 。

一般来说,赌注算法的证明如下所示。 区块链跟踪一组验证器,任何持有区块链基础加密货币(在以太坊的情况下为ether)的人都可以通过发送一种特殊类型的事务来锁定他们的以太币进入存款 ,从而成为验证器。 然后通过所有当前验证者都可以参与的共识算法完成创建和同意新块的过程。

共识算法有很多种,并且有许多方法可以将奖励分配给参与共识算法的验证者,所以存在许多证明利益的“风味”。 从算法的角度来看,有两种主要类型:基于连锁的股权证明和BFT风格的股权证明。

在基于链的利益证明中 ,算法在每个时隙期间伪随机地选择验证器(例如,每10秒的周期可能是一个时隙),并且赋予该验证器创建单个块的权利,并且该块必须指向先前的某个区块(通常是前一个最长链末端的区块),并且随着时间的推移,大多数区块都会汇聚成一个不断增长的链条。

在BFT风格的证据中 ,验证者被随机赋予建议块的权利,但是同意哪个块是规范的是通过多轮处理来完成的,其中每个验证者在每一轮期间发送对某个特定块的“投票”,以及在这个过程结束时,所有(诚实的和在线的)验证者都会永久地同意是否给定的块是链的一部分。 请注意,块可能仍然链接在一起 ; 关键的区别在于,一个区块的共识可以在一个区块内,并且不依赖于它之后的链的长度或大小。

与工作量证明相比,证明利益的好处是什么?

请参阅证明设计理念,以获得更长期的论证。

简而言之:

  • 为了确保区块链, 不需要消耗大量电力 (例如,估计比特币和以太坊每天都会耗费超过100万美元的电力和硬件成本,作为其共识机制的一部分)。
  • 由于缺乏高耗电量,为了激励参与者继续参与网络,发行尽可能多的新硬币并不是那么需要 。理论上甚至有可能出现净发行,其中一部分交易费用被“烧掉”,因此供应随着时间的推移而下降。
  • 股权证明为更广泛的使用博弈论机制设计的技术打开了大门,以便更好地阻止集中卡特尔的形成,并且如果它们确实形成了以对网络有害的方式行事(例如像自私采矿证明工作)。
  • 由于规模经济问题少得多,所以降低了集中化风险 。 1000万美元的硬币将使您获得比100万美元硬币高10倍的回报,而没有任何额外的不成比例的收益,因为在更高的水平上,您可以购买更好的大规模生产设备。
  • 能够使用经济处罚来使各种形式的51%攻击比开展工作证明的开销大得多 - 将Vlad Zamfir解释为:“就好像你的ASIC农场被烧毁了,如果你参与了51%的攻击”。

利益证明如何适应传统的拜占庭容错研究?

拜占庭容错研究的一些基本结果适用于所有一致性算法,包括PBFT等传统一致性算法,但也包括任何证据权利算法,以及适当的数学建模和工作证明。

主要成果包括:

  • CAP定理 - “在网络分区发生的情况下,您必须选择一致性或可用性,您不能同时拥有两者”。直观的论点很简单:如果网络分成两半,并且一半发送交易“将我的10个硬币发送给A”,另一个发送交易“将我的10个硬币发送给B”,则系统因为一个或两个交易将不会被处理,或者会变得不一致,因为网络的一半将看到第一个交易完成,另一半将看到第二个交易完成。 请注意,CAP定理与可伸缩性无关; 它同样适用于分片和非分片系统。
  • FLP不可能 - 在异步设置中(即,即使在正确运行的节点之间,网络延迟也没有保证的界限),但不可能创建一种算法,如果甚至一个单一的存在有故障/不诚实的节点。 请注意,这并不排除“拉斯维加斯”算法在每一轮达成共识时都有一定的概率,因此会在T秒内达到一致,随着T增长,概率呈指数级逼近1; 这实际上是许多成功的共识算法使用的“逃生孵化器”。
  • 容错的界限 - 从DLS文件中我们可以得出 :(i)运行在部分同步网络模型中的协议(即网络延迟有约束但我们不知道它是什么)可以容忍多达1 / 3任意(即“拜占庭式”)故障,(ii)异步模型中的确定性协议(即没有网络延迟的限制)不能容忍故障(尽管他们的论文没有提及随机算法可以达到1/3 (iii)同步模型中的协议(即,网络延迟保证小于已知的d )可以令人惊讶地容忍高达100%的容错性,尽管在多于或等于1/2节点有故障。 请注意,“认证的拜占庭式”模型是值得考虑的模型,而不是“拜占庭式”模型; “认证”部分基本上意味着我们可以在我们的算法中使用公钥密码术,这在现代已经非常好地研究并且非常便宜。

Andrew Miller等人严格分析了工作证明,并将其作为一种依赖于同步网络模型的算法。 我们可以将网络建模为由几乎无限的节点组成,其中每个节点代表非常小的计算能力单位,并且在给定时间段内能够创建块的可能性非常小。 在该模型中,协议具有50%的容错能力,假设网络延迟为零,在实际观察条件下约为46%(Ethereum)和〜49.5%(比特币)容错,但如果网络延迟等于块,则容量降至33%时间,并随着网络延迟接近无穷大而减少到零。

由于所有验证人都已知身份(稳定的以太坊地址),并且网络跟踪验证程序集的总大小,因此证明利益共识更符合拜占庭容错共识的模式。 有两个一般的证据研究证据,一个是同步网络模型,另一个是部分异步网络模型。 利益相关算法的“链式”证明几乎总是依赖于同步网络模型,其安全性可以在这些模型中得到正式验证,类似于证明工作算法证明的安全性。 在部分同步网络中连接传统的拜占庭式容错共识的研究与利益证明也存在,但更复杂的是要解释; 它将在后面的章节中详细介绍。

工作算法证明和基于链的证据算法选择可用性而不是一致性,但是BFT风格的一致性算法更倾向于一致性; Tendermint明确选择一致性,Casper使用一种混合模型,该模型优先考虑可用性,但尽可能提供一致性,并使得链上应用程序和客户端都意识到一致性保证在任何给定时间有多强。

请注意,Ittay Eyal和Emin Gun Sirer的自私挖掘发现,根据网络模型,比特币挖掘的激励相容性设置了25%和33%的限制(例如,如果大于25%或33%不可能)与传统共识算法研究的结果没有关系,这不会影响激励相容性。

什么是“没有危险”的问题,如何解决?

在许多早期(包括所有连锁店)的赌金算法证明中,包括Peercoin在内,只会产生奖励奖励,并且不会受到惩罚。 这具有不幸的后果,即在有多个竞争链的情况下,验证者试图一次尝试在每条链上创建块,只是为了确保:

img

在工作证明中,这样做需要将自己的计算能力分解成一半,因此不会有利可图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tzodRdcv-1587458087713)(https://github.com/vbuterin/diagrams/raw/master/powsec.png?raw=true)]

结果是,如果所有参与者都是经济上狭义的理性的话,即使没有攻击者,区块链也可能永远不会达成共识。 如果存在攻击者,那么攻击者只需要压制无私的节点(谁将独占原始链),而不是理性的节点(谁可以同时关注原始链和攻击者的链),而不是工作证明,攻击者必须压制利他主义者和理性结点(或者至少可以威胁到:看到P +ε攻击 )。

有人认为,利益相关者有正确行动的动机,只为了“保持投资价值”而维持最长的链条,然而这忽视了这种激励遭受公共问题的悲剧 :每个利益相关者可能只有一个1%的可能性是“关键”(即,如果他们参与攻击则成功,如果他们不参与则失败),因此贿赂需要说服他们亲自参加攻击只占其存款规模的1%; 因此,所需的合并贿赂仅为所有存款总额的0.5-1%。 另外,这个论点意味着任何零失败的情况都不是一个稳定的均衡,就好像失败的机会是零,那么每个人都有0%的关键机会。

这可以通过两种策略解决。 第一种是在这里以“Slasher”这个名称广义描述的,Iddo Bentov 在这里进一步发展,如果它们同时在多个链上创建块,则通过包括错误行为的证明(即两个冲突的签名块标题)作为以后的时间点,区块链中的犯罪确认者的存款被适当地扣除。 这样就改变了激励结构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mfI6odXc-1587458087714)(https://github.com/vbuterin/diagrams/raw/master/slasher1sec.png?raw=true)]

请注意,为了使该算法起作用,验证程序集需要提前确定。 否则,如果验证者拥有1%的股份,那么如果有两个分支A和B,则验证者只有0.99%的时间有资格只在A上而不在B上,则0.99%的验证者将会有资格投资B而不是A,并且只有0.01%的时间将会使验证人有资格同时参与投标。 因此,如果可能的话,验证人可以以99%的效率概率性地双重利益:如果可能的话对A的利益,如果可能的话对B的利益,并且只有当两者之间的选择是对较长链的开放利益时。 只有在两个分支上的每个块的验证器选择都相同时才能避免这种情况,这需要在fork发生前一次选择验证器。

这有其自身的缺陷,包括要求节点经常在线以获得区块链的安全视图,并打开中等范围的验证器合谋风险(即,例如,30个连续验证器中的25个会聚并同意提前对前19个街区实施51%的攻击),但如果这些风险被认为是可以接受的,那么它效果很好。

第二个策略是简单地惩罚在错误链上创建块的验证器。 也就是说,如果有两个竞争链A和B,那么如果一个验证者在B上创建一个块,他们在B上得到+ R的奖励,但块头可以包含到A中(在Casper中称为a “dunkle”),并且在A上验证者受到-F(可能是F = R)的惩罚。 这就改变了经济计算:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W45zs4iF-1587458087716)(https://github.com/vbuterin/diagrams/raw/master/slasher2sec.png?raw=true)]

这里的直觉是我们可以在证明利益的情况下复制工作证明的经济学。 在工作证明中,在错误的链上创建一个区块也是一种惩罚,但这种惩罚在外部环境中是隐含的:矿工不得不花费额外的电力并获得或租用额外的硬件。 在这里,我们只是明确规定处罚。 这种机制的缺点是它对验证者施加了更多的风险(尽管效果应该随着时间的推移而被平滑掉),但是它的好处是不需要提前知道验证者。

这显示了链式算法如何解决风险。 现在BFT风格的证据算法如何工作?

BFT风格(部分同步)证据算法允许验证者通过发送一种或多种类型的签名消息对块进行“投票”,并指定两种规则:

  • 最终条件 - 确定给定哈希何时可以被认定为最终的规则。
  • 削减条件 - 决定何时可以认为某个验证者无可置疑的行为不当(例如同时投票多个冲突块)的规则。 如果验证者触发这些规则之一,则其整个存款将被删除。

为了说明削减条件可以采取的不同形式,我们将给出两个削减条件的例子(下文中,“2/3的所有确认者”是“存入硬币加权的所有确认者的2/3”的简写),并且对于其他分数和百分比)。 在这些例子中,“PREPARE”和“COMMIT”应该被理解为简单地指代验证者可以发送的两种类型的消息。

  1. 如果MESSAGES包含相同view的形式为["COMMIT", HASH1, view]["COMMIT", HASH2, view]形式的消息,但由同一个验证器签名的HASH1HASH2不同,则验证器被削减。
  2. 如果MESSAGES包含形式为["COMMIT", HASH, view1] ,则除非view1 = -1,或者对于某些特定view2还存在形式为["PREPARE", HASH, view1, view2]的消息,其中view2 < view1 ,由所有验证器的2/3签名,然后使提交的验证器被削减。

对于一组合适的削减条件,有两个重要的要求:

  • 负责任的安全 - 如果相冲突的HASH1HASH2 (即HASH1HASH2不同,并且两者都不是另一方的后代)最终确定,那么至少有1/3的验证者必须违反了一些削减条件。
  • 似是而非的生活 - 除非所有验证人中至少有1/3违反了一些削减条件,否则存在一组验证人可以产生的一组消息,最终确定一些价值。

如果我们有一套满足这两个属性的削减条件,那么我们可以激励参与者发送消息,并开始从经济终结中受益。

一般来说,“经济终极”是什么?

经济最终性是这样的想法,即一旦一个区块被完成,或者更一般地说,一旦已经签署了足够的特定类型的消息,那么在将来任何时候经典历史将包含冲突区块的唯一方式是如果大量人们愿意焚烧大量的金钱。 如果一个节点看到这个条件已经满足给定的块,那么他们在经济上有强有力的保证,该块将永远是每个人都同意的规范历史的一部分。

有两种经济最终的“味道”:

  1. 如果足够数量的验证人签署了“我同意在不包含块B的所有历史记录中丢失X的形式”的隐性经济索赔,则可以经济地确定块。 这给客户保证,(i)B是规范链条的一部分,或者(ii)验证者为了诱骗他们认为情况如此,损失了大量金钱。
  2. 如果足够数量的验证程序签署了表示支持块B的消息,并且有一个数学证明, *如果某个B’!= B也在相同定义下完成,*则验证程序会损失大量金钱。 如果客户看到了这一点,并且验证了该链条,并且有效性加上最终性是规范分岔选择规则中优先级的充分条件,那么他们得到(i)B是规范链的一部分,或者(ii)验证人在制作一个相互冲突的链中也损失了大量的资金,这个链也是最终确定的。

这两种终极方法从两种解决方案中继承了无关紧要的问题:通过惩罚不正确来实现终结性,并通过惩罚含糊不清来实现终结性。 第一种方法的主要好处是,它更轻量级的客户端,更容易推理,第二种方法的主要好处是(i)更容易看出诚实的验证者不会受到惩罚,并且( ii)悲伤因素更有利于诚实的验证者。

卡斯帕遵循第二种风格,虽然可能会增加链上机制,验证者可以自愿选择签署第一种风味的最终消息,从而实现更高效的轻客户端。

那么这与拜占庭容错理论有何关系?

传统的拜占庭容错理论除了有一些不同之处外,其他安全性和活性也具有相似的安全性和活性。 首先,传统的拜占庭容错理论只要求2/3的验证者是诚实的就可以实现安全。 这是一个非常容易工作的模型; 传统容错试图证明“如果机制M有安全故障,那么至少1/3节点有故障”,而我们的模型试图证明“如果机制M有安全故障,则至少有1/3节点是错误的,即使你在失败发生时离线,你也知道哪些是错误的。“ 从活力的角度来看,我们的模型更容易,因为我们不要求证明网络达成共识,我们只是要求证明它不会被卡住

幸运的是,我们可以证明额外的责任要求不是特别困难的要求; 实际上,通过使用正确的“协议装甲”,我们可以将任何传统的部分同步或异步拜占庭式容错算法转换为可交付算法。 这种证据基本上归结为这样一个事实,即错误可以被彻底地分为几类,并且这些类中的每一类都要负责任(即,如果你犯了这种错误,你可能会被抓到,所以我们可以或者与延迟无法区分(请注意,即使发送邮件过早的错误与延迟也没有区别,因为可以通过加快每个人的时钟速度并分配发送得太早的邮件以更高的延迟进行建模) 。

什么是“弱主观性”?

值得注意的是,使用存款来确保“存在风险”的机制确实会导致安全模型发生一次变化。 假设存款被锁定了四个月,以后可以撤回。 假设发生了一次企图发生的51%的攻击,恢复了10天的交易。 攻击者创建的数据块可以简单地导入主链中,作为渎职证据(或“dunkles”),验证者可以受到惩罚。但是,假设这种攻击发生在六个月后。 然后,尽管这些街区肯定可以重新进口,但到那时渎职犯罪确认者将能够在主链上收回他们的存款,因此他们不会受到惩罚。

为了解决这个问题,我们引入了一个“回复限制” - 一个规则,即节点必须拒绝进一步恢复到比存款长度更远的时间(即在我们的示例中为四个月),并且我们还需要节点登录至少每个存款长度有一个安全的链条视图。 请注意,该规则与协议中的每个其他共识规则都不同,因为这意味着节点可能根据他们何时看到某些消息而得出不同的结论。 节点看到给定消息的时间在不同节点之间可能不同;因此我们认为这个规则是“主观的”(或者,精通拜占庭容错理论的人可能认为它是一种同步假设)。

然而,这里的“主观性”非常弱:为了让节点进入“错误”链,他们必须在四个月后收到原始消息。 这只有在两种情况下才有可能:

  1. 当一个节点第一次连接到区块链时。
  2. 如果某个节点已脱机超过四个月。

我们可以通过使用户负责验证带外最新状态来解决(1)。 他们可以通过询问他们的朋友,区块探索者,他们与之互动的企业等等,来获得他们认为是规范链的最近街区散列。 在实践中,这种块散列很可能只是作为他们用来验证区块链的软件的一部分; 一个能够破坏软件检查点的攻击者可以说很容易破坏软件本身,并且没有任何纯粹的经济学验证可以解决这个问题。 (2)确实为节点增加了额外的安全要求,但是再次注意到存在硬性分支和安全漏洞的可能性以及需要了解它们并安装任何所需的软件更新的要求,也工作。

请注意,所有这些都只是在一个非常有限的情况下出现的问题,在这种情况下,大多数以前的利益相关者会在某个时间点混合攻击网络并创建替代链; 大多数时候我们预计只有一个规范链可供选择。

我们是否可以尝试使社交认证自动化以减轻用户的负担?

一种方法是将其烘焙成自然的用户工作流程: BIP 70式支付请求可能包括最近的块散列,并且用户的客户端软件将在批准付款之前确保它们与供应商处于同一链中(或用于这一点,任何链上的互动)。 另一种是使用Jeff Coleman的通用散列时间 。 如果使用UHT,那么在建立合法链的同时,需要秘密生成一个成功的攻击链,这需要大多数验证者秘密地串通那么长时间。

为了证明利益,能否在经济上惩罚审查?

与回复不同,审查更难以证明。 区块链本身并不能直接说出“用户A试图发送交易X但遭到不公正审查”,“用户A试图发送交易X但由于交易费用不足而无法进入”和“用户A从未尝试过完全发送交易X“。但是,有许多技术可以用来缓解审查问题。

首先是阻止问题的审查阻力。 在该方案的较弱版本中,该协议被设计成图灵完成的方式,使得验证器甚至不能分辨给定的交易是否会导致不希望的行为而不花费执行交易的大量处理能力,从而使自己面临拒绝服务攻击。 这是阻止DAO软分叉的原因

在该计划的更强版本中,交易可以在近期或中期的某个未来的某个时间触发保证效果。 因此,用户可以发送多个交易,这些交易彼此交互并且与预测的第三方信息相互作用以导致未来的事件,但是验证者不可能知道在交易已经包括(并且经济地确定)之前这将发生,阻止他们为时已晚; 即使所有未来的交易都被排除在外,验证人希望停止的事件仍会发生。 请注意,在这个方案中,验证者仍然可以尝试阻止所有的交易,或者也许所有的交易都没有包含一些正式的证据,证明他们不会导致任何不希望的事情,但是这会导致禁止一系列非常广泛的交易从根本上破坏了整个系统,这会导致验证人失去价值,因为他们的存款被称为加密货币的价格将会下降。

第二种, 在这里由Adam Back描述 ,要求交易是时间加密的 。 因此,验证人将在不知道内容的情况下包括交易,并且以后才可以自动显示内容,此时再次解除交易是太迟了。 但是,如果验证者具有足够的恶意,他们可能只会同意包含带有加密证明(例如ZK-SNARK)的解密版本的交易; 这将迫使用户下载新的客户端软件,但对手可以方便地提供这样的客户端软件以便于下载,并且在游戏理论模型中,用户将有动力去玩。

也许最好的证据就是用户可以安装一个软件更新,其中包含一个硬分叉,可以删除恶意的验证器,这比安装软件更新来完成他们的交易要困难得多“审查友好”。 因此,所有这些方案都是适度有效的,尽管它的确是以减少与区块链相互作用的代价为代价的(注意该方案必须是强制性的才能有效;否则恶意验证者可以更容易地简单地过滤没有加密的交易过滤更快的未加密的交易)。

第三种选择是在分岔选择规则中包含审查检测。 这个想法很简单。 节点观察网络的交易情况,如果他们看到交易费用足够高并且交易时间足够长,那么他们会为不包含此交易的区块链分配较低的“分数”。 如果所有节点都遵循这一策略,那么最终少数连锁企业会自动合并,包括交易,并且所有诚实的在线节点都会遵循它。 这种方案的主要缺点是离线节点仍然会跟随大多数分支,如果审查是暂时的,并且在审查结束后又重新登录,那么它们最终会落在与在线节点不同的分支上。 因此,该计划应该被视为一种工具,以促进硬叉上的自动应急协调,而不是在日常分岔选择中发挥积极作用的工具。

验证程序选择如何工作,以及什么是赌注打磨?

在任何基于链的证明算法中,都需要一些机制来随机选择当前有效的验证器集中的哪个验证器可以构成下一个块。 例如,如果当前活动的验证器集合由40以太的爱丽丝,30以太的鲍勃,20以太的查理和10以太的大卫组成,那么你希望爱丽丝有40%的机会成为下一个创作者, Bob有可能会有30%的机会,等等(实际上,你想随机选择一个验证器,而不是一个验证器,所以如果Alice没有出现,有人可以在一段时间后替换她,但这并没有改变基本问题)。 在基于非链的算法中,由于不同的原因也常常需要随机性。

“磨削”是一类攻击,验证者执行一些计算或采取其他步骤尝试按照自己的偏好来偏向随机性。 例如:

  1. Peercoin中 ,验证者可以通过许多参数组合“ 磨砺 ”并找到有利参数,这些参数可以提高他们的硬币产生有效区块的可能性。
  2. 在一个现在已经不存在的实现中,块N + 1的随机性取决于块N的签名。这允许验证器重复产生新的签名,直到他们找到允许他们获得下一个块的签名为止,从而夺取了对系统永远。
  3. 在NXT中,块N + 1的随机性取决于创建块N的验证程序。这允许验证程序通过跳过创建块的机会来操纵随机性。 这带有与块奖励相等的机会成本,但是有时候新的随机种子会给验证者在接下来的几十个块上提供高于平均数量的块。 在这里看到更详细的分析。

(1)和(2)易于解决; 一般的做法是要求验证人事先妥善存放他们的硬币,而不要使用易于操作的信息作为随机性的源数据。 (3)解决问题有几种主要策略。 首先是使用基于秘密共享确定性阈值签名的方案,并使验证器协同生成随机值。 这些方案对所有操作都是强大的,除非大多数验证者勾结(在某些情况下,根据实施情况,33-50%的验证人可能干扰操作,导致协议拥有67%的活性假设)。

其次是使用密码经济方案,其中验证者事先提交信息(即发布sha3(x) ),然后必须在块中发布x; 然后x被添加到随机池中。 有两个理论上的攻击媒介:

  1. 在承诺时间处理x 。这是不切实际的,因为随机性结果会考虑许多参与者的价值观,如果他们中的一个是诚实的,那么产出将是一个统一的分配。均匀分布与任意多个任意偏差分布异或,仍然可以得到均匀分布。
  2. 有选择地避免发布块。然而,这种攻击会花费一个区块奖励机会成本,并且由于该方案阻止任何人看到除未来验证者之外的任何未来验证者,所以它几乎从不提供超过一个区块奖励值得的收入。唯一的例外情况是,如果验证程序跳过,则下一个验证程序在行,并且验证程序的第一个孩子将是同一个验证程序; 如果这些情况是一个严重的问题,那么我们可以通过明确的跳过惩罚惩罚进一步跳过。

第三个是使用Iddo Bentov的“多数信标”,它通过获取通过其他信标产生的先前的N个随机数的位大部分来产生随机数(即,如果大多数信标的结果的第一位是1源数字中的第一个比特为1,否则为0,如果源数字中的大部分第二个比特为1,则结果的第二个比特为1,否则为0等)。这给出了一个低成本的开采的~C * sqrt(N)地方C是底层信标开采成本。因此,总而言之,存在许多已知的放样磨削解决方案;问题更像差分密码分析而不是停止问题 - 一个让利益相关者设计师最终理解并现在知道如何克服的证据的烦恼,而不是一个根本性和不可避免的缺陷。

相当于对卡斯帕51%的攻击是什么样子?

“51%攻击”的最基本形式是简单的终结性回复:验证人已经完成了A块,然后完成了一些竞争性块A’,从而打破了区块链的最终保证。在这种情况下,现在存在两个不兼容的最终历史记录,创建区块链的分割,完整节点愿意接受,因此社区需要协调带外以专注于其中一个分支并忽略其他)。

这种协调可以通过社交媒体,通过区块资源管理提供商之间的私人渠道,企业和交易所,各种在线讨论形式等进行。根据该决定将进行的原则是“哪一个是完成第一次是真正的一个”。另一种选择是依靠“市场共识”:两家分支机构将在短时间内在交易所进行短暂交易,直到网络效应迅速使其中一个分支机构更有价值。在这种情况下,“首先确定的连锁赢利”原则将成为市场选择的Schelling点。这两种方法的组合很可能会在实践中得到应用。

一旦对哪个链是真实的一致达成共识,用户(即验证者和轻量级和完整节点操作员)将能够通过接口中的特殊选项手动将获胜块散列插入到其客户端软件中,并且他们的节点将忽略所有其他连锁店。无论哪条链获胜,都有证据表明可以立即用来摧毁至少1/3的验证人存款。

另一种攻击是活性否定:不是试图恢复块,而是验证者> 34%的卡特尔可能会拒绝最终确定更多块。在这种情况下,块永远不会最终确定。 Casper使用混合链/ BFT风格的共识,所以区块链仍然会增长,但它的安全性要低得多。如果一段时间内(例如1天)没有任何块被完成,那么有几种选择:

  1. The protocol can include an automatic feature to rotate the validator set. Blocks under the new validator set would finalize, but clients would get an indication that the new finalized blocks are in some sense suspect, as it’s very possible that the old validator set will resume operating and finalize some other blocks. Clients could then manually override this warning once it’s clear that the old validator set is not coming back online. There would be a protocol rule that under such an event all old validators that did not try to participate in the consensus process take a large penalty to their deposits.
  2. A hard fork is used to add in new validators and delete the attackers’ balances.

在情况(2)中,通过社会共识和可能通过市场共识(即新老验证者设置的分支在短时间内在交易所进行交易),再次协调分支。在后一种情况下,有一个强有力的论点是,市场会选择“好人取胜”的分支,因为这样的一个连锁店有证实他们的善意(或者至少与他们的利益一致用户),对于应用程序开发人员来说,这是一个更有用的链。

请注意,这里介绍了社会协调和协议内自动化之间的一系列响应策略,通常认为最好尽可能推动自动化解决方案,以尽量减少51%的攻击和社会攻击同时发生的风险层(以及市场共识工具,如交易所)。我们可以设想一个实现(1)如果节点在一段足够长的时间内没有看到一个新块被提交,那么节点自动接受切换到新的验证器集合,这将减少社会协调的需要,但代价是需要那些不希望依赖社交协调的节点不断在线。在任何一种情况下,攻击者都可以设计一个解决方案,让攻击者对他们的存款造成大的打击

更加阴险的攻击是审查攻击,其中> 34%的验证人拒绝最终确定包含某些他们不喜欢的交易的区块,但否则区块链会继续运行,并且区块会继续最终确定。这可能包括温和的审查攻击,只有审查人员干涉某些特定的应用(例如,选择性地审查诸如雷电之类的交易或闪电网络是卡特尔窃取资金的相当简单的方法)交易。

有两个子情况。第一个是攻击者拥有34-67%股份的地方。在这里,我们可以对验证者进行编程,拒绝完成或构建他们主观认为会清楚检查交易的块,从而将这种攻击转变为更加标准的活跃攻击。更危险的情况是攻击者拥有超过67%的股份。在这里,攻击者可以自由阻止任何他们希望阻止的交易,并拒绝在任何包含此类交易的块上构建。

有两条防线。首先,因为以太坊是图灵完成的,它自然有点抵制审查制度,因为审查交易具有一定的效果,在某种程度上类似于解决停止问题。由于存在天然气限制,尽管“简单”的方法可以打开拒绝服务攻击漏洞,但这不是不可能的。

这种阻力并不完美,并且有办法改进它。最有趣的方法是添加协议内功能,交易可以自动调度未来事件,因为要预测执行预定事件的结果以及由这些预定事件产生的事件是否提前会非常困难。然后验证程序可以使用模糊事件的混淆序列来存储它们的以太网,并将攻击者稀释到33%以下。

其次,可以引入“积极的分支选择规则”的概念,其中确定给定链是否有效的过程的一部分是试图与其交互并验证它不试图对你进行审查。要做到这一点,最有效的方法是节点重复发送一个事务来安排存储他们的以太网,然后在最后时刻取消存款。如果节点检测到审查情况,他们就可以跟踪存款,因此暂时加入验证池,将攻击者稀释到33%以下。如果验证卡特尔审查他们的存款尝试,那么运行此“活动分支选择规则”的节点将不会识别该链条有效;这会使审查攻击陷入生存否认攻击,此时可以通过与其他生存拒绝攻击相同的方式解决该问题。

这听起来像是很大程度上依赖于带外社会协调; 这不危险吗?

对卡斯帕的袭击非常昂贵; 正如我们将在下面看到的那样,对卡斯帕的攻击花费的成本甚至比购买足够的采矿权的成本要高得多,甚至不会超过工作链证明中永久51%的攻击力一次又一次地攻击无用点。因此,上述恢复技术只能用于非常极端的情况; 实际上,工作证明的支持者也普遍表示愿意在类似的情况下使用社会协调,例如通过改变工作证明算法。因此,甚至不清楚在证明利益方面进行社会协调的需求大于在工作证明方面的需要。

事实上,我们预计所需的社会协调数量接近于零,因为攻击者会意识到,焚烧如此大量的资金以使区块链脱机一两天是不利的。

MC => MR是否意味着所有具有给定安全级别的共识算法都具有相同的效率(换言之,同样浪费)?

这是许多人提出的论点,也许在本文中Paul Sztorc最好地解释。从本质上讲,如果你为人们赚取100美元创造一种方式,那么人们将愿意花费高达99.9美元(包括他们自己的劳动力成本),以获得它; 边际成本接近边际收入。因此,该理论认为,任何具有给定块奖励的算法在试图获得奖励的社会非生产性活动的数量方面同样是“浪费的”。

这有三个缺陷:

  1. 仅仅说边际成本接近边际收入是不够的;我们也必须设定一个合理的机制,让某人真正花费这笔费用。例如,如果明天我宣布从那时起每天我会给100美元给一个给定的十人名单中的一个(使用我的笔记本电脑的/ dev / urandom作为随机),那么任何人都无法发送99美元试图获得这种随机性。要么他们不在十人名单中,在这种情况下,不管他们做什么,他们都没有机会,或者他们在十人名单中,在这种情况下,他们没有任何合理的方式来操纵我的随机性,再坚持每天获得10美元的预期价值。
  2. MC => MR并不意味着总成本接近总收入。例如,假设有一个算法从一些非常大的集合中伪随机地选择了1000个验证器(每个验证器获得1美元的奖励),那么你有10%的股份,所以平均你得到100,并且花费1美元你可以强制随机重置(你可以重复这个无限次)。由于中心极限定理,你的奖励的标准差为$ 10,并根据数学其他已知结果 N个随机样本的预期最大小幅正在M + S * sqrt(2 * log(N))这里M是平均值,S是标准偏差。因此,进行额外试验的奖励(即增加N)急剧下降,例如。 0重新审判你的预期奖励是100美元,一个重审105.5美元,两个108.5美元,其中三个110.3美元,其中四个111.6美元,五个112.6美元,六个113.5美元。因此,在五次再审之后,它不值得这样做。因此,拥有10%股权的经济动机的攻击者将无效率地花5美元获得13美元的额外收入,尽管总收入为113美元。如果可利用的机制只暴露小机会,经济损失就会很小;显然不是这样的,只有一滴利用率就会带来整个经济浪费的洪水泛滥。这一点也将在我们下面关于资本锁定成本的讨论中非常相关。
  3. 股权证明可以以比工作证明低得多的总奖励得到保证。

那么资本锁定成本呢?

将X乙醚锁定在存款中并不是免费的;它为乙醚持有者带来了选择性的牺牲。现在,如果我有1000乙醚,我可以随心所欲地做任何事情;如果我将它锁定在存款中,那么它就会在那里呆上几个月,例如,我没有这笔钱的保险实用程序来支付突如其来的意外支出。在那段时间内,我也失去了一些自由地将我的令牌分配从以太改变为以太网;我可以模拟通过卖空相当于交易所存款的数额来卖出以太币,但这本身带有成本,包括交换费和支付利息。有人可能会说:不是这种资本锁定效率低下真的只是一种高度间接的方式来达到与工作证明中存在的经济效率完全相同的低效率水平吗?答案是否定的,由于上述两个原因(2)和(3)。

我们先从(3)开始。考虑一个模型,其中股权存款证明是无限期的,ASIC持续存在,ASIC技术是固定的(即没有摩尔定律),电费为零。假设均衡利率为每年5%。在工作区块链的证明中,我可以花1000美元将它转换为矿工,矿工每年会为我支付每年50美元的奖励。在股权区块链证明中,我会购买1000美元的硬币,存入它们(即永久丢失它们),并且每年获得50美元的奖励。到目前为止,情况看起来完全对称(技术上,即使在这里,在证明利害关系的情况下,我的硬币销毁并不具有破坏性,因为它使其他人的硬币更值钱,但我们可以暂时搁置)。 “马奇诺线”51%攻击的成本(即。购买比其他网络硬件更多的硬件)在这两种情况下增加1000美元。

现在,让我们依次对我们的模型进行以下更改:

  1. 摩尔定律存在,ASIC每2.772年贬值50%(这是每年连续复合的25%;选择使数字更简单)。如果我想保留同样的“支付一次,永远赚钱”的行为,我可以这样做:我将1000美元投入基金,其中167美元将投入ASIC,其余833美元将投资于5%的投资;每年41.67美元的股息将足以不断更新ASIC硬件(假设技术发展完全持续,再次使数学更简单)。奖励将降至每年8.33美元;因此,83.3%的矿工会退出,直到系统恢复到平衡状态,我每年挣到50美元,因此给予相同奖励的PoW攻击的马奇诺线费用下降6倍。
  2. 电力加上维护占采矿成本的1/3。我们估计最近的采矿统计数据为1/3:Bitfury的新数据中心之一消耗0.06焦耳/千兆赫,或者60 焦耳/兆赫或0.000017千瓦时/ 焦耳,如果我们假设整个比特币网络的效率相似,则我们可以得到27.9千瓦时第二个给出了总计比特币总量达到167万TH /秒。中国的电费为每千瓦时0.11美元,所以这是每秒约3美元,或每天260,000美元。比特币区块奖励加费用是每个BTC 600美元*每块13 BTC *每天144块=每天112万美元。因此,电力本身将占成本的23%,我们可以将信封估算维护成本降低10%,以获得1/3的持续成本,2/3的固定成本分摊。这意味着在1000美元的基金中,只有111美元进入ASIC,55美元用于支付持续成本,833美元用于硬件投资;因此马奇诺线的攻击成本比我们原来的设置低9倍。
  3. 存款是暂时性的,而不是永久性的。当然,如果我自愿永远坚持下去,那么这不会改变。但是,我恢复了以前的一些选择性;我可以随时在中等时间范围内(比如4个月)退出。这意味着我愿意为每年50美元的收益投入超过1000美元的乙醚;也许处于平衡状态,它会像3000美元一样。因此,Maginot对PoS线路攻击的成本增加了三倍,所以净PoS比同样成本的PoW多出27倍的安全性。

以上内容包含了大量的简化建模,但是它表明了多种因素对PoS的重视程度,使得PoS在安全性方面获得更大的优势。为什么这种可疑的多因素争论倾向于支持PoS 这个论点很简单:在PoW中,我们直接使用物理定律。在PoS中,我们能够设计协议,使其具有我们想要的精确属性 - 总之,我们可以优化对我们有利的物理定律。给我们(3)的“隐藏陷门”是安全模型的变化,特别是弱主观性的引入。

现在,我们可以谈论边际/全面的区别。在资金锁定成本的情况下,这非常重要。例如,考虑一个你有100,000美元乙醚的情况。你可能打算长期保存它的很大一部分;因此,锁定甚至5万美元的乙醚应该几乎免费。锁定80,000美元会稍微不方便,但20,000美元的呼吸室仍然给你一个大的回旋空间。锁定9万美元更成问题,99,000美元是非常棘手的问题,锁定所有10万美元是荒谬的,因为这意味着您甚至没有足够的余额支付基本交易费用。因此,您的边际成本迅速增加。我们可以将这种状况与工作证明的状况区分开来,如下所示:

img

因此,证明利害关系的成本可能远低于将1个以上ETH存入系统的边际成本乘以当前存储的乙醚数量。

请注意,不幸的是,这一论点的这一部分并不完全转化为“安全发行水平”的降低。它确实帮助我们,因为它表明我们可以获得股权参与的实质证明,即使我们的发行量很低,然而,这也意味着收益的很大一部分将由验证者作为经济剩余来承担。

证明利益的交换是否会对工作证明中的集合构成类似的集中化风险?

从集中化的角度来看,比特币以太坊都需要大约三个池来协调51%的攻击(比特币中的4个,撰写本文时为Ethereum中的3个)。在PoS中,如果我们假设所有交易所的参与率为30%,那么三次交易就足以构成51%的攻击;如果参与率达到40%,那么所需的数量将增加到8个。然而,交流将无法参与其中的所有事情。原因是他们需要适应提款。

此外,PoS中的合并不鼓励,因为它具有更高的信任要求 - 利益集合证明可以假装被黑客入侵,破坏参与者的存款并要求其奖励。另一方面,即使信任是必需的,在没有自己经营节点的情况下也能够通过个人的硬币获得利息的能力是很多人可能会觉得有吸引力的;总之,中央集权平衡是一个经验问题,在系统实际运行一段相当长的时间之前,答案是不清楚的。随着分拆,我们预计集中激励会进一步减少,因为(i)对于方差的关注更少,以及(ii)在分片模型中,交易验证的负担与投入资本的数量成正比,因此在那里没有直接的基础设施节约。

最后一点是,中央集权对证明利益的危害比工作证明中的小,因为从成功的51%攻击中恢复的成本要低得多,一个不需要切换到一个新的挖掘算法。

有没有经济的方法来阻止集权?

Vlad Zamfir提出的一个策略是仅部分地破坏被削减的验证者存款,并将其销毁的百分比与最近被削减的其他验证者的百分比成正比。这确保验证人在发生实际攻击时会丢失所有存款,但在发生一次性错误时只能扣除一小部分存款。这使得安全性较低的放样策略成为可能,并且特别激励验证者使其错误与其他验证器尽可能不相关(或者理想的是,反相关);这不涉及最大的池,将节点放在最大的虚拟专用服务器提供商上,甚至使用二级软件实施,所有这些都增加了分散性。

可以在私人/联合体链中使用证据吗?

一般来说,是的; 任何赌注算法的证明都可以用作私人/联盟链设置中的一致性算法。唯一的变化是验证者集合的选择方式会有所不同:它将以每个人都同意的一组可信用户开始,然后由验证者集合对添加新验证器进行投票。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐