作者:Alan Szepieniec

来源:https://neptune.cash/blog/proof-of-stake-is-not-objective/

PoS 是被提议用来代替 PoW 的共识机制。PoS 不需要消耗能源,只需要矿工(在 PoS 系统中通常被称为 验证者 )通过 质押 数字资产的方式参与区块创建流程。在质押机制的激励下,验证者会为了保住自己的质押物而遵守规则。从理论上来说,如果验证者都是诚实的,网络可以很快就交易顺序达成共识(从而分辨出哪些是无效的重复花费交易)。

PoS 已经成为饱受争议的热点话题。大多数批评都是围绕安全性提出的:PoS 是否会降低攻击成本?还有很多人从社会学的角度提出了几点忧虑:权力集中化、财富集中化、财阀统治,等等。

在本文中,我要提出一个更基础的批评:PoS 本质上是主观的。视角不同,所认定的 PoS 区块链的真实历史(correct view)就会不同(译者注:“correct” 直译为 “正确”,但英文中的 “correct” 的意思比中文的 “正确” 更多样,下文译为 “真实”。在本文语境内,跟下文的 “canonical(权威的)” 可以共通)。因此,a)攻击成本无法以区块链的内部货币单位计算,导致安全性分析无效;b)如果参与方没有就哪些第三方是可信的达成共识,则无法结算债务;c)解决纠纷必须依赖法院。

相比之下,PoW 是一种客观的共识机制,即,任何相关方和非相关方对于区块链真实历史的看法都是一致的。因此,任意两名经济参与者都能就一笔付款是否完成达成共识,无需法院或有影响力的社区成员介入。这一差异决定了 PoW 适合作为数字货币的共识机制,而 PoS 不适合。

数字货币和共识

1. 需要解决的问题

计算机能够执行的最基本操作之一是复制信息。该操作可以确保原件保持不变,并以零成本创造出一模一样的复制品。只要是数字的,计算机都能复制。

但是,有些只存在于数字世界的东西 无法 复制。这些东西既是数字化的,又具有稀缺性。比特币以及其它基于区块链的数字资产就是很好的例子。它们可以发送,但是一旦发送出去,原件也就跟着消失了。人们对于市场为何需要这些资产或许持不同看法,但是这种需求的存在本身就意味着这些数字资产可以作为交易的标的。精炼成一个词就是:货币

为了实现数字稀缺性,区块链协议在全网复制账本。账本可以更新,但是只能添加满足以下条件的交易:

  1. 已获得被花费的数字资产的所有者的同意
  2. 输入和输出的净总和为零
  3. 输出为正

任何无效更新都会被拒绝。只要所有协议参与者都就账本状态达成共识,数字稀缺性就有了保障。

事实证明,达成共识是一项艰巨的任务。网络状况不佳会产生不同版本的历史。数据包也有可能出现丢失或传输顺序错误的问题。产生分歧是所有网络的共性。

2. 分叉选择规则

区块链通过两个步骤解决了这个问题。第一,区块链对所有交易进行排序,不同版本的历史可以表示为树状的图谱;第二,区块链为交易历史定义了 标准,并通过相应的 分叉选择规则 从版本树中选出公认真实的分支(canonical branch,“canonical” 直译为 “神圣的”,下文译为 “权威的”,以突出它的公认正确属性;值得一提的是,有效性只是权威性的必要条件,包含无效交易的历史无法参与竞争)。

得到信任的权力机构或数字公投方案可以轻而易举地赋予权威性。但是,被信任的权力机构会变成系统的单点故障中文译本),而且依靠政府提供身份证明服务会将原本无关政治的密码学货币变成一种政治工具。此外,这两种方案都假设所有人能够对第三方的身份和可信度达成共识。我们希望减少这种信任假设。理想的解决方案是完全基于数学来决定权威性。

这种将权威性建立在数学之上的解决方案具备一个显著特点:计算结果不受计算者的影响。这就是客观共识机制的意义所在。但是,有一点尤其值得注意:我们必须假设所有参与者都认可同一个参照点,例如,创世块或创世块的哈希摘要 。客观的共识机制能够让任何一方根据这个参照点来推定真实的交易历史。

交易历史树上的 哪个 分支被视为权威的并不重要。重要的是所有参与者都认同这一选择。此外,整棵树不需要在任何一台计算机上清楚地显示出来。相反,每个节点存储少数分支就够了。在这种情况下,分叉选择规则在任何时候都只测试两个候选交易历史。严格来说,“权威的 交易历史”这个说法具有误导性。这里的权威性是一个相对的概念。节点会抛弃权威性较弱的分支,广播权威性较强的分支。每当一个交易历史被添加了一批新的交易,其权威性就会增强。

为了让网络快速产生共识、找出权威的交易历史,分叉选择规则需要具备两个特性。第一,该规则必须定义明确,可以用来有效评估任意两个交易历史;第二,该规则必须在任意三个交易历史中具有传递性。转换成数学语言就是:假设 U、V 和 W 代表任意三个交易历史,“<”表示分叉选择规则喜欢右边的交易历史更胜于作左边的,则:

  • 要么 U < V,要么 V < U
  • U < V 加上 V < W ,即可得出 U < W

为了让账本支持更新,交易历史必须能够以兼容分叉选择规则的方式续写。因此,分叉选择规则还需要具备另外两个特性。第一,假设有两个交易历史,一个是另一个的续写版本,则分叉选择规则必须倾向于续写版本;第二,相比非权威交易历史的续写版本,(过去)权威的交易历史的续写版本被判定合法的可能性更高。假设 E 代表续写的内容,|| 代表续写的操作,则:

  • U < U || E
  • U < V => Pr [U || E < V || E] > 1/2

最后一个特性会激励诚实的扩展者专注于续写权威的交易历史,而非已知不够权威的交易历史。在这种激励的影响下,诚实但又相互矛盾的续写版交易历史之间只有顶端存在不同,也就是只跟 最近 的事件有关。 一个事件被记录得越早,就越不可能出现另一个更早并且更权威的历史版本造成重组、将该事件推翻。从这个角度来看,权威的历史版本可以定义为网络中的历史版本不断收敛到达的极限 1

上一段落所述过程的一个明显不足是需要续写者诚实守信。如果续写者 作恶 怎么办?如果作恶者可以控制概率表达式中隐含的随机变量,就能以对自己有利的方式改变该变量,提高发起深度重组的成功概率。即使作恶者无法控制随机变量,但是只要他能低成本生成候选续写内容,就可以无限度地在本地对分叉选择规则进行测试,直至找到一个早期分歧点以及相应的续写内容、变得比广播中的其它分支更加权威,为止。

这里需要补足的 并非 一个能够防止非诚实续写内容的机制。在网络环境不佳的情况下,我们很难界定不诚实的行为。攻击者完全可以忽略或延迟广播自己不喜欢的消息,然后甩锅给网络。我们需要的是一个让深度重组比浅度重组成本更高的机制,而且成本会随着深度加深而提高。

3. 累积型 PoW

中本聪的共识机制就是典型的累积型 PoW。为了使用新的一批交易(称为“区块”)来续写某个历史版本,潜在续写者(即,矿工)必须先解决一个计算难题。解题成本很高但验证起来容易,因此这一机制被巧妙地命名为 PoW(工作量证明)。只有解开了难题,这个新区块(以及被续写的历史)才有资格参与权威历史的竞争。有一个“旋钮”可以用来自动调整难题的难度值,从而调整找到下一个解的预期时间,无论参与解题的人数或投入的资源有多少。这个旋钮还有另一个功能,就是通过某个衡量难度的单位来无偏倚地反映解题所需的工作量。

任何人都可以参与解题过程,不受权力机构、密钥材料和硬件条件的限制。限制因素只有矿工为了有机会找到有效区块而愿意花费的资源。难题的概率性和易于并行的特性有利于成本效益高的矿工,也就是投入同样多的能量能产生尽可能多的计算的矿工,甚至每秒计算量更低一些也不要紧

只要知道每个区块的目标难度参数(旋钮),我们就能轻而易举地估算出特定历史分支所代表的 总工作量。PoW 分叉选择规则偏好总工作量估计值更高的分支。

矿工竞争寻找下一个区块。第一个找到区块并成功将其广播出去的矿工赢得竞赛。假设矿工没有私自扣下有效的区块 2,他们会在收到来自其他矿工新挖出的区块时将其添加到权威交易历史分支的顶端,因为不这么做反而对他们不利。在已知过时的区块上构建新的区块是不理性的,因为这么做的矿工必须追上全网其他矿工,找到 两个 新区块才能成功(跟现有的权威历史版本竞争)。平均而言,其难度是扩展较长的最新分支的两倍。在 PoW 区块链中,重组往往只发生在交易历史树的顶端,这并非因为矿工诚实守信,而是因为重组的成本随深度增加而增长。举个恰当的例子:根据 StackExchange 上的回答,除去因软件升级导致的分叉,比特币区块链上最长分叉的深度是 4,即,当时区块高度的 0.0023%。

4. PoS 的解决方案

PoS 是人们为了替代 PoW 而提出的方案。决定权威交易历史的不是解决密码学难题所花费的最大工作量,而是一种叫作 验证者 的特殊节点所持有的公钥。具体来说,验证者通过签名的方式提议新的区块。参与节点根据组成区块上的签名来验证交易历史是否真实。

节点确实有办法辨别交易历史是否有效(valid)。重点是,如果一个区块得到一个签名(或多个签名)的支持,这仅代表它是真实交易历史顶端的强劲竞争者。一个验证者不可能同时签署多个竞争区块,因为签名会证明他们在作恶,导致他们失去质押物。

这个过程是公开可见的。任何人只要将一定数量的密码学货币存入一个特殊的托管账户,就能成为验证者。存入托管账户的密码学货币就是质押物:一旦验证者作恶,其质押物就会被罚没。节点会验证新的区块上的签名是否与验证者存入质押物时提供的公钥相匹配。

在 PoS 区块链中,真实交易历史的定义是完全递归的。新的区块只有在包含正确的签名时才有效。只有与验证者的公钥匹配的签名才有效。公钥则取决于之前的区块。PoS 的分叉选择规则不是针对存在竞争关系的交易历史对定义的,只要两个交易历史都自洽,分叉选择规则就无能为力。

相较之下,在 PoW 区块链中,真实交易历史也是递归定义的,但是不排除外部输入。具体来说,PoW 中的分叉选择规则依赖于随机性,其无偏倚性是客观可验证的。

外部输入是 PoW 和 PoS 之间的主要区别:在 PoW 中,分叉选择规则是针对存在竞争关系的交易历史对定义的,这是讨论 权威性(canon) 的前提条件。在 PoS 中,我们只能相对于之前的历史来定义真实性。

5. PoS 要么是可颠覆的……

这一点很重要吗?从理论上来说,如果产生了两个自洽但是相互矛盾的交易历史,一定有人在哪里撒了谎。说谎者有可能被找出证据,并遭受惩罚。区块链有可能回滚到第一个分歧点,即,验证者集合没有产生争议之处,然后重新开始。

这里的问题在于没有将时间纳入考量。如果一名验证者从 10 年前开始签署两个相互矛盾的区块(即,现在才签署并发布与 10 年前确认过的区块相矛盾的区块),自那一刻开始的交易历史就要重写。这名恶意验证者的质押物会被罚没。花费质押奖励的交易作废,下游交易同样如此。只要时间充足,恶意验证者的质押奖励就会大范围渗透进区块链经济体。代币的接收方无法确定所有依赖项将来会一直有效。这就毫无终局性可言,因为深度重组在难度和成本上并不高于浅度重组。

6. 要么是主观的

解决这个问题的唯一方法是限制可允许的重组深度。换言之,如果某个历史跟当前被认可的历史相互矛盾,并且彼此的首个分歧点早于某个阈值,那个历史版本将被忽略。如果节点发现竞争交易历史与当前认可的交易历史的首个分歧点过于久远,会在不验证其真实性的情况下直接拒绝。只要任意时间都有节点在线,即可确保这种连续性:当过于深度的重组被禁止时,区块链只能朝着一个方向扩展。

这个解决方案将 PoS 变成了一个主观的共识机制。“区块链的当前状态是什么?”这个问题的答案取决于你向谁提问,无法通过客观的方式验证。攻击者可以创建与真实的交易历史同样自洽的交易历史。节点若想知道哪个交易历史是真实的,只能选择一组对等节点,并相信它们的回答。

有人或许会争辩说,如果伪造交易历史的成本过高,以上假设的攻击不足为虑。尽管这个论点可能是对的,但成本是一个客观指标,也就是说这个论点正确与否取决于不反映在区块链上的外部因素。例如,攻击者可能会在某个交易历史中被罚没所有质押物,但他丝毫不在意,因为他可以通过法律或社会手段来确保另一个交易历史被接受。任何只聚焦于链上世界而不考虑客观世界的安全分析或攻击成本计算在本质上都是有缺陷的。

在 PoS 密码学货币内部,不仅成本是主观的,奖励也是如此。如果攻击者部署攻击换来的不是单纯的奖励,而是官方开发者团队广播解释为何选择另一条分支,那他们的目的是什么?可能是为了获得外部奖励。例如,他们买了看跌期权,或喜欢搞破坏。重点在于,由于攻击目的是获得内部奖励的可能性不高,攻击者能获得的收益主要取决于 PoS 密码学货币的市值这一论点根本站不住脚。

货币和客观性

货币本质上是用于结算债务的物。结算债务实际上需要交易方之间达成共识,尤其是在币种和金额的选择上。如果存在争议,不仅会产生未了债务,还会导致无法在同等或类似条件下再度达成交易。

有效的债务结算不需要使用世界货币。因此,只要是在达成共识的地区,主观的货币同样可以发挥作用。但是,若想跨过任意两个小微经济体或两个人之间的鸿沟,全球共识 是必不可少的。客观的共识机制能够建立全球共识,主观的共识机制不行。

PoS 密码学货币不能为全球金融支柱提供新的基础。世界由多个国家组成,各国之间互不承认对方的法律。如果不同国家之间对交易历史的真实情形产生分歧,唯一的解决方式就是发动战争。

开发和支持 PoS 区块链的基金会、为基金会工作的自由开发者,乃至不参与编写代码的意见领袖都有可能因为选择(对原告)不利的交易历史而承担法律责任。如果一条 PoS 区块链上存在两个相互矛盾的交易历史,且某家密码学货币交易所只在其中一个分支上有大额存款可供提取,会发生什么?这家交易所可能会选择对自己账面有利的交易历史,但是如果社区内的其他参与者(因基金会、开发者和意见领袖的 PGP 签名、推特和 medium 文章)选择另一个交易历史,交易所就要自掏腰包。在这种情况下,交易所有充分的动机和义务找到责任方挽回损失。

最后,法院将裁定哪个交易历史是正确的。

结论

PoS 的支持者称,PoS 能够实现与 PoW 相同的目的,但是不会像 PoW 那样造成能源浪费。他们常常忽略了任何设计困境中都存在权衡。没错,PoS 确实免去了能源消耗,却是以牺牲共识机制的客观性为代价的。对于只需要局部共识的情况来说,这就足够了。但是这又指向了一个问题:将受信任的权力机构从共识机制中移除还有什么意义?对于全球金融支柱来说,客观的共识机制是必不可少的。

自我参照性赋予了 PoS 天然的主观性:哪个交易历史是正确的取决于你站在谁的立场上。“PoS 安全吗?”这个问题试图将分析的焦点转移到并不存在的客观成本度量上。从短期来看,正确的分支就是最受有影响力的社区成员欢迎的分支。从长期来看,法院将拥有决定哪个分叉是正确的权力,局部共识将以不同司法辖区之间的边界为界。

在 PoW 区块链中,矿工消耗能源就好比汽车消耗柴油。在 PoW 中,能源没有被浪费,而是用来换取可通过密码学方式验证的无偏倚随机性。我们不知道如何在缺少这一关键要素的情况下创建客观的共识机制。

致谢

感谢 Ren Zhang、Ferdinand Sauer 和 Thorkil Værge 的反馈和评论。

1. 追求对 交易历史极限 的严格定义会带来一种有趣的思路。实数轴上的 0 和 1 之间有一个数字,其二进制展开能够达成共识的交易历史的表示相匹配,并且这种展开不仅能表示过去,还能表示现在和将来。较新的区块使用较低有效位编码。被截短的历史的数字序列是收敛的,序列中的每一个元素都比前一个元素多编码一个区块,因此交易历史的极限有明确的定义。上述演算将整个货币体系当作计算更精确的近似值时必然会产生的副产品。然而,这个数字不是单纯的公理,而是取决于宇宙,因此更像是基本物理常数而非基本数学常数。可以说,比特币区块链是所有科学中测量最精确的物理常数。

2. 相反,如果我们假设矿工蓄意推迟广播已经找到的区块,就要分析自私挖矿攻击(selfish mining attack)。经过综合的损益计算,我们发现自私挖矿攻击只有在难度调整后才有利可图,而且必须是在难度调整算法不考虑孤块的工作量证明的情况下。(Neptune 的难度调整算法就考虑到了孤块。)自私挖矿攻击的存在不影响重组往往只发生在交易历史顶端的结论,因为重组成本随深度加深而增加。