公链的不可能三角问题一直是制约公链技术发展的阻碍,进而影响到链上应用的性能。一直以来,公链的发展目标都集中在如何突破不可能三角的问题上,或者在不可能三角中找到最佳平衡。公链的创新体现在以太坊更新的路线图、EVM兼容公链和模块化公链、Solana和Aptos为代表的高性能公链等。下文将针对不可能三角和交易流程角度,解读不同不可能三角解决方案的区别。# n' p5 n: ~7 |% i; e
对不可能三角的理解
不可能三角的概念" {$ @$ k8 D( P! J% k
公链最基本的功能是在链上记录信息且维护信息安全,即在开放的网络中(无信任)防止信息被篡改(回滚),依赖的是密码学、共识机制、分布式网络等底层组件。密码学包括公私钥密码学和哈希函数等,保证验证签名的正确性和链式结构规则。9 X. Z' S0 u _( L4 G5 r
以太坊创始人Vitalik Buterin在2017年的一篇博客文章中提出:在可扩展性、安全性和去中心化这3个特征中,区块链系统最多同时具备两个。在讨论不可能三角对公链影响以及公链在不可能三角上的突破时,我们需要理解这三者的定义和对系统的影响。# c) u* D. _% { K; m4 [
+ W# x- [ n" W/ P7 q/ o
可扩展性衡量公链支持交易速度和规模的能力,体现在交易从提出到被确认的时间。交易处理速度慢的公链难以实现很多应用功能,例如即时支付,这会限制应用的范围并影响用户体验。安全性衡量系统抵御攻击的能力,代表系统在面对故障时的可靠性,主要体现在容错性和修改共识的难度。系统容错性低会让系统易于攻击,修改共识会改变已确认的交易,相当于篡改过去的交易记录。
去中心化衡量公链节点的分散程度,由于公链不是通过可信第三方建立的,只能由分布式的点对点网络维持网络系统运营,在此基础上,公链节点的分散性提供了系统的信任基础。结合密码学和共识机制,公链才能发挥正常的功能。, ^; f, \! `! O8 `# E' D
5 n/ {. S2 {9 F+ H' R# @' r
去中心化同时代表了用户参与交易验证的权力,也体现出用户在公链系统中的话语权。去中心化体现为两个层次:第一以节点数量衡量,节点的准入门槛越低,数量越多,分散程度越高;第二以实际控制者衡量,如果公链中存在例如矿池类的角色,实际上一个角色控制多个节点,会给系统带来中心化的交易审查等问题。6 z1 X! }( e" L R% D, v0 V k) r
9 w% R, L, _) s
总的来说,公链不可能三角所衡量的指标和具体含义如下表所示。
( O( M5 ^# L" L7 v' d

& J) q( g7 m" g( X
表 1:不可能三角衡量的指标和具体含义% t9 e3 p; F: k" o$ P9 K
从交易流程角度理解不可能三角及优化$ ~) [ T" M* W6 d: G- m- j
* ~ U; u: g; G% K9 K
区块链上的交易流程可以简化成以下四步:
2 r. d$ o8 E. K1 D
①使用者签署交易并广播给节点,添加到未确认交易池;
, j. t9 f! Z7 V' f3 p: }2 S o# p6 N
②共识节点验证和执行交易,并将这些交易打包成区块;
③区块广播给网络中的其他节点;
④其他节点验证区块,并储存添加到区块链后。这几步骤从不同角度影响公链的三种指标。3 Z% z: y( }. U1 w: `3 Z
1、可扩展性
可扩展性会受到第②③④步的影响。在第②步中,交易的验证、执行和共识速度会影响到可扩展性。区块链的账户模型、虚拟机和共识机制等因素都会影响完成第②步的速度。以更改共识为例,如果以减少共识节点的方式缩短共识时间,就会影响系统的去中心化程度。
在第③步中,如果节点数量多,那么在各节点中同步的速度也会变慢。以扩大区块容量的思路提高可扩展性时,很难在原计划的时间内将区块广播给所有节点。在没有网络完全同步的情况下,在不同的区块后共识处理交易,会导致分叉出现,进而影响网络的安全性。而如果通过减少节点数量加快同步速度的话,会影响系统的去中心化。
7 `) M( O% G* j2 u7 D6 V( F
第④步意味着网络交易的最终确认,如果在收到区块后节点能够快速验证,那么可以提高可扩展性,但面临损害安全性和中心化的问题是类似的。* I% T6 G( i6 g) G y& c
2、安全性 x+ ?# I/ k) ~' n% S8 @" J& d: |
( \; V! X0 W2 e! [. n5 }$ r
在第②③④步中被攻击的难度,也就是被恶意节点控制的难度会影响系统的安全性。尤其是在第②步中体现为共识机制的性能,如果共识机制容错率低,或者容易被恶意者操纵,就会降低系统安全,或者导致节点趋于中心化。
/ k) M0 j1 o' A/ m9 |; t5 C# w1 {4 v
3、去中心化
, N0 t! x: U: @$ B8 z
分布式的节点是公链底层基础,越多节点加入代表越多节点认同公链,并且避免单点故障带来的风险,也能提高恶意者的攻击成本,因为在相同容错率的情况下恶意者需要控制节点数量变多了。扩大区中心化程度要求节点的进入成本更低,但像上文提到的,在相同安全条件下提高节点数量会降低系统的可扩展性。
2 v/ @; ?( t& Y8 C& K+ G7 W4 \
从节点的实际控制者方面理解去中心化时,重点关注的是“审查交易”的问题。节点负责打包交易时,如果按照自己喜好挑选交易和排序,会导致一些交易在提出之后很难执行以及得到链上确认。也就是影响第①步提出的交易难以在第②步中被挑选验证。% @% S. u5 I. ^0 ]
总的来说,公链在交易流程的几步中都可以做出改善和优化,但碍于不可能三角的影响,在某一方面进行优化时,总会伴随着至少另一方面的负面影响。公链需要在不可能三角中找到平衡点,以满足更多应用场景。下文就是在各环节不同公链的优化尝试,包括以太坊的最新路线、以太坊同质公链和高性能公链。8 K1 ]8 d3 m5 E4 ?
以太坊:应用新技术和新框架优化不可能三角
d" }4 i. [- R7 J% T
在以太坊最近公布的路线图中,可以看出一些在不可能三角以及用户体验方面的改善。+ u! v$ D5 C. S9 {1 b7 Y, ~ G

" @1 c5 K8 c8 K5 t8 {/ p2 m
图 1:以太坊最新路线图
Merge:共识机制由PoW转化为PoS) F3 ]$ W4 U0 [# n4 z$ ~
共识机制主要影响区块的产生和验证同步过程,在以太坊在转化为PoS后,采用的是LMD GHOST + Casper FFG公式机制,实现了两个目标:在每个slot(12秒)内产生一个区块,并进行相应的见证投票,在两个epoch(一个epoch包括32个slot)后被确认最终性,回滚区块需要销毁至少三分一的链上质押的ETH数量。8 [( J# K) }: K* Y) o F9 b7 f! V# ~
& g. f6 H; f1 R1 V1 B
在以太坊的Merge阶段规划中,以太坊还计划将最终行确认时间缩短到单个slot,交易确认不再需要几分钟的等待时间,这会达到更高效率,提升用户体验。但达成单个slot确认需要改善共识算法,可能会减少降低攻击链(改变共识)的成本,以及减少验证的节点数,影响公链的安全性和去中心化。
Surge:Rollup和 Danksharding配合提高交易处理速度
以太坊通过Layer 2手段进行扩容,特指Rollup的扩容方式,二层网络将主网上的内容放在链外执行,再将可验证的结果传回到链上。目前以太坊中的Rollup仍以Optimistic和ZK两个路线为主。
在Optimistic Rollup中,由于通用性的设定,在用户数量和整体锁定价值占据了先发优势。Optimistic在排序器方面有很多争议,因为目前Arbitrum和Optimism的排序器都是以中心化方式的方式出块,很可能造成交易审查问题。ZK Rollup重点专注两个问题,第一是zkEVM的构建,在兼容EVM和完全独立构建虚拟机之间做选择,也是在实用性和性能做选择。第二是加速零知识证明的速度,通过硬件设备生成零知识证明也是一种选择。为了进一步降低链上的数据可用成本,这两类Rollup都出现了链下数据存储的模式,适用于需要高频交互的场景,不过提高了对节点的信任成本。
7 a+ p i/ b# S" a, q. o0 E+ f
Rollup看似解决了公链的不可能三角问题,但Rollup存在两个固有问题。第一,Rollup的信息处理能力存在上限,尤其是Rollup依赖底层网络实现,底层网络的承载能力决定了Rollup中的运行能力;第二,链上的不同Rollup会带来互操作问题。- o+ `) E3 m- Q' V7 d/ G/ B, U) M
% n& _. i- w, @/ l) ^
为了让Rollup发挥更大功能,以太坊的EIP 4844(proto-danksharding)提出将区块容量扩大出blob数据块,以承接Rollup传回主链上的数据。扩大区块容量虽然提高了扩展性,但大数据的共识和同步同样会带来问题。因此在Surge阶段,还计划上线DAS(数据可用性抽样,Data Availability Sampling)。
DAS可以让节点无需下载和验证全部数据,而是将数据分成几块,节点只需要随机下载其中的一部分来验证数据是否丢失即可。DAS的检测准确度将通过纠删码提高,纠删码能够扩充额外数据用以恢复丢失的原始数据,是一种数据冗余机制,纠删码扩充数据的有效性由密码学机制KZG承诺保证。
假设共有4个数据块等待验证,节点有25%的概率发现原始数据块丢失了1个。使用纠删码将数据扩充一倍至8个数据块后,超过50%的数据丢失则无法恢复原始数据,也就是节点发现数据丢失的概率超过了50%。随着验证节点数量的增加,发现数据丢失的概率也会增加。
假设共有n个节点进行随机抽样,数据丢失50%时,只有1/2n的可能性恰好所有节点都抽取了未丢失的数据块。因此在大量节点存在的情况下,DAS的验证方式足以保证数据安全。所以综合来说,以增加区块容量的方式提高整体区块的可扩展性,就会同步效率降低影响系统安全性。而为了提高同步的速度,减少节点存储量,保证足够的去中心化,只能做出机制上密码学的改善,但整体上还是影响了网络的安全性。
0 e% f/ u3 y2 ?( x: l
节点的角色提议者和构建者分离
以太坊使用PBS(提议者和构建者分离,Proposer/Builder Separation)的方式,将节点的工作任务分成两个角色,分别是提议者(Proposer)和构建者(Builder)。构建者负责构建区块主体和提交出价,提议者只需要执行出价最高的区块,并且不知道区块内的交易内容,以减少审查交易。
. N* P- m R; E( u7 T
Danksharding的实施会对构建者有更高带宽资源的要求,构建者会因为专业化的要求成为中心化组织,而提议者是一个广泛的去中心化群体,用以平衡中心化风险,只要有一个诚实的构建者存在,以太坊区块就能正常出块。为了防止构建者审查交易,提议者会传递crList代表提议者要求打包的交易列表,构建者需要使用crList中的交易填满区块。这是一种削弱MEV的机制,同时在大区块模式下,让节点分成两种角色,保证足够的去中心化。0 B, W# E- d/ n
5 l6 }0 q! S* k1 I
Verkle树、历史过期和多维度费用市场
庞大的历史数据会影响以太坊的去中心化,尤其是日益增长的状态数据会导致各种效率低下的问题。为了不影响去中心化,同时实现上文提到的可扩展计划,需要一些机制保证能够达到同样的安全标准,以及实现系统更有效率的运行。, m6 j( ?$ I2 a9 g: n7 L7 g( ^
Verkle树是一种更简单的数据存储模式,相对于现有的Merkle树来说所需要的证明空间更少,这是由密码学技术做出的改善,配合历史数据过期机制减少节点的存储压力,继续降低节点门槛。3 R7 s& j6 [7 q8 ^, f. z
历史数据过期机制可以解决数据膨胀的问题,客户端无需储存超过一定时间后的数据。Proto-Danksharding也可以实现在一段时间后自动删除blob数据的独立逻辑,因此大区块不再成为扩容的阻碍。这不意味着区块数据永久丢失,在数据删除之前,已经留给足够多的时间给需要数据的用户备份。网络中也存在保存全部历史数据的节点,这些角色包括专门的协议,以太坊Portal Network、区块浏览器和数据服务商、个人爱好者和数据分析的学者会保存全部节点数据。
8 _7 g$ M& e' n8 }) I+ c
在多维度费用市场中,每种资源都规定目标值和容量上限,正如EIP 1559实施对gas的要求一样,资源的使用程度关系到资源的定价。以太坊将要从EVM执行、交易calldata、见证数据和存储容量这几方面开始进行更细分的定价和收费,包括Proto-Danksharding中即将上线的blob区块。
最终目标是实现每个单独操作码的定价,将提高费用统计时的用户体验。综上所述,以太坊迫切需求性能提升,提出了Rollup和Danksharding的思路提高性能。同时又为了让更多Rollup数据能廉价、不臃肿地存储,提出了数据可用性的解决方案,并弱化它带来的安全性降低的问题。以太坊仍然要修补自己的技术债,通过PBS、历史和状态过期等规划,继续保护节点的去中心化。以太坊借助新技术和新框架的引入,在保证去中心化和安全性的前提下,实现最大化的可扩展性。
以太坊同质公链:在不同层解决不同的不可能三角
9 }' _: S x# C! V7 m h
EVM兼容链2 B( {8 {3 K8 w1 {, |
' _' X' |( I ?9 A- y( a
在过去的几年中,以太坊牺牲了可扩展性来换取安全和去中心化,表现为以太坊是全世界拥有节点数量最多的公链项目,并且在运行的这几年过程中没有经历过大规模的网络中断事件,网络不会因为个别节点的故障和退出而中断,证明了网络拥有足够的冗余备份。与此同时,节点需要很长时间的共识同步时间,交易的处理速度较慢并引起了交易手续费的上升。- V# d/ \$ J3 X/ N
- W) E8 I: |2 R/ p U
简单区分,以太坊主网的结构包括执行层和共识层,执行层指的是节点在以太坊中执行用户指令的过程,包括转账和EVM。在大量节点存在的情况下,共识及同步势必会受到影响。因此最简单的提升以太坊性能的方式就是修改其共识层,减少共识同步的速度以实现更快的效率。
1 q! j# @ o B% g; ^
这一点从以太坊同质公链(即各类EVM兼容链)的竞争中就能看出这一点。尤其是在执行环境相同时,应用的迁移更为容易。因此可以看到采用以太坊架构的同质化公链采取了这样的方式,它们修改了以太坊的共识方式,减少了节点数量并缩短共识时间,但保留了执行层的功能。虽然可能带来中心化的问题,但由于迅速承接以太坊上应用的外溢需求,替代以太坊成为应用类项目的发行地。比如BSC、Polygon和Avalanche,都是EVM兼容链的代表公链,它们的共同点都是大幅减少了网络中参与共识的节点数。
模块化公链: }: f- Z& P" U* D/ D/ d3 m
; F% q4 \" {* E0 H1 f- B
以太坊的竞争公链中出现了“模块化公链”,将以太坊的功能分层,以模块化的方式运营。这其实也是一个代表性思路,不可能三角虽然存在,但是可以在其中找到了一个折中点。不同侧重的应用会选择不同侧重的公链,因为它们对性能、安全和去中心化的需求是不同的。例如隐私公链不允许交易审查存在,它愿意付出额外的成本去保护它的去中心化。承载金融应用的公链对于安全性重视更高,而游戏类公链会要求极高的性能体验,会放低对去中心化的要求。
因此模块化公链将需求的每一层抽象出来,将区块链分为:共识层、执行层、结算层、数据层,不同层都可以有多种解决方案,而又根据链的不同需求,直接整合这些解决方案,这样实现最佳的效果。同时各层方案是模块化的供公链切换,以此平衡应用需求,变相突破了不可能三角的限制。
4 I& a) l! r! o$ x: p0 H6 m) N$ t
以太坊非同质化公链:重新思考不可能三角中的侧重方向
- H4 c+ q- v. T) g, \# B
由于以太坊的性能瓶颈问题,新的非同质化公链几乎所有都选择了性能优先的规划,配合PoS类共识,又引入新技术强化它的性能优势或者弥补安全性的缺陷。Solana首先提高了区块的容量,区块承载的数据量扩大了十倍。其次,为了减少每次同步的节点数,Solana会提前公布负责的节点名单,每次交易只需要传输给负责人(Leader),其他验证者只需验证自己负责的部分,也不需要验证整个区块。
: A& I0 Y* N! N1 u6 b4 r9 {
除此之外,Solana在执行交易前会预先判断,如果满足条件会采用并行计算来提高交易的处理速度,如果是必须串行处理的,会转为比以太坊效率更低的运行方式。
F" @; T& m1 [2 r4 H; O5 q9 z3 P
可以看出,Solana为了追求可扩展性,牺牲了安全和去中心化,当领导人节点故障,或者在判断是否要并行处理失误时,就会造成网络中断的问题。Aptos号称是新一代高性能公链的代表,它以不同方法延续了以太坊公链上的各种功能。Aptos采用AptosBFT共识机制,这是一种基于BFT的共识机制,只需两次网络往返即可验证和提交区块,无需多轮投票,并且可以快速实现最终确认性。Aptos区块只包括交易记录的摘要,不会包含所有交易记录信息,因此每个区块中包含的交易数量会更多。
它将交易分组为批次,并在达成共识后合并进区块,在后续的执行和存储中都是批量处理的,这个过程中可以提高效率。Aptos同样采用了并行处理的方式,采用了Block-STM 引擎,默认对所有事务采用并行处理的方式,发生冲突时不成功的交易会重新执行,这需要依靠调度程序,防止同一事务被同时执行,以及重新执行事务后获得更多安全确认。除此之外,快速的状态同步也是Aptos考虑的问题。状态同步指的是在交易完成进行状态转化后,将状态后的结果同步给其他节点的过程。状态同步的低效会导致大多数节点无法同步到最新的状态信息,因此影响用户体验,并且新节点难以加入共识过程,影响网络的去中心化。) j# n' H+ T0 p1 [. W) ~
Aptos提供了多种状态同步方式,包括使用RocksDB或者节点通过验证者产生的状态变化的默克尔证明,跳过交易执行阶段来同步状态。这种方式减少了节点同步时所需要的大量计算资源,但需要建立在使用大量网络资源的基础之上,Aptos建议共识节点在云服务器上运行,个人电脑很难达到其要求。* @$ t$ e7 F; x: m3 b8 d! b3 a# N
Aptos认为以太坊的虚拟机也是它的瓶颈,以太坊没有办法再大规模更新它的语言,但是Aptos没有这样的技术包袱。Aptos和SUI都采用了Move语言,Move的创新在于将资产作为资源处理。9 X1 K) B1 c- ~
6 M: J$ ~3 D& R. w ` R4 n# u; C
在创建、使用和销毁资源时有一定限制,因此不会发生以太坊中常见的重入攻击问题,能够让更安全地构建智能合约,并且让虚拟机并行处理多个事务,根据存储资源收取租金也成为可能。总结来说,新公链认为可扩展性优先于安全性和去中心化,这和以太坊是不同的。因此,它们重新选择了不可能三角中的侧重方向,这样的改动对于用户的感受是非常明显的,Solana上发生的宕机问题也是不可避免的。0 k6 K& U6 ?" X1 P! n
( e5 X; N/ H: h+ ?4 x" x
思考与总结
共识机制和分布式的节点网络从两方面保证了公链的可靠运转:% s3 L2 C' B" y, A9 _; D5 r5 o/ A
第一,保证系统的容错性:共识机制有一定的容错性,也就是故障节点占比在一定比例之下时,系统依然可以验证信息。自由加入的分布式节点能够补充新的正常节点。4 @/ W4 S( T2 S! B+ q
第二,提高系统的攻击成本:共识机制代表节点对已有区块状态达成一致意见的方式,掌握共识机制的控制权的一方代表作恶者拥有修改共识(修改账簿记录)和审查交易(决定交易排序和是否打包上链)的权力。共识机制和分布式节点能够从规则上增加攻击的难度和成本。
在此基础上,区块链的不可能三角问题可以这样理解:! G* t7 ?( @7 S2 ?
以太坊本身已经基本成型,较难另起炉灶做出改变,因此以太坊在尽最大努力引入新的技术(密码学技术、单槽最终性算法)和新的框架(Rollup、数据可用性)来优化它的性能瓶颈,希望凭借新技术和新框架,使其在去中心化和安全性变大不大的基础上,大幅提升性能,进而优化不可能三角。
, d' W8 n- K( K% L& W, `/ z* }
以太坊同质化公链, EVM公链和模块化公链则灵活得多。对以太坊层级的拆分,可以让它们寻找自己的“社会分工”来匹配不同的应用,例如承载金融、游戏、隐私等等。根据应用的需求,反推出不同层技术框架的需求,这帮助它们在不可能三角中找到了新的平衡点。& ?& R" L0 h, [4 j, A, W& h. c0 Q% n
% ?" V7 x( R5 ]' {% { F
以太坊的非同质化公链,因为没有技术包袱,则可以彻底另起炉灶,使用全新的架构和技术手段。与以太坊在足够去中心化和安全的前提下追寻性能不同(以太坊同质化公链介于两者之间,但是也更多地倾向于性能),它们不约而同地都选择了性能优先的路径。这样的好处是用户非常直观地感受到了它们的进步(TPS方面),但是其中的安全和去中心化问题也是一种隐患。