权益证明常见问题解答

这篇文章详细阐述了权益证明(Proof of Stake, PoS)共识算法的原理、实现以及与工作量证明(Proof of Work, PoW)的比较。内容涵盖了PoS的优势、与拜占庭容错理论的关系、无利益在独立链问题的解决方法、经济最终性等深层次问题,结构清晰且逻辑严谨,适合有一定区块链知识的读者。

权益证明 FAQ

什么是权益证明

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

通常,权益证明算法如下。区块链跟踪一组验证者,任何持有区块链基础加密货币(在以太坊的情况下为以太币)的人都可以通过发送一种特殊类型的交易,使他们的以太币锁定为存款,以成为验证者。然后,通过所有当前验证者都可以参与的共识算法,进行创建和达成新块的过程。

有很多种共识算法,参与者分配奖励的方式也有很多,因此存在多种“风味”的权益证明。从算法的角度来看,主要有两大类:基于链的权益证明和 BFT 风格的权益证明。

基于链的权益证明 中,算法在每个时间槽中伪随机选择一个验证者(例如,每10秒的时间槽),并赋予该验证者创建单个区块的权利,此区块必须指向某个先前的区块(通常是之前最长链末尾的区块),因此,随着时间推移,大部分区块收敛到一条不断增长的单一链中。

BFT 风格的权益证明 中,验证者随机获得提议区块的权利,但关于哪个区块是规范的,则通过多轮流程达成一致,在每一轮中,每个验证者为某个具体区块发送“投票”,在流程结束时,所有(诚实有效)验证者不仅对该区块是否是链的一部分达成一致。请注意,区块可能仍然是相互链结的;关键区别在于,对于一个区块的共识可以在一个区块内达成,而不依赖于其后的链的长短或大小。

与工作量证明相比,权益证明有哪些好处?

请参见 权益证明设计哲学 以获取更详细的论述。

简而言之:

  • 无需消耗大量电力 以确保区块链的安全(例如,据估计, 比特币和以太坊每天的电力和硬件成本超过100万美元)。
  • 由于缺乏高电力消费,因此无需发行很多新币以激励参与者继续参与网络。理论上甚至可能实现净发行,即部分交易费用被“销毁”,从而使供应量随时间减少。
  • 权益证明为更广泛的技术打开了大门,这些技术利用博弈论机制设计以更好地阻止中央卡特尔的形成,并且如果形成时采取对网络有害的行为(例如W工作量证明中的自私挖矿)。
  • 减少中心化风险,由于规模经济问题较小。1000万美元的币只能带来其10倍的收益,而不会获得额外不成比例的收益,因为在更高级别时,你能够负担得起更好的大规模生产设备,这是工作量证明的优势。
  • 运用经济惩罚使各种形式的51%攻击成本上升,相比工作量证明,可以理解成,"假如你参与了51%攻击,你的 ASIC 设备就好像烧掉了一样"。

权益证明如何融入传统的拜占庭容错研究?

拜占庭容错研究中有几个重要成果适用于所有共识算法,包括传统共识算法如 PBFT、任何权益证明算法,以及通过适当的数学建模来研究的工作量证明。

关键结果包括:

  • CAP 定理 - “在网络分区发生的情况下,必须选择一致性或可用性,不能同时拥有两者”。直观的论点很简单:如果网络分为两半,在一半我发送的交易是“将我的10个币发送给 A”,而另一半我发送的交易是“将我的10个币发送给 B”,那么系统要么不可用,因为一条或两条交易不会被处理,要么变得不一致,因为一半的网络会看到第一笔交易的完成,而另一半会看到第二笔交易完成。请注意,CAP 定理与可扩展性无关;它同样适用于分片系统和非分片系统。参见 https://github.com/ethereum/wiki/wiki/Sharding-FAQs#but-doesnt-the-cap-theorem-mean-that-fully-secure-distributed-systems-are-impossible-and-so-sharding-is-futile
  • FLP 不可能性 - 在异步环境下(即,不保证网络延迟的情况下,即便在正常运行的节点之间),不可能创建一种算法,能够在任何特定有限时间内达到共识,如果存在一个失效/不诚实的节点。请注意,这并不排除具有某种概率的“拉斯维加斯算法”(如 拉斯维加斯算法)在每一轮中达到共识,因此,随着 T 增长,该算法在 T 秒内有着接近于1的概率达成共识的能力;这实际上就是许多成功共识算法的“逃生舱”。
  • 容错界限 - 根据 DLS 论文,我们有: (i) 运行在部分同步网络模型中的协议(即,网络延迟是有界限的,但我们事先不知道它的具体限制),可以容忍高达 1/3 的任意(即“拜占庭”)故障, (ii) 在异步模型中的确定性协议(即,网络延迟没有容忍界限)不能容忍故障(尽管他们的论文没有提到随机算法可以 而具备高达1/3的容忍度), (iii) 在同步模型中的协议(即,网络延迟保证小于已知d的界限)可以,令人惊讶的是,容忍高达100%的故障,尽管针对超过或等于1/2节点发生故障时有什么事情的限制。需要注意的是,“认证的拜占庭”模型更值得考虑,而不是“拜占庭”模型;“认证”的部分本质上意味着我们可以在我们的算法中使用公钥密码学,而现代公钥密码学研究非常完备且相对便宜。

工作量证明已经被 安德鲁·米勒 (Andrew Miller) 和其他人严格分析,其作为依赖于同步网络模型的算法适合于这个图景。我们可以将网络模型视为由近乎无限数量的节点信息构成,每个节点代表极小的计算能力,也有非常小的概率在给定时间内产生一个区块。在这个模型中,协议对于零网络延迟具备50%的阻容错误能力,基于实际观察条件下,['以太坊' 约46% 和 '比特币' 约49.5%的节点容忍,而当网络延迟等于区块时间时,容忍度下降至33%,并且随着网络延迟接近无穷大减至零。

权益证明共识更直接融入拜占庭容错共识的模型,因为所有验证者具有已知身份(以太坊稳定地址),而网络跟踪验证者集合的总大小。反馈研究的两个方向,一个是基于同步网络模型,另一个是基于部分异步网络模型。基于“链”的权益证明算法几乎总是依赖于同步网络模型,其安全性可以在这些模型中像工作量证明算法的安全性一样得到形式上的证明。连接传统拜占庭容错共识在部分同步网络与权益证明之间的关联研究也存在,但更复杂难以解释;将在后续部分中详细介绍。

工作量证明算法和基于链的权益证明算法选择可用性而非一致性,但BFT风格的共识算法更倾向于一致性;Tendermint明确选择一致性,而 Casper 使用一种混合模型,更偏向于可用性,但在任何给定时间点尽可能提供最大一致性保证,并使链上应用程序和客户端意识到保证的一致性强度。

请注意,Ittay Eyal 和 Emin Gun Sirer 的 自私挖矿 发现,设定了对比特币挖矿的 25% 和 33% 激励相容性的约束,具体取决于网络模型(即,只有在大规模合谋达到25%或33%时,挖矿才能激励相容),此发现与传统共识算法研究的结果毫无关系,后者并未触及激励相容性的问题。

什么是“没有利益风险”问题,它如何被解决?

在许多早期(所有基于链的)权益证明算法中,包括 Peercoin,仅在生成区块时有奖励,而没有惩罚。这不幸的结果是,在存在多个竞争链的情况下,验证者有动力在每条链上尝试生成区块,只是为了确保:

在工作量证明中,这样做需要将计算能力拆分开来,所以并不划算:

结果是,如果所有参与者都极度经济理性,即便没有攻击者,区块链也可能永远无法达成共识。如果有攻击者,则攻击者仅需压倒利他节点(它们将独自于原始链进行抵押),而无须压倒理性节点(其将在原始链和攻击者的链上都进行抵押),与工作量证明对抗的情况相反,后者中攻击者必须压倒既有利他者也有理性节点(或者至少具有可信威胁:见P + epsilon 攻击)。

有人争辩说,利益相关者有激励做出正确决定,并仅在最长链上抵押以“维护其投资价值”,然而这忽视了激励机制存在的 公共悲剧 问题:每个单独的利益相关者可能只有1%的机会在“关键时刻” (即, 参与攻击会促使攻击成功,不参与则失败),所以需要说服他们个人参与攻击的贿赂金额将仅仅是其存款的1%;因此,总的融资贿赂要求将是所有存款总和的0.5-1%。此外,该论点暗示任何零失败概率的情形并非稳定均衡,因为如果失败概率为零,则所有人都会面临0%的关键时刻机会。

解决方案可通过两种策略实施。第一种策略,广义的描述为“Slasher”,在此处更新,在此处由 Iddo Bentov 进一步开发 [https://arxiv.org/pdf/1406.5694.pdf],在多个链上同时创建区块的情况下,对验证者施以惩罚,方法是将误行为的证明(即两个相互冲突的签名区块头)包含到区块链中,之后该恶意验证者的存款将被适当扣除。这改变了激励结构如以下所示

请注意,为了使该算法有效,验证者集合需要提前确定。否则如果某个验证者具备1%的利益,假设存在两个分支 A 和 B。那么 99% 的时间该验证者将只有资格在 A 上抵押,而无法在 B 上,99% 的时间则是有资格在 B 上,而不是 A,只有 1% 的时间,该验证者将有资格在两个区块上抵押。因此,该验证者能以99%的效率,以概率的方式双重抵押:如果可能则抵押于A,如果可能则抵押于B,只有当 A 和 B 的选择都同时可用时才抵押于较长链上。仅在预先选择时,验证者选择是相同的,才能避免此情况,需在分叉发生前选好验证者。

这会存在自身的缺陷,包括要求节点频繁在线以获取区块链的安全视。但这会带来中等范围的验证者合谋风险(即在某些情况下,例如,连续30个验证者中的25个一起合谋并提前达成一致进行51%攻击前19个区块),但如果这些风险被认为是可接受的,则效果很好。

第二种策略是对在错误链上生成区块的验证者进行惩罚。即,假使存在两个竞争链,A和B,那么如果一个验证者在B上生成区块,他们将在B上获得 +R 奖励,但该块头也可以被包含到 A上(在 Casper 中称之为“dunkle”)然后在A上,该验证者将受到 -F(F = R的可能性)惩罚。这将经济计算改为:

直观上理解,我们可以在权益证明下重现工作量证明的经济学。在工作量证明中,错误链上生成区块也会受到惩罚,但是这种惩罚在外部环境中是隐性的:矿工需支出额外的电力并用额外的硬件进行挖矿。而在此方案中,我们只是将惩罚明确化。该机制的缺点是对验证者略微增加了风险(尽管效果随时间平滑),而且其优势是不要求验证者提前确定。

那展示了基于链的算法如何解决没有利益风险。现在 BFT 风格的权益证明算法是如何工作的?

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

  • 最终性条件 - 决定给定哈希何时可以被认为已最终确定的规则。
  • 惩罚条件 - 决定何时某个验证者在合理怀疑下被认为举止不当的规则(例如,同时对多个冲突区块投票)。如果验证者触发其中某一规则,则其所有存款将被删除。

为了说明惩罚条件的不同形式,我们将给出两个示例(后续提到的“2/3 的所有验证者”是指以存款币为权重的“2/3 的所有验证者”,其他分数和百分比满类推)。在这些示例中,“PREPARE”和“COMMIT”应理解为验证者可以发送的两种消息类型。

  1. 如果MESSAGES包含形式为 ["COMMIT", HASH1, view]["COMMIT", HASH2, view] 的消息,但对于同一view,其中HASH1HASH2由同一验证者签名,则该验证者将受到惩罚。
  2. 如果 MESSAGES 包含形式为 ["COMMIT", HASH, view1] 的消息,则除非 view1 = -1 或同时存在形式为 ["PREPARE", HASH, view1, view2] 的消息,其中的 view2 < view1,并且由2/3的所有验证者签名;否则触发“COMMIT”的验证者将受到惩罚。

对于适用的惩罚条件集,我们有两个重要的愿望:

  • 可追责安全性 - 如果冲突 HASH1HASH2(即 HASH1HASH2 不同且无一为其他的后代)被最终确定,则至少2/3的所有验证者必须违反了一些惩罚条件。
  • 合理的活跃性 - 除非至少2/3的所有验证者违反了一些惩罚条件,则存在一组消息,2/3 的验证者可以生成,最终确定某个值。

如果我们具备一组满足这两条属性的处罚条件,则可以激励参与者发送消息,并从经济最终性中受益。

一般而言,“经济最终性”是什么?

经济最终性的理念是,一旦区块最终确定,或者更一般而言,一旦某些类型的足够数量的消息被签署,那么未来在任何时间点,正当历史中包含冲突区块的唯一方法是相当数量的人愿意烧掉非常大的资金。如果某个节点看到此条件已满足给定块,那么他们便极其有经济把握,该块将永远是所有人一致同意的正当历史的一部分。

经济最终性有两种“风味”:

  1. 如果足够数量的验证者签署了形式为“我同意在所有不包含块B的历史中损失X的”加密经济声明,则区块可以被经济最终确定。这给客户端提供保证:或者(i) B 是规范链的一部分,或者 (ii) 为了哄骗他们认为这是正确的,验证者痛失大量资金。
  2. 如果足够的验证者签署了支持区块B的消息,并且有数学证明表明 如果某个 B' != B 也根据相同定义最终确定,则验证者将损失大量资金。如果客户端看到这一点,且也验证链,并且有效性加最终性是规范分叉选择规则完整的充分条件,则他们将得到保证:或者 (i) B 是规范链的一部分,或者 (ii) 为了构建最终确定的竞争链,验证者损失巨额资金。

这两种最终性途径源于对“没有利益风险”问题的两种解决方案:惩罚不正确与惩罚矛盾的最终性。第一种方法的主要好处是它对于轻客户端更加友好,也更易于理解,第二种方法的主要好处是:(i) 更易于看出诚实的验证者不会受到惩罚,(ii) 骚扰因素对诚实验证者更加有利。

Casper 采用第二种模型,不过有可能将添加一个链上机制,在验证者自主选择加入签署第一种形式的最终性消息,借此实现更高效的轻客户端。

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

传统的拜占庭容错理论假定类似的安全性和活跃性愿望,除了某些细微差别。首先,传统的拜占庭容错理论仅要求如果2/3的验证者是诚实的,那么安全性就得以保障。这是一个相对容易的模型;传统容错尝试证明“如果机制M存在安全缺陷,那么至少1/3的节点是有缺陷的”,而我们的模型尝试证明“如果机制M存在安全缺陷,那么至少1/3的节点有缺陷,而你知道哪些节点,即使在故障发生时你可能处于离线状态”。从一个活跃性的角度看,我们的模型是更容易的,因为我们不要求证明网络_必然_达成共识,我们只要求证明它不会卡壳

幸运的是,我们可以表明额外的可追责因素不是特别困难。事实上,通过正确的“协议护甲”,我们可以将_任何_传统部分同步或异步拜占庭容错算法转换为可追责算法。这一证明基本归结为故障可以被逐一分类为少数几种类别,并且每一类别要么是可追责的(即如果你造成那类故障你能被抓住,所以可以为其制定惩罚条件),要么难以区分于延迟(注意,即使是发送消息太早的故障也与延迟无异,因为可使用全体时钟加速,并将未发送无限早的消息赋予更大延迟进行建模)。

什么是“弱主体性”?

需要注意的是,使用存款确保“有利益风险”的机制确实导致了安全模型的变化。假设存款锁定4个月,之后可以提取。假设发起了一次 51% 攻击,使得10天的交易反转。攻击者创建的区块可以简单地重新导入主链作为不端的证明(或“dunkles”),然后验证者可以受到惩罚。然而,如果此攻击发生在六个月后,那么尽管这些区块肯定可以被重新导入,但到那时,恶意验证者将在主链上能够提取其存款,因此无法被惩罚。

为了解决此问题,我们引入一种“回滚限制”的规则 - 节点必须简单拒绝比存款长度更久的时间段进行回滚(例如,在本示例中为四个月),并且我们还要求节点每个存款长度的时间间隔至少登录一次,以对链具有安全的视角。请注意,该规则与协议中的其他共识规则不同,因为它意味着节点可能根据何时看到某些消息产生不同的结论。一个节点看到特定消息的时间在不同节点之间可能会不同;因此,我们认为该规则是“主体性的”(另外,熟悉拜占庭容错理论的人可以将其视作某种同步假设)。

然而,这里的“主体性”非常弱:节点要想上“错误”链,则必须在接收到原始消息的情况下延迟到四个月后。这只有在两种情况下发生可能:

  1. 当节点首次连接到区块链时。
  2. 如果节点离线超过四个月。

我们可以通过使用户自行负责的方式处理(1) ,以非链式环境认证最新状态。用户可以通过询问朋友、块流量、与之互动的商家等方式获取符合其认知的链中的最近块哈希。在实践中,此类块哈希可能不过是作为他们用于验证该区块链软件的一部分而提供的;能够污染软件中检查点的攻击者同样可以轻易地去污染该软件,而任何纯加密经济的验证方法都无法解决这个问题。尽管(2) 确实为节点增添了额外的安全要求,但是请再度注意硬分叉和安全漏洞的可能性,及时了解它们需安装任何所需的软件更新,这在工作量证明中也是存在的。

需要注意的是,这一问题仅在较为有限的情况下发生:即从某个时间点起的大多数先前利益相关者合谋攻击网络创建替代链;大多数时候,我们期望只有一个规范链可供选择。

我们能否尝试自动化社会认证,以减轻用户的负担?

一种方法是将其纳入自然用户工作流程:类似于 BIP 70 的支付请求可以包括最近的块哈希,用户的客户端软件将确保在批准付款(或者任何链上交互)之前到达与供应商的相同链。另一种方法是采用杰夫·科尔曼的通用哈希时间。如果使用UHT,则需要秘密生成的成功攻击链必需与合法链同时生成,需要大多数验证者秘而不宣进行共谋。

是否可以在权益证明中经济规范化审查?

与回滚不同,审查更为复杂难以证明。区块链本身无法直接区分“用户A尝试发送交易 X 但却被不公平审查”、“用户 A 尝试发送交易 X,但因为交易费用不足而未被处理”以及“用户 A 从未尝试发送交易 X”。参见 关于数据可用性和纠删码的说明。然而,有几种技术可以用于缓解审查问题。

第一个是通过停顿问题抵抗审查。在这种方案的弱版本中,协议设计为具备图灵完备性,使得验证者无法判断给定交易是否会导致不良行为,而不需通过大量处理能力执行该交易,因此对其开放拒绝服务攻击。这正是 阻止 DAO 降级分叉 的原因。

在方案的强版本中,交易可能在不久的未来生成保证效果。因此,用户可以发送多个相互作用的交易,与预计的第三方信息一起触发某个未来事件,但验证者无法判断将会如何进行,直到交易被包含(并且经济最终化),再也为时已晚;即便所有未来交易均被排除,验证者希望阻止的事件仍会发生。请注意,在此方案中,验证者仍然可能试图阻止所有交易,或者干脆阻止所有未附带PROOF补充说明的交易,但这将涉及到禁止非常广泛的交易类,直到完全破坏整个系统,这将导致验证者失去价值,因为以其存款计算的加密货币可能会贬值。

第二种策略是出于 亚当·巴克 而描述此交易需 时间锁加密 (https://www.gwern.net/Self-decrypting%20files)。因此,验证者会包含这些交易而未知内容,而稍后这些内容将自动揭示,这时又为时已晚。尽管如果验证者非常恶意,他们可能仅同意包含带有明文证明(例如 ZK-SNARK)已被解密内容的交易;这会迫使用户下载新客户端软件,但对手可能方便地提供这种客户端软件以供下载,而在博弈论模型中,用户会有激励进行配合。

在权益证明背景下,可以说用户还可以安装包含硬分叉的系统更新,以删除恶意验证者。这并不比安装软件更新来使其交易“审查友好”难。因此,总之该方案也具有中等效果,尽管确实减缓了与区块链的交互节奏(请注意,方案必须强制执行才有效;否则恶意验证者将更容易简化地过滤加密交易而不干预更快速的明文交易)。

第三种选择是将审查检测嵌入到分叉选择规则中。思想很简单。节点监控网络中的交易,如果看到在内容中包含某次有效交易的可预期费用时间较长,则将较低的“得分”指派给不包含该交易的区块链。如果所有节点遵循这一策略,最终相对少的主链会自动形成,这包括了交易,并且所有诚实在线节点会选择此链。此类方案的主要弱点是离线节点仍将跟随主流分支。如果审查是临时的,并且一旦解除其审查便重新上线,则可能会与在线节点结束在不同的分支上。因此,该机制应更多作为促进紧急自动协调的工具,而不是在日常分叉选择中起到积极的作用。

验证者选择是如何工作的?什么是利益操控?

在任何基于链的权益证明算法中,必须有某种机制随机选择在当前活动验证者集中,谁可以创建下一个区块。例如,如果当前活动验证者集中包含 Alice 40 个以太币、Bob 30 个以太币、Charlie 20 个以太币和David 10 个以太币,你会希望 Alice 成为下一个区块创建者的概率约为 40%、Bob 30% 等(在实践中,你希望随机选择的不只一个验证者,而是一个无限序列的验证者,使得如果 Alice 不出现则在一定时间后会有人替代她,但这并不改变基本问题)。在非链算法中,随机性也常必要,但原因不同。

“利益操控”是一类攻击,其中验证者执行某些计算或采取其他措施以试图将随机性向有利于其自身的方向倾斜。例如:

  1. Peercoin中,验证者可以“操控”通过许多参数组合,寻找能够提高其币产生有效区块概率的有利参数。
  2. 在某一已无法使用的实现中,下一个区块N+1的随机性有赖于区块N的签名。这使得验证者能够不断生成新的签名,直到找到允许他们获得下一个块的签名,从而永远掌控系统。
  3. 在 NXT 中,区块 N+1 的随机性依赖于创建区块 N 的验证者。这使验证者可以通过简单跳过一个机会构造随机性。这涉及的机会成本是对应区块奖励,但有时候新的随机源会使得相对少链获得的收益往上升数个平均值。请查看 此处此处 以获取更详细的分析。
  1. 和 (2) 易于解决;一般方法是要求验证者提前存款他们的币,并且不使用容易操控的信息作为随机性的源数据。解决(3) 的主要策略之一是使用基于秘密共享确定性分布式签名方案,并让验证者共同生成该随机值。这些方案对于所有操控都很健壮,除非大多数验证者合谋(在某些情况下,根据实现的不同,上限在33%-50%的验证者均可干扰协议操作,导致协议具有67%的活跃性假定)。第二个方法是使用加密经济方案,验证者需要提前提交信息(即发布 sha3(x)),然后必须在区块中发布 xx 然后被加入到随机性池中。对此存在两个理论攻击向量:

  2. 在承诺时间操纵 x。这不切实际,因为随机性结果将考虑多个参与者的值,如果其中有一个参与者是诚实的,那么输出将是均匀分布。一个均匀分布与任意多个任意偏见分布的异或运算仍然给出一个均匀分布。

  3. 选择性地避免发布区块。然而,这种攻击的机会成本是一个区块奖励,由于该方案防止任何人看到除下一个验证者之外的未来验证者,这几乎从来不会提供超过一个区块奖励的收入。唯一的例外是这样一种情况:如果一个验证者跳过了,下一个排队的验证者和该验证者的第一个子验证者将都是同一个验证者;如果这些情况是严重的问题,我们可以通过明确的跳过惩罚进一步惩罚跳过行为。

第三种方法是使用 Iddo Bentov 的“多数信标”,该方法通过获取之前 N 个随机数(通过某个其他信标生成)中的比特多数来产生一个随机数(即,如果源数中大多数第一个比特是 1,则结果的第一位是 1,否则为 0;结果的第二位是 1 如果源数中的大多数第二个位是 1,否则为 0,以此类推)。这提供了 ~C * sqrt(N) 的利用成本,其中 C 是基础信标的利用成本。因此,总体来说,存在许多已知的解决方案来解决权益打磨问题;这个问题更像是 差分密码分析,而不是 停顿问题 - 这是一个麻烦的事情,权益证明设计者最终理解并现在知道如何克服,不是一种根本性的不可避免的缺陷。

对于 Casper,51% 攻击的等价体现是什么样的?

有四种基本类型的 51% 攻击:

  • 最终性反转 :已经最终确定的验证者块 A 然后最终确定一个竞争块 A',从而打破区块链的最终性保证。
  • 无效链最终化 :验证者最终确定一个无效(或不可用)块。
  • 活性拒绝 :验证者停止最终确定区块。
  • 审查 :验证者阻止某些或所有交易或区块进入链中。

在第一种情况下,用户可以进行社交协调以达成共识,确定哪个最终确定的区块先到,并偏向于该区块。第二种情况可以通过 欺诈证明和数据可用性证明 解决。第三种情况可以通过对权益证明算法的修改来解决,即如果不参与共识,则逐渐减少(“泄露”)不参与节点在验证者集中的权重;Casper FFG 论文 包含了这个的描述。

第四种情况是最困难的。可以通过“少数软分叉”来恢复这一点,其中一小部分诚实的验证者同意大多数正在对他们进行审查,并停止在他们的链上构建。相反,他们继续自己的链,最终上面描述的“泄露”机制确保这个诚实的少数在新链上成为 2/3 的超级多数。此时,市场预计将偏向于由诚实节点控制的链,而不是由不诚实节点控制的链。

这听起来很依赖于社交协调;这不是危险吗?

对 Casper 的攻击成本极高;正如下文所示,对 Casper 的攻击成本与在工作量证明链中购买足够的算力以无限次进行 51% 攻击的成本相当,因此,以上描述的恢复技术只能在极端情况下使用;事实上,工作量证明的支持者通常也表示愿意在类似情况下进行社交协调,比如 更改工作量证明算法。因此,权益证明中对社交协调的需求是否比工作量证明中的需求更大尚不清楚。

事实上,我们预计所需的社交协调量接近于零,因为攻击者会意识到,花费如此巨额的资金仅仅是为了让一个区块链离线一两天并不在他们的利益之中。

MC <= MR 是否意味着所有共识算法在给定安全级别下都是同样高效的(换句话说,同样浪费)?

这是许多人提出的一个观点,或许可以通过 Paul Sztorc 在这篇文章中 进行最好的解释。基本上,如果你创造了一种方式让人们挣钱 100 美元,那么人们愿意花费最多 99.9 美元(包括他们自己劳动的成本)来获得这笔钱;边际成本接近边际收益。因此,这个理论认为,任何具有给定区块奖励的算法在试图获取奖励所进行的社会无效活动的数量上都是同样“浪费”的。

对此有三个缺陷:

  1. 仅仅说边际成本接近边际收益是不够的;还必须假设一个合理的机制,通过该机制可以实际花费该成本。例如,如果明天我宣布从今往后每天我将给从十个人中随机选择的人 100 美元(使用我笔记本的 /dev/urandom 作为随机性),那么没有人可以花费 99 美元来尝试获取该随机性。要么他们不在十人之内,这样无论如何他们都没有机会,要么他们在十人之内,这样他们没有合理的方法操作我的随机性,这使他们只能得到预期价值为 10 美元的奖励。
  2. MC <= MR 并不意味着总成本接近总收入。例如,假设有一种算法随机选择出一千个验证者,每个验证者获得 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 美金。因此,在进行了五次重试之后,就不值得了。结果,一个经济激励的攻击者将花费 5 美元以获得 13 美元额外收益,尽管总收入是 113 美元。如果可利用机制只暴露出小机会,则经济损失将很小;显然,一个单独的可利用性下降并不会导致整个 PoW 级别的经济浪费大量涌回。这个观点在我们下面关于资本锁定成本的讨论中也将非常相关。
  3. 权益证明可以通过远低于工作量证明的总奖励来获得安全保障。

资本锁定成本呢?

将 X 以太锁定在存款中并不免费;这会牺牲以太持有者的选择权。现在,如果我有 1000 以太,我可以随心所欲地使用它;如果我将其锁定在存款中,那么它将被困在那里几个月,我也将失去例如支付突发意外费用的资金保险效用。我还会在这一时间范围内失去某些改变我的代币配置离开以太的自由;我可以通过在交易所做空等于存款的以太来模拟出售以太,但这本身就带来了包括交易所费用和支付利息的成本。一些人可能会争辩:难道这种资本锁定低效不是另一种高度间接的方式来实现与工作量证明中存在的完全相同程度的经济低效?答案是否定的,因为上面提到的两个原因和第三个原因。

让我们首先从(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。我们从最近的采矿统计中估计出这个比例:Bitfury 的新数据中心之一消耗 0.06 焦耳/千兆哈希 ,或者 60 J/TH,或 0.000017 kWh/TH,如果我们假设整个比特币网络具有类似的效率,我们得到 27.9 kWh 每秒,基于 167 万 TH/s 的比特币总算力。中国的电价是 $0.11/kWh ,大约是每秒 3 美元,或每天 260,000 美元。比特币区块奖励加费用是 600 美元/ BTC 13 BTC/块 144 块/天 = 每天 1.12 亿美元。因此,电力本身将占成本的 23%,我们可以大致估计维护为 10% 来得到简单的 1/3 持续成本,2/3 固定成本的分割。这意味着,在你的 1000 美元基金中,只有 111 美元用于 ASIC,56 美元用于支付持续成本,833 美元用于投资,因此,攻击的马济诺线成本在我们的原始设定下降低了 9 倍。
  3. 存款是临时性的,而不是永久性的。当然,如果我自愿永远进行质押,这样的变化也没有任何影响。然而,我重新获得了一些之前的选择权;我可以在中期时间内(比如,4 个月内)随时退出。这意味着我将愿意为每年 50 美元的收益投入超过 1000 美元的以太;也许在均衡状态下这变成了 3000 美元。因此,PoS 的马济诺线攻击成本 _增加_了三倍,从而在整体上,PoS 提供的安全性是 PoW 的 27 倍。

上述包含了大量的简化建模,然而它证明了多个因素是如何显著支持 PoS 的方式,使 PoS 在安全性方面的收益更大。关于为什么这个 或许看起来可疑的多因素论证 强烈倾斜于 PoS 的元论证很简单:在 PoW 中,我们直接与物理定律打交道。在 PoS 中,我们可以设计协议,使其具有我们想要的确切属性——简而言之,我们可以 优化物理定律以对我们有利。给我们 (3) 的“隐藏门”的变化是安全模型的改变,特别是引入弱主观性。

现在,我们可以谈谈边际/总成本的区别。在资本锁定成本的情况下,这一点非常重要。例如,考虑一个你拥有 100,000 美元以太的情况。你可能打算长时间持有其大部分;因此,锁定即使 50,000 美元以太也应该是几乎免费的。锁定 80,000 美元会稍微不方便,但 20,000 美元的活动空间仍然给你留了较大的余地。锁定 90,000 美元则更麻烦,锁定 99,000 美元则非常麻烦,锁定所有 100,000 美元则是荒谬的,因为这意味着你甚至没有一毫克以太用于支付基本交易费用。因此,你的边际成本迅速增加。我们可以展示这种情况与工作量证明中的情况的不同,如下所示:

因此,权益证明的 成本可能远低于系统中再存入 1 以太的边际成本乘以当前存入的以太数量。

请注意,论点的这一部分不幸无法完全转换为“安全发行水平的减少”。这对我们有帮助,因为它表明即使在我们将发行量保持在非常低的水平下,我们仍然可以获得大量的权益证明参与,但这也意味着大部分收益将由验证者作为经济剩余享有。

在权益证明中,交易所是否会导致像工作量证明中矿池那样的中心化风险?

从中心化的角度来看,在 比特币以太坊 中,协调 51% 攻击大约需要三个矿池(比特币中需要 4 个,以太坊在撰写本文时需要 3 个)。在 PoS 中,如果假设 30% 的参与率包括所有交易所,那么 三个交易所 就足以发动 51% 攻击;如果参与率上升到 40%,那么所需的数量增加到 8。然而,交易所无法使用它们所有的以太进行参与;原因是它们需要容纳提款。

此外,PoS 中的池化是不被鼓励的,因为它具有更高的信任要求 - 一个权益证明池可以假装被黑客攻击,摧毁其参与者的存款并声称获得奖励。另一方面,能够在不自己运行节点的情况下赚取利息,即使需要信任,这也是许多人可能觉得有吸引力的;总体而言,中心化的平衡是一个经验问题,直到系统实际运行一段时间之后才会有不清楚的答案。随着分片,我们预计池化激励进一步减少,因为 (i) 关于方差的担忧更少,以及 (ii) 在分片模型中,交易验证负载与一个投资的资本数量成正比,因此从池化中没有直接的基础设施节省。

最后一点是,在权益证明中,中心化的危害性低于工作量证明,因为从成功的 51% 攻击中恢复的成本更低;不需要切换到新的挖矿算法。

有经济手段来阻止中心化吗?

Vlad Zamfir 建议的一种策略是只部分摧毁受到削减的验证者的存款,将摧毁的百分比设定为与最近受到削减的其他验证者的百分比成比例。这确保在实际攻击发生时,验证者失去他们所有的存款,但在一次性错误情况下只有一小部分存款会被摧毁。这使得低安全性质押策略成为可能,并且特别激励验证者使他们的错误尽可能不相关(或者理想情况下,反相关)于其他验证者;这涉及到不在最大的矿池中,将自己的节点放在最大的虚拟私人服务器提供商上,甚至使用次要的软件实现,所有这些都增加了去中心化的程度。

权益证明可以用于私有/联盟链吗?

通常是可以的;任何权益证明算法都可以用作私有/联盟链设置中的共识算法。唯一的变化是,验证者集的选择方式将不同:它将首先作为一组所有人都认可的受信任用户,然后由验证者集投票决定新增验证者。

多货币权益证明能否工作?

对用户可以质押任何货币或多种货币的权益证明协议非常感兴趣。然而,这些设计不幸引入了经济挑战,这将使得它们带来的麻烦远远超过任何潜在的好处。关键问题包括:

  • 价格预言机依赖 :如果人们在多种加密货币中进行质押,则需要一种方法来比较一种与另一种的存款,从而公平分配提案权、确定是否达到了 2/3 的阈值等。这需要某种形式的价格预言机。这可以以去中心化的方式完成(例如,见 Uniswap),但这引入了另一个可能被验证者操控和攻击的组件。
  • 病态加密货币 :人始终可以创建一种病态构造的加密货币,以使惩罚的影响无效。例如,可以想象一种法币支持的代币,其中协议作为惩罚被没收的代币会被追踪,但不被发行者承认,而被惩罚者的原始余额会被承认。这种逻辑甚至可以在一个智能合约中实现,无法确定给定货币是否内置有这样一种机制。
  • 减少的激励对齐 :如果除了协议的基本代币外,还可以使用其他货币进行质押,这会降低质押者对看到协议继续运作和成功的兴趣。

进一步阅读

https://github.com/ethereum/wiki/wiki/Casper-Proof-of-Stake-compendium

  • 原文链接: vitalik.eth.limo/general...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Vitalik Buterin
Vitalik Buterin
https://vitalik.ca/