V神最新长文:保持极简主义,避免以太坊共识过载
原文:
作者:Vitalik Buterin
编译:念银思唐,星球日报
以太坊网络的共识是目前最安全的加密经济系统之一。价值(约 340 亿美元)的验证器每 6.4 分钟完成一个区块,运行许多以达到冗余。如果加密经济共识失败,无论是由于 bug 还是故意的 51% 攻击,由数千名开发人员和更多用户组成的庞大社区都会密切关注网络,以确保链正确恢复。一旦链恢复,协议规则将会确保攻击者(在很大程度上)受到严厉惩罚。
多年来,通常在思想实验阶段已经有了许多想法,即可以将以太坊验证器集甚至以太坊社会共识用于其他目的:
-
终极预言机:就一项而言,用户可以通过发送 ETH 来投票决定哪些事情是真实的,这将使用机制:每个发送 ETH 投票支持多数答案的人都会按照一定比例获得所有发送投票支持少数答案的 ETH 的份额。根据其描述:“所以原则上这是一个对称的游戏。打破这种对称性的是 a)真相是需要协调的自然点,更重要的是 b)押注真相的人如果输了,可以创建一个可信的以太坊分叉路线。”
-
再质押:包括在内的许多协议使用的一组技术,以太坊质押者可以同时使用他们的权益(stake)作为另一个协议的存款。在某些情况下,如果他们不遵守其他协议的规定,他们的存款也会被罚没。在其他情况下,没有协议内的激励措施,权益只是用于投票。
-
由L1驱动L2项目恢复:在很多情况下,如果L2有 bug,L1可以通过分叉来恢复它。最近的一个例子是。
这篇文章的目的是详细解释,为什么在我看来,这些技术的某个子集给生态系统带来了很高的系统性风险,应该被劝阻和抵制。
这些建议通常是善意的,所以目标不是关注个人或项目;相反,我们的目标是关注技术。这篇文章将试图捍卫的一般经验法则如下:双重使用验证器质押的 ETH 虽然有一些风险,但从根本上来说是可行的,但试图“招募(recruit)”以太坊社会共识来实现你的应用程序本身的目的则并非如此。
重复使用验证器(低风险)和过载社会共识(高风险)之间的区别示例
– Alice 创建了一个Web3社交网络,如果你以加密方式证明你控制了一个活跃的以太坊验证器的密钥,你就会自动获得“验证(verified)”状态。此为低风险。
– Bob 以加密方式证明他控制着十个活跃的以太坊验证器的密钥,以此证明他有足够的财富来满足某些法律要求。此为低风险。
– Charlie 声称已经推翻了(twin primes conjecture),并称知道最大的 p,使得 p 和 p+ 2 都是素数。他将他的质押提款地址改为一个智能合约,任何人都可以提交一个声称的反例 q > p,以及一个证明 q 和 q+ 2 都是素数的 SNARK。如果有人提出了有效声明,那么 Bob 的验证器将被强制退出,并且提交者将获得 Bob 剩下的 ETH。此为低风险。
– 狗狗币(Dogecoin)决定切换到权益证明,并增加其安全池的规模,它允许以太坊质押者“双重质押”并同时加入其验证器集。要做到这一点,以太坊质押者必须将他们的质押提款地址更改为一项智能合约,以便任何人都可以提交他们违反狗狗币质押规则的证据。如果有人提交了这样的证明,那么质押者的验证器将被强制退出,并且他们剩下的 ETH 将用于购买和销毁 DOGE。此为低风险。
– eCash 的做法与狗狗币相同,但项目负责人进一步宣布:如果大多数参与的 ETH 验证器串通审查 eCash 交易,他们预计以太坊社区将硬分叉以删除这些验证器。他们认为,这样做符合以太坊的利益,因为这些验证器被证明是恶意和不可靠的。此为高风险。
– Fred 创建了一个 ETH/USD 价格预言器,其功能是允许以太坊验证器参与和投票。没有激励机制。此为低风险。
– George 创建了一个 ETH/USD 价格预言器,其功能是允许 ETH 持有者参与和投票。为了防止懒惰和贿赂,他们增加了一种激励机制,即给出的答案在中位数 1% 以内的参与者获得任何给出答案超过中位数 1% 的参与者 1% 的 ETH。当被问及“如果有人可信地提出贿赂所有参与者,每个人都开始提交错误的答案,那么诚实的人就会被拿走 1000 万枚 ETH 吗?”George 回答说:那么以太坊将不得不分叉以便排除不良参与者的资金。此为高风险。
另外两种情况如下:
-
George 明显不作回答。此为中高风险(因为项目可能会创造尝试这样一个分叉的动机,因此即使没有正式的鼓励,也会有尝试的期望)。
-
George 回答说:“那么攻击者就赢了,我们就放弃使用这个预言机。”此为中低风险(不是很“低”,只是因为该机制确实创造了一大批参与者,他们在 51% 攻击中可能会被激励独立倡导分叉来保护他们的存款)。
– Hermione 创建了一个成功的 Layer 2 ,并认为因为她的 Layer 2 是最大的,所以它本质上是最安全的,因为如果有一个 bug 导致资金被盗,损失将是如此之大,以至于社区别无选择,只能通过分叉来恢复用户的资金。此为高风险。
如果你正在设计一个协议,即使一切都完全中断,损失也会被包含在选择参与并使用你的协议的验证器和用户处,这是低风险的。另一方面,如果你打算在更广泛的以太坊生态系统社会共识中寻求分叉或重组来解决你的问题,这是高风险的,我认为我们应该强烈抵制所有创造这种期望的尝试。
中间地带是指一开始处于低风险类别,但给予参与者进入高风险类别的激励;,特别是对偏离多数的严重惩罚机制,就是一个主要的例子。
那么,扩展以太坊共识到底有什么问题呢?
假设现在是 2025 年。由于对现状感到沮丧,一个小组决定开发一个新的 ETH/USD 价格预言器,它通过允许验证器每小时对价格进行投票来运作。如果验证器投票,他们将无条件地从系统中获得一部分费用奖励。但很快参与者就变得懒惰了:他们连接到中心化的 API,当这些 API 受到网络攻击时,他们要么退出,要么开始报告错误的值。为了解决这个问题,他们引入了激励机制:预言机也会对一周前的价格进行回溯性投票,如果你的投票(实时或回溯)与回溯性投票的中位数相差超过 1% ,你就会受到严重惩罚,惩罚所得将由“正确”投票的人获得。
在一年内,超过 90% 的验证器参与其中。有人问:如果 Lido 和其他几个大型质押者联合起来,对投票进行 51% 攻击,强行通过一个虚假的 ETH/USD 价格,对所有不参与攻击的人处以重罚,会怎么样?在这一点上,预言机的支持者在该计划中投入了大量资金,他们回答说:如果发生这种情况,以太坊肯定会分叉,以驱逐不良行为者。
起初,该方案仅限于 ETH/USD,并且看起来具有弹性和稳定性。但随着时间的推移,其他指数也随之增加:ETH/EUR、ETH/CNY,以及最终G20所有国家的利率。
但到了 2034 年,事情开始出错。巴西发生了一场意想不到的严重政治危机,导致了一场有争议的选举。一个政党最终控制了首都和 75% 的国家,但另一个政党最终控制了一些北部地区。西方主要媒体认为,北方政党显然是合法的赢家,因为它的行为是合法的,而南方政党的行为是非法的。印度等国家的官方消息人士以及 Elon Musk 认为,南方党已经实际控制了该国的大部分地区,国际社会不应该试图成为世界警察,而应该接受这一结果。
当时巴西有一个 CBDC,有两个分叉版本:(北部)BRL-N 和(南部)BRL-S。当在预言机中投票时, 60% 的以太坊质押者提供 ETH/BRL-S 汇率。主要的社区领袖和企业谴责质押者对法西斯主义的懦弱投降,并建议将区块链分叉,只包括提供 ETH/BRL-N 汇率的“好质押者”,并将其他质押者的余额耗尽至接近零。在看似光鲜的舆论泡沫中,他们相信自己肯定会赢。然而,一旦分叉开启,BRL-S 一方被证明出乎意料地强大。他们原本预计会取得压倒性的胜利,但事实证明,这几乎是一个五五开的社区分裂。
在这一点上,双方是在两个独立宇宙中的两条链上,没有实际的方法回到一起。以太坊是一个全球性的无许可平台,在一定程度上是为了躲避国家和地缘政治而创建的,但最终却被 G 20 成员国中一个有着出乎意料的严重内部问题的国家分裂成两半。
这科幻故事真不错,都能拍电影了,但我们能从中学到什么呢?
区块链的“纯粹性(purity)”是一个巨大的优势,因为它是一个纯粹的数学结构,试图在纯粹的数学问题上达成共识。一旦区块链试图与外部世界“挂钩”,外部世界的冲突也开始影响区块链。考虑到一个足够极端的政治事件——事实上也并非那么极端,因为上面的故事基本上是过去十年里在各个主要国家(人口超过 2500 万)实际发生事件的模仿——即使是像货币预言机这样良性的事情也可能撕裂社区。
以下是更多可能的情况:
-
预言机追踪的其中一种货币(甚至可能是美元)只是恶性通货膨胀,市场崩溃到在某些时间点上没有明确的具体市场价格。
-
如果以太坊是为另一种加密货币添加了价格预言机,那么上面故事中有争议的分裂就不是假设的:这是已经发生的事情,包括比特币和以太坊本身的历史。
-
如果严格的资本管制开始实施,那么哪种价格作为两种货币之间的合法市场价格报告就成了一个政治问题。
但更重要的是,我认为有一个 Schelling 围栏在起作用:一旦区块链开始将现实世界的价格指数作为 Layer 1 协议功能,它很容易屈服于解释越来越多的现实世界信息。引入 Layer 1 价格指数也扩大了区块链的法律攻击面:它不再只是一个中立的技术平台,而是更明确地成为一种金融工具。
价格指数以外的例子带来的风险如何?
以太坊共识“职责”的任何扩展都会增加运行验证器的成本、复杂性和风险。验证器被要求承担人工工作,关注并运行和更新其他软件,以确保它们根据引入的任何其他协议正确地运行。其他社区获得了将其争议解决需求置于以太坊社区外部的能力。验证器和以太坊社区作为一个整体被迫做出更多的决定,而每一个决定都有导致社区分裂的风险。即使没有分裂,避免这种压力的愿望也会产生额外的激励,通过质押池将决策外部化给中心化实体。
分裂的可能性还将极大地强化“大到不能倒(too-big-to-fail)”的反常机制。以太坊上有如此多的 Layer 2 和应用层项目,以至于以太坊社会共识愿意分叉来解决所有问题是不切实际的。因此,规模较大的项目获得救助的可能性必然大于规模较小的项目。这反过来又会导致更大的项目获得护城河:你是愿意把币放在 Arbitrum 或 Optimism 上(如果出现问题,以太坊将分叉来拯救一切),还是愿意放在规模更小的 Taiko 上(非西方项目,与核心开发圈的社会联系较少,获得L1支持救援的可能性小得多)?
但 bug 会带来风险,我们需要更好的预言机。那么该怎么做呢?
在我看来,这些问题的最佳解决方案是具体问题具体分析,因为各种问题本质上是彼此不同的。一些解决方案包括:
– 价格预言机:要么是,要么是基于验证器投票的预言机,后者明确承诺其紧急恢复策略不是诉诸L1共识来恢复,要目是两者的某种组合。例如,价格预测器可以依赖于一个信任假设,即投票参与者会慢慢被腐化,这样用户就可以获得攻击的早期预警,并可以退出任何依赖于该预言机的系统。这样的预言机可以故意在长时间延迟后才给予奖励,因此,如果该协议的实例被废弃(例如:因为预言机失败了,社区转向了另一个版本),参与者没有得到奖励。
– 更复杂的真相预言机,报告比价格更主观的事实:某种建立在上的去中心化法院系统。
– Layer 2 协议:
-
在短期内,依靠部分辅助轮(这篇文章称之为第一阶段)
-
在中期,依赖。这里可以包括可信硬件(例如:SGX);我强烈反对将类似 SGX 的系统作为唯一的安全保障,但作为 2-of-3 系统的成员,它们可能是有价值的。
-
长远来看,希望像“EVM 验证”这样的复杂功能最终会被纳入协议中。
– 跨链桥:与预言机逻辑类似,但也要尽量减少对跨链桥的依赖程度:将资产保存在其原生链上,并使用原子交换协议在不同链之间移动价值。
– 使用以太坊验证器集来保护其他链:上面中(更安全的)狗狗币方案可能还不够的一个原因是,虽然它确实可以防止 51% “最终性反转(finality-reversion)”攻击,但它不能防止 51% 审查攻击。但是,如果你已经依赖于以太坊验证器,那么一个可能的方向是放弃尝试完全管理独立链,并成为一个将证明锚定在以太坊中的。如果一个链做到了这一点,它针对最终性反转攻击的保护就会变得和以太坊一样强大,并且它可以安全抵御 99% (而不是 49% )审查攻击。
总结
区块链社区的社会共识是很脆弱的。这是必要的——因为升级会发生,bug 会发生, 51% 攻击也总是有可能发生——但是因为它有很高的导致链分裂的风险,在成熟的社区中应该谨慎使用。社区往往有一种自然的冲动,试图用越来越多的功能扩展以太坊区块链的核心,因该核心具有最大的经济权重以及最多的社区关注,但每一次这样的扩展都会使核心本身更加脆弱。
我们应该警惕应用层项目采取这样的行动——这些行动可能会增加区块链共识“范围(scope)”,而不是验证以太坊核心协议规则。对于应用层项目来说,尝试这样的策略是很自然的,事实上,这样的想法通常是在没有考虑风险的情况下被简单构思出来的,但是可能引发的结果很容易与整个社区的目标背道而驰。这样的过程没有限制原则,随着时间的推移,很容易导致区块链社区拥有越来越多的“授权(mandates)”,将其推向一个令人不安的选择——要么是分裂的年度高风险,要么是对区块链拥有最终控制权的某种事实上的正式官僚机构。
相反,我们应该保持链的极简主义,支持再质押的使用,而不是像滑坡一样扩展以太坊共识的角色,并帮助开发人员找到替代策略来实现他们的安全目标。