翻译自 on-settlement-finality,以下是原文内容:

特别感谢 Tim Swanson 的审阅,以及他原始论文中关于结算最终性的进一步讨论。

最近,公共区块链和许可区块链支持者之间的主要争议之一是结算最终性(Settlement Finality)的问题。中心化系统至少看起来有一个简单的属性,那就是“最终性(finality)”的概念:一旦一个操作完成,这个操作就永远完成了,而且系统没有办法“回滚”恢复这个操作。去中心化系统,根据其设计的具体性质可以提供这种属性,也可以在某些经济范围内以概率方式提供,或者根本不提供,当然,公共区块链和许可区块链在这方面的表现非常不同。

这种最终性的概念在金融业尤其重要,在金融业,机构需要以最快的速度确定某些资产在法律意义上是否属于他们,如果是,那么随机的区块链故障不应该回滚资产确权的操作,否则他们就会丢失资产所有权。

Tim Swanson 最近的一篇文章中 认为:

企业家、投资者和爱好者声称,公共区块链是一种可接受的结算机制和金融工具。但公共区块链在设计上不能明确地保证结算的最终结果,因此,它们目前不是金融工具清算和结算的可靠选择。

这是真的吗?公共区块链是否完全没有能力实现任何结算最终性的概念,是否如一些工作量证明最大化论者(some proof of work maximalists)所暗示的那样,只有工作量证明能提供真正的最终性,而许可链才是海市蜃楼,或者真相甚至更加微妙和复杂?为了充分了解不同区块链架构所提供的最终性属性之间的差异,我们将不得不深入挖掘数学、计算机科学和博弈论,也就是加密经济学。

最终性总是概率性的

首先,一个非常重要的哲学观点是,世界上没有任何系统可以提供真正意义上的 100% 最终结算。如果股票所有权记录在纸质登记册上,那么登记册总是有可能被烧毁,或者一个流氓在登记册的每个“1”前面画一个“c”,使其看起来像一个 “9”。即使没有任何恶意的攻击者,也有可能有一天,所有知道登记册位置的人都会被雷电击中立即死亡。集中的计算机化登记也有同样的问题,可以说攻击更容易得逞,至少孟加拉国中央银行的安全是有迹可循的。

“数字不记名资产”完全上链的情况下,除了链本身,没有其他所有权,唯一可修改的办法是社区驱动的硬分叉。然而,在使用区块链(许可链或公开链)作为合法注册财产(土地、股票、法定货币等)的所有权登记册的情况下,区块链决定了所有权。在这种情况下,如果登记确实失败了,区块链可以有两个选择。首先,攻击者有可能找到一些方法,在区块链能够作出反应之前将他们的资产从系统中取出。在这种情况下,账本上的资产总量和现实世界中的资产总量不再匹配;因此,从数学上看,一个最终余额为 x 的人只能接受实际余额为变为 y (y<x)。

但也有另一种选择,区块链将不再承认当前账本的最终性。现实中,法院的工作是根据意图确定应该擦除“1”前面的“c”,而不是举手同意比利叔叔现在有钱了1。这时,区块链最终性再次不是最终的,尽管这个特定的回滚最终性的例子将对社会有益。这些论点适用于所有其他用于维护账本的工具和针对它们的攻击,也包括对公共和联盟区块链的 51% 的攻击。

比特币的经验向我们展示了加强“所有记账机构都是易变的”这一哲学论点的实际意义。在比特币中,到目前为止,已经有三次交易在很长时间后被撤销的情况:

  • 2010 年,一个攻击者通过利用整数溢出的漏洞,成功地给自己增加了 1860 亿 BTC。这被修复了,但代价是回滚了半天的交易。
  • 2013 年,区块链分叉,因为一个版本的软件存在一个 bug,而另一个版本不存在,导致网络的一部分节点拒绝接受另一部分认为占主导地位的链。分叉在 6 小时后得到解决。
  • 2015 年,大约有 6 个区块被还原,因为一个比特币矿池在没有验证的情况下开采无效区块。

在这三起事件中,只有第三起事件的根本原因是公有链共识所特有的,因为矿池的不正确行为正是由于经济激励结构的失败(本质上是验证者困境问题的一个版本)。在另外两个案例中,失败是由软件故障造成的–这种情况也可能发生在联盟链中。人们可以争辩说,像 PBFT 这样有利于一致性的共识算法可以防止第二起事件的发生,但即使是这样,在第一起事件面前也会失败,因为所有节点都在运行包含溢出漏洞的代码。

因此,如果一个人真的对最小化失败率感兴趣,我们可以合理的认为有一个建议可能比“从公共链切换到联盟链”更有价值:运行多个共识代码的实现,只有当所有的实现都接受时,才接受交易为最终结果(注意,这已经是我们给交易所和其他在以太坊平台上构建的高价值用户的标准建议)。想真正做到稳健,不一定必须要同意联盟链支持者提出的论点:即联盟信任模式更安全。

工作量证明的最终性

从技术上讲,工作量证明区块链从不允许交易真正“最终完成”;对于任何给定的区块,总可能有人从该区块之前的区块开始创建一个更长的链,但不包括该区块。然而,实际上,公共区块链之上的金融中介机构已经发展出一种非常实用的手段,以确定一项交易何时足够接近最终结果,以便他们在此基础上做出决定:等待六个确认。

这里的概率逻辑很简单:如果攻击者拥有网络中不到 25% 的哈希算力,那么我们可以将一个意图双花的行为建模为:从 -6 开始(意味着“攻击者的双花链比原始链短 6 个区块”)随机产生块,并且在每一步都有 25% 的机会增加 1(即攻击者制造一个区块并寸步不让)和 75%的机会减去 1(即原始链制造一个区块)。我们可以通过数学公式(0.25 / 0.75)^6 ~= 0.00137 - 几乎小于所有交易所收取的交易费用,来确定这个过程达到零(即攻击者的链超过了原始链)的概率。如果你想要更大的确定性,你可以等待 13 次确认,攻击者成功只有百万分之一的机会,而 162 次确认的话,攻击者成功机会等同于其在一次尝试中就能猜到你的私钥。因此,即使在工作量证明区块链上,也确实存在某种事实上的最终性概念。

然而,这种概率逻辑假设 75% 的节点行为是诚实的(在较低的百分比,如 60%,可以做出类似的论证,但需要更多的确认)。现在也有一个经济辩论:这个假设可能是真的吗?有观点认为,矿工可以被贿赂,例如通过 p-epsilon 攻击,使其全部跟随攻击链(执行这种贿赂的实际方法可能是运行一个负费矿池,可能宣传零费,并悄悄提供更高的收入以避免引起怀疑)。攻击者也可能试图入侵或破坏矿池的基础设施,这种攻击有可能非常便宜,因为工作量证明的安全激励是有限的(如果矿工被黑,他们只损失几个小时的奖励,他们的本金是安全的)。最后但并非最不重要的是,还有 Swanson 在其他地方所说的“马奇诺防线(Maginot Line)”攻击:在这个问题上投入大量的资金,并简单地带来比网络其他部分加起来还要多的矿工。

Casper 的最终性

Casper 协议旨在提供比工作量证明更强的最终性保障。首先,有一个“总经济最终性(total economic finality)”的标准定义:所有验证者中质押 2/3 来最终确定给定区块或状态。这个条件为验证者提供了非常强大的激励,使他们永远不会试图串通起来恢复区块:一旦验证者做出这样质押,在任何不存在该区块或状态的区块链中,验证者会失去他们的全部存款。正如 Vlad Zamfir 所说,想象一下工作量证明的一个版本,如果你参与了 51%的攻击,你的采矿硬件就会被烧毁。

其次,验证者是预先注册的,这意味着不可能在其他地方有一些其他的验证者在做更长的链。如果你看到 2/3 的验证者将他们的全部质押放在一个主张后面,那么如果你在其他地方看到 2/3 的验证者将他们的全部赌注放在一个矛盾的主张后面,这必然意味着交叉点(即至少 1/3 的验证者)现在无论发生什么都会失去他们的全部存款。这就是我们所说的“经济最终性”:我们不能保证“X 永远不会被逆转”,但我们可以保证稍弱的主张:“要么 X 永远不会被逆转,要么一大群验证人自愿销毁他们自己的数百万美元资本”。

最后,即使双重最终性(double-finality)事件真的发生了,用户也不会被迫接受背后有更多利益的主张;相反,用户将能够手动选择哪个分叉来跟随,当然也能够简单地选择 “先来的那个”。在 Casper 中,一次成功的攻击看起来更像是一次硬分叉,而围绕链上资产的用户社区可以很自由地简单应用常识来确定哪个分叉不是一次攻击,实际上代表了最初商定的交易的最终结果。

法律与经济

然而,这些更有力的保护措施仍然是经济的。这就是我们进入 Swanson 论点的下一个部分的地方:

因此,如果原生代币(如比特币或以太坊)的市值增加或减少,那么矿工增减为了获得挖矿收益而产生的工作量,按照代币边际价值的比例消耗或收缩资本支出。这就留下了一种明显的可能性,即在某些经济条件下,拜占庭行为者可以而且会在没有法律追索权的情况下成功创建区块重组。

这个论点有两个版本。第一种是一种“法律最大化”的观点,即“单纯的经济保障”是没有价值的,纯粹在某种哲学意义上,法律保障是唯一有意义的保障。这种观点显然是错误的:在许多情况下,法律对渎职行为的主要或唯一惩罚是罚款,而罚款本身不过是一种“单纯的经济激励”。如果单纯的经济激励对法律来说已经足够好了,至少在某些情况下是这样,那么至少在某些情况下,它们也应该对结算架构足够好。

该论点的第二个版本要简单得多,也务实得多。假设在目前所有现有以太坊的总价值为 7 亿美元的情况下,计算出你需要 3000 万美元的挖矿能力才能成功进行 51% 的攻击,而一旦 Casper 启动,你预测将有 30% 的质押参与率、因此,回滚最终性最低成本是 $700 million * 30% * 1/3 = $70 million 7000 万美元(如果你愿意将你对验证者掉线的容忍度降低到 1/4,那么你可以将终结性门槛提高到 3/4,从而将交叉点的大小提高到 1/2,从而获得更高的安全系数,即 1.05 亿美元)。如果你正在交易价值 1000 万美元的股票,而且你打算只做两个月,那么这几乎肯定是好的;公共区块链的经济激励措施将在抑制渎职方面做得相当好,任何攻击都不值得麻烦。

现在,假设你打算交易价值 1000 万美元的股票,但你将承诺在五年内使用以太坊公共区块链作为基础架构层。现在,你的确定性要小得多。以太坊的价值可能是相同或更高,也可能接近零。casper 的参与率可能上升到 50%,也可能下降到 10%。因此,完全有可能,51%的攻击成本会下降,例如甚至低于 100 万美元。在这一点上,进行 51% 的攻击,以便通过一些市场操纵攻击来赚取利润是完全可能的。

第三种情况是一个更加明显的情况:如果你想交易价值 1000 亿美元的股票呢?现在,与市场操纵攻击的潜在利润相比,攻击公共区块链的成本是微不足道的;因此,公共区块链完全不适合这项任务。

值得注意的是,攻击的成本并不像上面显示的那样简单,可以估算。如果你贿赂现有的验证者来进行攻击,那么这个计算方法就适用。然而,一个更现实的情况是,购买硬币并使用这些存款进行攻击;这将有 1.05 亿美元或 2.1 亿美元的成本,取决于最终的门槛。购买硬币的行为也可能影响价格。实际的攻击,如果计划不完善,几乎可以肯定会导致比理论上的 1/3 或 1/2 的最小损失还要大,而且从攻击中可以获得的收入可能会比资产的总价值少很多。然而,一般的原则仍然是一样的。

一些加密货币的支持者认为,这些担忧是暂时的,五年后,他们所选择的加密货币的市值显然将达到 1 万亿美元左右,在黄金的一个数量级之内,因此这些争论将没有意义。目前,这种立场可以说是站不住脚的:如果一家银行真的相信这种说法,那么它应该放弃其基于区块链的证券化计划,而只是尽可能多地购买和持有该加密货币的单位。如果在未来,一些加密货币确实能够建立到这种程度,那么肯定值得重新思考安全论点。

因此,总而言之,对于高价值资产来说,公共区块链的经济安全系数太低,这种较弱的论点是完全正确的,而且根据使用情况,是金融机构探索私有链和财团链的一个完全合理的理由。

抗审查制度,以及其他实际关注的问题

人们提出的另一个担忧是,公共区块链是抗审查的,允许任何人发送交易,而金融机构则要求能够限制哪些行为者参与哪些系统,有时还要求限制参与的形式。这是完全正确的。可以提出的一个反驳观点是,公共区块链,特别是像以太坊这样的高度可概括的区块链,可以作为确实带有这些限制的系统的基础层:例如,人们可以创建一个代币合约,只允许交易转移到特定列表中的账户或由链上特定地址所代表的实体批准。在其他地方对这一反驳的观点是,这样的结构是不必要的 Rube-Goldbergian,我们还不如首先在许可链上创建机制–否则,我们将支付公共链提供的抗审查和独立于传统法律体系的成本,而没有好处。这个论点是合理的,尽管需要指出的是,这是一个关于效率的论点,而不是基本的可能性,所以如果公共链的好处与抗审查无关(例如,较低的协调成本,网络效应)被证明是主导的,那么它不是一个绝对的击倒。

还有其他的效率问题。因为公共区块链必须保持高度的去中心化,节点软件必须能够在标准的消费者笔记本电脑上运行;这给交易吞吐量带来了压力,而这种压力在许可网络上并不存在,在许可网络上,人们可以简单地要求所有节点在 64 核服务器上运行,并有非常高速的互联网连接。在未来,分片的创新肯定是为了缓解公共链上的这些问题,如果实施按计划进行,那么在半个世纪的时间里,只要你有足够的并行化,并在网络上增加足够的节点,公共链的吞吐量将没有限制,尽管如此,公共链和许可链之间仍将不可避免地存在至少一些效率和成本的差异。

最后一个技术问题是延时。公共链在公共互联网上数以千计的消费者笔记本电脑之间运行,而许可链则在数量少得多的具有快速互联网连接的节点之间运行,这些节点甚至可能在物理上相互靠近。因此,许可链的延迟,以及由此带来的时间到最终结果,将不可避免地比公共链要低。与对效率的担忧不同,这是一个永远不可能因为技术改进而被忽略的问题:尽管我们可能希望如此,但摩尔定律并不能使光速每两年就变得快一倍,而且不管有多少优化,由许多任意位置的节点组成的网络和由可能集中的几个节点组成的网络之间总是存在差异,而且两者之间的差异对人眼来说总是相当明显。

同时,公共区块链本身当然有很多优势,可能有很多用例,为某些应用建立联盟链的法律、商业开发和信任成本非常高,以至于直接扔到公共链上会简单得多,而公共链之所以有价值,很大一部分原因是它能够让用户建立应用,无论他们的社会关系如何:甚至一个 14 岁的孩子都可以编码一个去中心化的交易所,把它发布到区块链上,其他人可以根据其自身的优点来评估和使用该应用程序。有些开发者只是没有关系来组建一个财团,而公共链在为这些开发者服务方面发挥了关键作用。在公共链中很容易有机地出现的跨应用协同效应是另一个重要的好处。最终,我们可能会看到这两个生态系统随着时间的推移而演变为不同的服务对象,尽管它们在可扩展性、安全性和隐私性方面仍有许多共同的挑战,并且可以通过合作而大大受益。

参考


  1. 译者注:因为比利叔叔的账本数字从 1 变成了 9。 ↩︎