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

表 1:不可能三角衡量的指标和具体含义2 W6 m/ [8 P) f
从交易流程角度理解不可能三角及优化# h, F+ ?2 ~. s0 w* J }
, j* Z6 S g' F
区块链上的交易流程可以简化成以下四步:1 c; ?0 |; H$ O0 ~- o$ M
①使用者签署交易并广播给节点,添加到未确认交易池;& w8 Z6 [% I1 V' W
) C! s+ G& G8 C$ @2 F1 I0 T9 @3 c
②共识节点验证和执行交易,并将这些交易打包成区块;
③区块广播给网络中的其他节点;
+ I2 I7 W* Z. ^/ U6 L
④其他节点验证区块,并储存添加到区块链后。这几步骤从不同角度影响公链的三种指标。& n4 Q5 w9 T$ [6 F+ } l4 I
5 ]6 k i) r# F& E3 X
1、可扩展性0 H* N+ I1 @7 F8 N
$ C9 Y( T$ [6 Z
可扩展性会受到第②③④步的影响。在第②步中,交易的验证、执行和共识速度会影响到可扩展性。区块链的账户模型、虚拟机和共识机制等因素都会影响完成第②步的速度。以更改共识为例,如果以减少共识节点的方式缩短共识时间,就会影响系统的去中心化程度。
在第③步中,如果节点数量多,那么在各节点中同步的速度也会变慢。以扩大区块容量的思路提高可扩展性时,很难在原计划的时间内将区块广播给所有节点。在没有网络完全同步的情况下,在不同的区块后共识处理交易,会导致分叉出现,进而影响网络的安全性。而如果通过减少节点数量加快同步速度的话,会影响系统的去中心化。
第④步意味着网络交易的最终确认,如果在收到区块后节点能够快速验证,那么可以提高可扩展性,但面临损害安全性和中心化的问题是类似的。0 r, F- z4 Q% e
2、安全性8 G. ~: ]8 ~- R9 Y! R5 }- A+ i
' D$ L( `; ~" F1 Q5 F! q
在第②③④步中被攻击的难度,也就是被恶意节点控制的难度会影响系统的安全性。尤其是在第②步中体现为共识机制的性能,如果共识机制容错率低,或者容易被恶意者操纵,就会降低系统安全,或者导致节点趋于中心化。, ~2 ^: E7 y& C
3、去中心化1 @. Z/ E0 ^8 S/ Z
% r, A+ r9 ?- Z7 Q7 L
分布式的节点是公链底层基础,越多节点加入代表越多节点认同公链,并且避免单点故障带来的风险,也能提高恶意者的攻击成本,因为在相同容错率的情况下恶意者需要控制节点数量变多了。扩大区中心化程度要求节点的进入成本更低,但像上文提到的,在相同安全条件下提高节点数量会降低系统的可扩展性。
从节点的实际控制者方面理解去中心化时,重点关注的是“审查交易”的问题。节点负责打包交易时,如果按照自己喜好挑选交易和排序,会导致一些交易在提出之后很难执行以及得到链上确认。也就是影响第①步提出的交易难以在第②步中被挑选验证。8 K9 m2 `5 O) h( h: r! p
6 \# X9 V1 ~" T0 ]: X) ?& Y" I
总的来说,公链在交易流程的几步中都可以做出改善和优化,但碍于不可能三角的影响,在某一方面进行优化时,总会伴随着至少另一方面的负面影响。公链需要在不可能三角中找到平衡点,以满足更多应用场景。下文就是在各环节不同公链的优化尝试,包括以太坊的最新路线、以太坊同质公链和高性能公链。
& `9 ]1 y8 b+ m7 U
以太坊:应用新技术和新框架优化不可能三角( s; F. V. {3 c2 D/ i) b
在以太坊最近公布的路线图中,可以看出一些在不可能三角以及用户体验方面的改善。# s4 y$ t" A, n

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