以太坊 2.0 的设计目标
宋长宁
发表于 2022-12-25 20:14:59
319
0
0
/ `- H, Y2 b$ ] k0 E) t D% B( W
五大设计目标具体如下(我针对每个目标提炼出了关键词,并且根据我自己的喜好重新排了个序):
* A0 N/ C3 M# |5 S. l0 h
去中心化:允许处理能力达 O© 的消费级笔记本电脑处理/验证 O(1) 个分片(可能是系统上任何一层的验证,如信标链)。1 j/ K+ a; I1 I# M' A5 T1 r# q% ?
1 a' N9 G) H6 [4 `; ^$ {4 ^7 w6 ]
强韧性:在主网分区之后,大部分节点离线之时,整个系统依旧能够运行。
安全性:通过密码学技术和设计技术提高验证者的总人数和单位时间内的参与者数量。. O7 e4 O/ z# Y& K9 v# L/ v
简洁性:最大程度地降低复杂性,哪怕会导致效率有所下降。
持久性:选用的组件要能够抵抗量子计算,或是选用可替换型组件直到可用的抗量子计算组件出现。2 }: K) h7 ^: X- D
* T; ^ o! ?( j3 U G
上述设计目标概括了以太坊 2.0 的设计内容——未来会变成什么样子——但没有真正解释背后的原因。在本文中,我想要逐一探索上述几个目标的重要性,以及它们对协议发展起到的影响。
+ Y5 T( S* p+ i7 X! r7 ~3 ~6 L
实际上,把上述任意一点单拎出来,都是能够写出一篇文章的,这里只能点到即止,不过我是希望能够讲明白些的。因此,下文会涉及到以太坊 2.0 的很多新特征。
) ]* a% A# y7 H
###去中心化/ O- F6 W5 B) T" \
; P9 f9 x& ~) ~9 O
允许处理能力达 O© 的商务笔记本电脑处理/验证 O(1)个分片(包括任意系统层面上的验证,如信标链)。
-网络节点连接图(有裁剪),图源:Wikimedia-
以太坊一以贯之的一大基本原则就是尽可能去中心化。这实际意味着要尽可能降低人们参与协议(即以太坊 1.0 的挖矿机制)的门槛,并且将中心化参与带来的利益降到最低。$ v W& d3 \) t. `& _1 e* B
, Z: R$ S- ]9 @, ~2 F
PoW 挖矿机制没能达到后一点,似乎也不能满足前一点。PoW 挖矿显然正在趋向中心化,一些矿场通过掌握硬件、廉价电力和大量冷却设备可以实现规模经济。由于高成本的矿机日渐成为挖矿刚需,个人参与者的成本也随之提高。PoS 协议虽然也存在争议,但是大部分人都认为它不会像 PoW 那样面临那么强的中心化压力。这也是促使以太坊 2.0 计划从 PoW 机制向 PoS 机制过渡的原因之一。
' D- t" T4 R4 j F
以太坊 2.0 的所有设计都是以实现去中心化为导向的。% O$ O2 k6 \; z8 y2 b: `
例如,去年夏天,以太坊为了突破当前 1.0 主网的局限,决定在全新的 PoS 信标链上实行以太坊 2.0 分片系统。这样一来,系统就能支持更多验证者(以太坊 2.0 上的出块者,类似于 1.0 上的矿工),而且成为验证者需押注的最低代币量从 1000 个降到了 32 个以太币。32 个比起 1000 个已经是大幅降低参与门槛了。此外,目前对偶尔掉线的验证者的惩罚也低得多,这使得那些无法保证“5个9(99.999%)”时间都在线的消费级硬件也能参与出块,提高了网络参与的开放度。% {" W% g! i/ L, D% o6 ]
话虽如此,这一设计目标的关键不在于 PoS ,而是保证单靠一个由商用硬件组成的网络就可以维持以太坊 2.0 系统的运行。反过来说就是,不需要大型主机即可成为系统的参与者。) H B I0 R6 T% I* h. j! t H
从设计上来说,以太坊 2.0 协议有意要摆脱对 CPU 或内存要求极高的 “超级节点”。交易所或区块浏览器可能会部署“超级节点”,不过在以太坊 2.0 协议内,“超级节点”相比普通的验证者节点没有优势。轻客户端协议的广泛应用可以让验证者节点集中算力资源去保护信标链以及他们所在的分片,对于整个系统的其他部分只需了解一点必要信息即可。/ b {4 x% N+ Z1 n+ X/ i9 H# {
" P$ W2 @; ^( e8 u
根据这个设计目标的详细阐述可知,要完全参与到以太坊 2.0 协议中,保护整个系统并获得质押奖励,所需的算力资源只要一台消费级笔记本或一个小型的托管虚拟专用服务机即可满足。8 \! i M5 Q3 i `" y7 w
要实现完全去中心化的设计并非易事——远没有设计高性能的中心化协议来得容易,但对于以太坊而言是不容妥协的。' ]8 e, T$ z. W9 I" B
) s. n' z+ W# X8 {+ d" @; }2 w
###强韧性# [& @7 c# N2 H( Y* I" Y& a
9 e. e9 J7 x- h! y
在主网分区之后,大部分节点离线之时,整个系统依旧能够运行。. z! c0 G) J* Z5 a' V5 y
- Z* G$ f+ l* H% t
-图片有裁剪,图源:Flickr -- y8 l1 @+ j. L$ ]" @* m' ^* F/ e/ M
如果一条区块链上 80% 的节点同时离线较长一段时间会怎么样?: x1 R1 _7 e, u. x7 N3 Y! ^ m
将来的某一天,以太坊区块链可能用于支持重要的基础设施:支付、身份、发电等等。这类基础设施绝不能丧失可用性。它们必须持续运行,哪怕出现了巨大变故。哪怕有国家通过国家防火墙阻断了协议通信,哪怕第三次世界大战爆发。
! U' D& G8 N/ I. H* |7 H
分布式系统的基本原理是,任何一个分布式系统最多只能同时满足一致性(consistency)、可用性(availability)和分区容错性(partition tolerance)这三个需求中的两项。网络分区问题是很难避免的,节点会因为各种各样的原因加入或退出网络,这实际上是要求系统在一致性(所有节点是否针对同一个请求给出相同的回应)和可用性(网络是否持续运行)之间做出选择。从根本上说,网络分区问题出现之时,确保一致性的唯一方法就是关闭整个网络。( s8 h& T/ t% k
9 x' J& I4 e9 F J" l, ]1 v1 m( z! n
这个设计目标极大地影响了信标链上随机数生成器的设计。目前,分布式随机数生成以 Dfinity 的“门限签名中继”为黄金标准,即以一种参与者无法操控的方式通过数字签名实现(伪)随机性。由于门限签名中继无法在出现网络分区的情况下继续运行,以太坊 2.0 只能另寻他法,转而采用经典的 RANDAO ,将众多参与者贡献的随机数组合成一个随机的输出值。现在,我们都知道 RANDAO 合约在抗操控性上有点弱(最后一个参与者拥有比其他参与者更大的权力,能够操控随机数)。因此,RANDAO 的共识机制在设计上加强了抗操控性。攻击者必须巧妙地把握时机,控制多个连续的块,才有机会破坏整个系统,发生这种情况的概率是很低的:根据共识协议的设计可知,假定 2/3 的参与者都是诚实的,攻击成功的概率几乎为零。- Z" a6 s- i1 p" q( `; e/ f
在任何情况下,RANDAO 都是偏向活性的:即使有很多参与者出了故障,也不会影响整条区块链的运行。/ f' J- i5 Y( H. y
上述基本原理的另一个例子是用于“e 的平方根倒数下降级时间(inverse sqrt e drop time)”内的“消极参与者惩罚系数(inactivity penalty quotient)”, 信标链上的一个区块要想得到最终确认,绝大多数验证者(持有的权益)都要投给这个区块。如果有大量验证者离线或者因为延迟造成网络分区问题,就不可能获得绝大多数验证者的投票。这个问题的解决方案是在区块链还没有最终确定任何信息的这段时间内,未能上线的验证者所质押的权益会被大量罚没。权益罚没会在一段较长的时间(约为 18 天左右)内逐渐进行,让验证者尽可能回归网络。不过,最终而言,当不参与投票的验证者持有的权益足够少、参与投票的验证者持有的权益足够多时,确保能够实行多数权益票决制,这样整条链就可以继续确认区块。* J+ }+ }0 u/ o9 D3 v
; \# S0 d5 N6 B b, t: g9 K; O
(要注意的是,这种涉及活性的行为留给用户和应用很大的选择空间:在区块链上的区块尚未最终确定的这段时间内,各应用可以根据自己的标准选择是否要使用区块链。一旦区块链停止运行,就会丧失这种灵活性。感谢 Danny Ryan 指出了这一点。)+ x6 w1 Y* [2 i! U: y0 R
一直以来,以太坊的承诺都是“unstoppable”。以太坊 2.0 也会将这一承诺延续下去。
! o3 Z+ Q9 C1 O
###安全性( z, y H! a5 m3 d- Q4 U/ U4 F
通过密码学技术和设计技术提高验证者的总人数和单位时间内人数上限。% x% A; F, w g8 r* E, b# l
! H* ]7 T! `# a. n5 o
-接近三分之一的验证者是恶意的,但在任何一个子集中,恶意方都不占优势-! X) H! D2 n" w0 G3 [% j$ W, n2 {
# q& y% b2 s" m( Q. l
现在我们来聊聊以太坊 2.0 的安全性,即让系统对攻击(例如,PoW 协议中的 51% 攻击)的抵抗力尽可能高。
4 ?+ T& D2 n, _- ~" ~6 \- k& g
在以太坊 2.0 中,这种安全性体现在有一个很大的验证者池,里面的验证者会轮流随机组成委员会:协议活动需要每位委员的签名,例如检查数据可用性和投票确定区块。# c0 ^9 h Y: @
# f# |9 m' S0 w
召集大批验证者并成立委员会有几个好处。第一,庞大的验证者池意味着去中心化的程度较高,参与者更具多样性会使串谋的难度加大。尽管如此,从风险模型可以看出,攻击者还是有可能控制超过 1/3 的验证者的。1 u1 S0 u# U8 G, Z* U
4 q$ ]3 l- J' u
第二,如果出现了违背协议的情况——例如,在同一高度确定了两个区块——这意味着肯定有很多验证者违反了规则(同时投票给两个区块)。这种行为是可以检测出来的,行为不端的验证者所质押的代币会被罚没。任何链上决策都需要多数验证者签署后才能实现,这就赋予了系统很强的“经济安全性”:作恶的参与者会被罚没很多钱。PoW 链则不同:发动 51% 攻击的作恶者付出的只是运行硬件的边际成本:他们的 ASIC 矿场又不会被烧毁。
第三个是从数学角度出发。假设验证者池中有超过 1/3 的验证者是不诚实的,我们从验证者池中选出的委员会人数越多, 委员会中出现不诚实验证者居多的概率就越低。举例来说,我们有 1000 位验证者,其中 333 位是不诚实的。假设一个委员会只有 1 个成员,则该委员会由不诚实验证者掌控的概率是 33.3 % 。假设委员会由 3 位成员组成,随机选出一个委员会,抽到的委员会中不诚实人数超过 2/3 的概率为 25.9 % 。将委员会的验证者数量提高到 13 位,则不诚实人数超过 2/3 的概率为 10 % ,以此类推。最后,如果委员会的人数达到 667 ,那么不诚实人数过半的概率为 0 % 。
在以太坊 2.0 中,如果委员会里出现了一个攻击者,那么他需要掌控委员会中 2/3 的权益才能造成严重伤害。目前,委员会的总人数下限为 128 ,从上千人组成的验证者池中选举产生,即使攻击者成功控制了验证者池中 1/3 的人,攻击成功的概率也只有万亿分之一不到。
实现这个设计目标有助于委员会在协议内起到广泛作用:基本上每个协议活动都会由随机分组的委员会进行票决。这些委员会会经常性重组,有些情况下每 384 秒就会重组一次。能够实现这一点还要归功于一个密码学创新技术—— BLS 聚合签名。大致说来,委员会中的每位成员都要对决策进行签名,而 BLS 聚合签名技术可以将这些签名结合起来变成一个签名,这样验证起来就更加容易。如果没有这项技术,验证每个签名所需的时间将极大地限制参与决策的验证者人数。
###简结性
/ M5 @% U5 o( j
最大程度地降低复杂性,哪怕会导致效率有所下降。
. S) I4 T$ S8 l6 o7 U/ X. v
-以太坊 2.0 不是一种鲁布·戈德堡机械,图源:Wikimedia-
这是所有设计目标中最好解释的一个了。复杂性是安全性的敌人。要想确保以太坊 2.0 能够一直按预期运行, 我们必须合理地设计协议。我们要能够对协议活动进行分析,从而排除极端情况和不当激励,还要尽量进行形式化验证。4 k& N( ~& d' z3 n* `
d& w: \- E7 L% K. _, H) |. ?
如果你看了以太坊 2.0 的现行技术规范,“简易性”或许并不能给你留下第一印象。但是,简易性指的不是代码的多少,主要还是在于我们实行的理念。目前看来,所有的区块链技术都处于三大艰深学科的焦点:分布式系统、密码学和博弈论。即使是以太坊 1.0 这样比较简单的密码经济系统也会遭遇意想不到的情况。 Gas Token 就是一例:它的机制旨在减少存储在区块链状态中的数据,实际却增加了要存储的数据量。我们的协议越简单,就越能分析出这种怪异的情况,并找到解决方案。, b2 a U' P0 W) J
& N2 n. J n4 t, m: k# W5 X
创新是区块链行业赖以生存的法宝。我几乎天天都能听说有新的共识协议、密码学原语和密码经济设计冒出来。相比之下,以太坊 2.0 的设计虽然含有很高的创新成分,但还是比较保守的。保守是有意为之,因为设计必须尽可能简单化。/ @8 }$ A3 u/ x- k
例如, Polkadot 在设计上跟 Ethereum 2.0 有很多相似之处(这点并不奇怪,毕竟 Gavin Wood 参与过以太坊分片的早期构想)。二者都采用分片协议: Polkadot 中的每个分片都可以运行不同的协议,而以太坊 2.0 中的每个分片都运行同一个协议。Polkadot 采用的异构设计虽说也有优点,但是以太坊最后还是倾向于尽可能降低复杂度的设计。1 [) L7 G1 J0 b7 a; I2 t
1 A, t; d1 x( C) y, d7 I2 |* Z
以太坊 2.0 的设计理念是,只将极少数必要功能整合到 Layer 1(最关键的共识层)上,其它复杂功能则放到上层堆栈上。 这也是为什么协议本身不涉及身份特征和隐私性的原因之一。想更深入了解这方面的话,推荐阅读 Vitalik 的《Layer 1 短期求创新,长期求保守》。
6 h2 z4 E8 A. r
###持久性) h" u, G4 u& H: m
选用的组件要能够抵抗量子计算,或是选用可替换型组件直到可用的抗量子计算组件出现。3 J1 X# t8 ^/ ^
& @2 \$ E& E; b! D
-图片有裁剪,图源:Wikimedia-
( d4 }' \" f' h( _+ l! f, R
如果未来出现了足够强大的量子计算机,当前所使用的密码学技术的安全性会被极大削弱,尤其是 BLS 和 ECDSA 数字签名。 没人知道这一天会在什么时候到来,不过要想区块链能多存活几十年,我们还是应该做好充分准备。7 J6 @9 y! a; q
以太坊 2.0 设计中的有些技术,例如基于哈希计算的 RANDAO ,已经具备了抗量子计算的能力。 至于其他技术,如使用基于椭圆曲线的 BLS 签名聚合算法,对量子计算的抵抗力较弱。7 X" |- f# u5 Z+ ]' }( G: s& v
( `; v! D# T) J% v
另一个尚处于开发阶段的技术是 STARKs ——可扩展的透明知识证明。基于零知识证明的 STARKs 被称为 ZK-STARKS(用来实现隐私保护),在无需验证具体细节的情况下就可以证明协议活动已经正确执行。
" C; R4 u2 B; r K- P
STARKs 虽然有很多炫酷的特性,但是其中最关键一点是“能够抵抗量子计算”。9 U U8 J# r F) c$ Q# l# _ I
尽管如此,我们还是不能掉以轻心。“能经过至少 10 年的检验才算可信,”这是应用密码学家的经验之谈。STARKs 属于新技术,依旧处于发展之中。关于 STARKs 安全性的研究才刚刚起步。7 a# W! B8 T# Z6 p
不过我们还有时间,当前最关键的是,要确保已知非抗量子计算的密码学机制未来可以轻易换成可抗量子计算的算法。具体来说,在以太坊 2.0 协议中, STARKs 可以取代数据可用性证明创建所涉及的部分技术,以及上文提到的签名聚合协议 。
: }6 n U7 a8 W& e: K& G/ k, ?
###结语
3 h; J: P+ f' z% ~( k6 u. q# L
去中心化、抗冲性、安全性、简易性和持久性——这些都是以太坊 2.0 的根本设计原则。它们构成了以太坊 2.0 的 DNA 。以太坊有自己独特的身份,是根据以太坊社区的愿景提炼而成,有了这些设计目标,以太坊 2.0 才能继往开来。 说它们是目标也好,原则也好,价值观也好,正是它们将以太坊 2.0 与其他区块链设计区别了开来。
成为第一个吐槽的人