2022年即将结束。停下来回顾一下这一年行业的风风雨雨。无论是技术的突破,应用的创新,还是生态的兴衰,都成为行业发展的历史注脚。和往年一样,万向区块链在年底推出了一系列重磅年度回顾文章:《公链技术篇》、《应用篇》、《监管篇》,以期记录当下行业发展的缩影。
以下是年审系列—— 《公链技术篇》。作者:万向区块链首席经济学家办公室崔晨,审核:万向区块链首席经济学家邹传伟。
公链的不可能三位一体问题一直是公链技术发展的障碍,进而影响其应用的性能。一直以来,公链的发展目标都集中在如何突破不可能三位一体或者在不可能三位一体中找到最佳平衡。公链的创新体现在更新的以太坊路线图、EVM兼容公链和模块化公链、以Solana和Aptos为代表的高性能公链等。下面将从不可能三位一体和交易过程的角度来解释不同不可能三位一体方案的区别。
对不可能三位一体的理解
不可能三位一体的概念
公链最基本的功能是在链上记录信息,维护信息安全,即依靠密码学、共识机制、分布式网络等底层组件,防止信息在开放的网络(没有信任)中被篡改(回滚)。包括公钥-私钥加密和哈希函数等。确保验证签名和链结构规则的正确性。
以太坊创始人Vitalik Buterin在2017年的一篇博文中提出:在可扩展性、安全性和去中心化这三个特性中,区块链系统最多同时具备两个。在讨论不可能三位一体对公共链影响以及公共链在不可能三位一体中的突破时,我们需要了解这三者的定义以及它们对系统的影响。
可扩展性衡量公链支持交易速度和规模的能力,体现在从提出到确认的时间上。交易速度慢的公链很难实现很多应用功能,比如即时支付,会限制应用范围,影响用户体验。
衡量安全系统抵抗攻击的能力,代表了系统面对失败时的可靠性,主要体现在容错性和修改共识的难易程度。系统的低容错性会使系统容易受到攻击,修改共识会改变已确认的交易,相当于篡改了过去的交易记录。
去中心化衡量的是公链节点的去中心化程度。因为公共链不是由可信的第三方建立的,所以只能由分布式的点对点网络来维护。在此基础上,公链节点的去中心化提供了系统的信任基础。只有结合密码学和共识机制,公链才能正常运行。去中心化也代表了用户参与交易验证的权利,也体现了用户在公链体系中的话语权。
分散体现在两个层面:一是以节点数量来衡量,节点进入门槛越低,数量越多,分散程度越高;其次,以实际控制人衡量,如果公链中存在矿池等角色,实际上一个角色控制多个节点,会给系统带来集中交易审核等问题。
总的来说,公链不可能三位一体的指标和具体含义如下表所示。
表1:不可能三位一体测量的指标和具体含义
从交易过程的角度理解不可能三位一体与优化
区块链上的交易过程可以简化为以下四个步骤:
用户签署交易,广播到节点,加入未确认交易池;
共识节点验证并执行事务,并将这些事务打包成块;
阻塞对网络中其他节点的广播;
其他节点验证该块,将其存储并添加到区块链中。
这些步骤影响三个指标
步骤 会影响可扩展性。第二步,事务验证、执行和一致的速度会影响可伸缩性。区块链的账户模型、虚拟机和共识机制都会影响完成步骤的速度。以改变共识为例,如果通过减少共识节点数来缩短共识时间,会影响系统的去中心化程度。
第三步,如果节点数量多,每个节点内的同步速度也会变慢。当通过扩展块容量来提高可扩展性时,很难在最初计划的时间内将块广播到所有节点。在没有完全网络同步的情况下,在不同区块后以一致意见处理事务会导致分叉,从而影响网络的安全性。但如果通过减少节点数量来加快同步速度,则会影响系统的分散性。
第4步表示网络交易的最终确认。如果节点在接收到块后能够快速验证,则可扩展性可以得到提高,但是折衷安全性和中心化的问题是相似的。
2.安全
步骤 中被攻击的难度,即被恶意节点控制的难度,会影响系统的安全性。尤其是第二步,共识机制的表现就体现出来了。如果共识机制容错率低或者容易被恶意者操纵,就会降低系统的安全性或者导致节点变得集中化。
3.分散
分布式节点是公共链的底层基础。加入的节点越多,认同公链的节点越多,可以避免单点失效带来的风险,也可以增加恶意人的攻击成本,因为在相同的容错率下,恶意人需要控制的节点数量变大。扩大区域中心化程度要求节点的进入成本更低,但如前所述,在同等安全条件下增加节点数量会降低系统的可扩展性。
当我们从节点实际控制人的角度来理解去中心化时,重点是“审核事务”的问题。当一个节点负责打包事务时,如果它根据自己的偏好对事务进行选择和排序,那么有些事务在被提出后将很难在链上执行和确认。也就是说,步骤中提出的事务很难在步骤中被选择和验证。
一般来说,公链可以在交易过程的几个步骤中进行改进和优化,但由于不可能三位一体的影响,当一个方面得到优化时,总会有至少另一个方面的负面影响。公链需要在不可能三位一体中找到一个平衡点,以满足更多的应用场景。以下是对各环节不同公链的优化尝试,包括以太坊最新路线、以太坊同质公链、高性能公链。
以太坊:应用新技术和新框架优化不可能的三位一体
在最近公布的以太坊路线图中,我们可以看到不可能三位一体和用户体验的一些改进。
图1:以太坊最新路线图
合并:共识机制从PoW转变为PoS。
共识机制主要影响块生成和验证同步的过程。以太坊转换成PoS后,采用了LMD幽灵卡斯珀FFG公式机制,达到了两个目的:每个时段(12秒)生成一个区块,进行相应的见证投票,经过两个纪元(一个纪元包括32个时段)确认终结。回滚块需要销毁链上至少三分之一的ETH。
在以太坊的合并阶段规划中,以太坊还计划将最终的线路确认时间缩短至单个槽位,让交易确认不再需要几分钟的等待时间,将实现更高的效率,提升用户体验。但需要改进共识算法来确认单槽,这可能会降低减少攻击链(改变共识)的成本和验证节点的数量,从而影响公链的安全性和去中心化。
Surge:Rollup和Danksharding合作提高交易处理速度。
以太坊通过第二层的方式,尤其是通过Rollup的方式来扩充容量。第二层网络将内容放在链外的主网络上执行,然后将可验证的结果发送回链。目前
在最优rollup中,由于通用设置,用户数和整体锁值占据先发优势。Optimic的排序器争议比较大,因为目前Arbitrum和乐观的排序器都是集中分布的,容易造成交易审核问题。ZK汇总关注两个问题。首先是zkEVM的建设。在兼容EVM和完全独立虚拟机之间选择,也是在实用性和性能之间的选择。二是加快零知识证明的速度,通过硬件设备生成零知识证明也是一种选择。为了进一步降低链中数据的可用成本,两类Rollup都有链中数据存储的模式,适用于需要高频交互的场景,但增加了节点的信任成本。
Rollup看似解决了公链不可能的三位一体问题,但它有两个固有的问题。第一,Rollup的信息处理能力是有上限的,尤其是Rollup的实现依赖于底层网络,底层网络的承载能力决定了Rollup的运行能力;其次,链中不同的Rollup会带来互操作性问题。
为了让Rollup发挥更大的作用,以太坊的EIP 4844(proto-danksharding)提出将block容量扩展为blob数据块,以承接Rollup返回到主链的数据。虽然扩大块容量提高了可扩展性,但是大数据的共识和同步也会带来问题。因此,在激增阶段,还计划进行在线DAS(数据可用性抽样)。
DAS允许节点将数据分成若干块,而不是下载并验证所有的数据,节点只需要随机下载其中的一部分来验证数据是否丢失。DAS的检测精度将通过纠删码得到提高。纠删码可以扩展额外的数据来恢复丢失的原始数据,这是一种数据冗余机制。KZG加密机制保证了纠删码扩展数据的有效性。
假设有4个数据块等待验证,节点有25%的概率发现原始数据块丢失。使用纠删码将数据翻倍为8个数据块后,如果超过50%的数据丢失,则无法恢复原始数据,即节点发现数据丢失的概率超过50%。随着验证节点数量的增加,发现数据丢失的概率也会增加。假设总共随机采样N个节点,当数据丢失50%时,概率只有1/2n,所有节点都提取了没有丢失的数据块。因此,在大量节点存在的情况下,DAS的验证模式足以保证数据安全。
因此,通过增加块容量来提高整个块的可扩展性,会降低同步效率,影响系统安全性。为了提高同步速度,减少节点的存储容量,保证足够的分散性,只能对密码学的机制进行改进,但还是影响了网络整体的安全性。
节点提议者和建造者的角色是分开的。
以太坊使用PBS(提议者/构建者分离)将节点的任务分成提议者和构建者两个角色。建筑商负责建造砌块体并提交标书。提议者只需执行出价最高的区块,不知道区块内的交易内容,减少审核交易。
Danksharding的实现对构建者会要求更高的带宽资源,构建者会因为专业化的要求而成为一个中心化的组织,而提出者则是一个广泛的去中心化的团体,以平衡中心化的风险。只要有诚实的建造者,以太坊积木就可以正常生产。为了防止构建者审查交易,提议者将代表提议者传递crList要求打包的交易列表,构建者需要用crList中的交易填充块。这是一种削弱MEV的机制。同时,在大块模式下,节点分为两种角色,保证足够的去中心化。
Verkle树、历史到期和多维消费市场
庞大的历史数据会影响以太坊的去中心化,尤其是不断增加的状态数据会导致各种低效问题。为了在不影响去中心化的情况下实现上述可扩展的计划,需要一些机制来确保可以满足相同的安全标准,并且系统可以更高效地运行。
Verkle树是一种更简单的数据存储模式,与现有的Merkle树相比,它需要更少的证明空间。这是密码学做出的改进,配合历史数据过期机制,减轻节点的存储压力,继续降低节点的门槛。
历史数据过期机制可以解决数据膨胀的问题,客户端不需要存储一定时间后的数据。Proto-Danksharding还可以实现一段时间后自动删除blob数据的独立逻辑,因此大块不再是容量扩展的障碍。这并不意味着块数据永久丢失。在数据删除之前,已经为需要数据备份的用户留出了足够的时间。网络中还有存储所有历史数据的节点。这些角色包括特殊协议。以太坊门户网,block浏览器和数据服务商,个人爱好者和数据分析学者都会存储所有节点数据。
在多维成本市场中,每种资源都有一个目标值和一个容量上限。正如EIP 1559对天然气的要求,资源的利用程度与资源的定价有关。以太坊将开始从EVM执行、交易调用数据、见证数据、存储容量等方面进行更细致的定价和收费,包括即将上线的Proto-Danksharding中的blob块。最终目的是实现每个单独操作码的定价,在统计费用时会改善用户体验。
综上所述,以太坊急需性能提升,提出了Rollup和Danksharding的思想来提升性能。同时,为了让更多的汇总数据廉价存储且不臃肿,提出了数据可用性的解决方案,弱化了由此带来的安全性降低的问题。以太坊仍然需要修复自己的技术债,继续通过PBS、历史和状态到期规划来保护节点的去中心化。借助新技术和新框架的引入,以太坊在去中心化和安全性的前提下实现了最大的可扩展性。
以太坊同质公链:在不同层面解决不同的不可能三位一体
EVM兼容链
在过去的几年中,以太坊牺牲了可扩展性来换取安全性和去中心化,这说明以太坊是全球节点数量最多的公链项目,并且在过去的几年中没有出现大规模的网络中断事件。网络不会因为个别节点的故障和退出而中断,证明网络有足够的冗余备份。同时,节点需要较长的共识同步时间,交易处理速度较慢,导致交易费用增加。
简单来说,以太坊的主要网络结构包括执行层和共识层。执行层是指以太坊中节点执行用户指令的过程,包括传输和EVM。在大量节点存在的情况下,一致性和同步性必然会受到影响。因此,提高以太坊性能最简单的方法就是修改其共识层,降低共识同步的速度,以达到更快的效率。
这一点从以太坊同质公链(即各种EVM兼容链)的竞争就可以看出来。特别是当执行环境相同时,应用程序的迁移更容易。因此可以看出,采用以太坊架构的同构公链采用了这种方式,修改了以太坊的共识模式,减少了节点数量,缩短了共识时间,但保留了执行层的功能。虽然可能会导致中心化的问题,但是由于以太坊上对应用溢出需求的快速接受,以太坊已经取代成为应用项目的分发场所。比如BSC、Polygon、Avalanche都是EVM兼容链的代表公链,它们的共同点是网络中参与共识的节点数量大大减少。
模块化公共链
“模块化公共链”出现在邰方的竞赛公共链中,它将通过分层f
不同的聚焦应用会选择不同的聚焦公链,因为它们对性能、安全和去中心化有不同的要求。比如隐私公链不允许交易审核,愿意付出额外成本保护其去中心化。承载金融应用的公链更注重安全性,而游戏公链会要求非常高的性能体验,会降低对去中心化的要求。
因此,模块化公链抽象出每一层需求,将区块链分为共识层、执行层、结算层和数据层。不同的层可以有多个解决方案,这些解决方案可以根据链的不同要求直接集成,从而达到最佳效果。同时每一层的方案都是模块化的公共供应链切换,以平衡应用需求,突破不可能三位一体的变相限制。
以太坊的非同质公共链——反思《不可能的三位一体》中的聚焦方向
由于以太坊的性能瓶颈问题,几乎所有新的非同质公链都选择了性能优先的方案,并本着PoS类的共识,不断推出新技术来强化其性能优势或弥补安全缺陷。
索拉纳首先增加了block的容量,block承载的数据量扩大了10倍。其次,为了减少每次同步的节点数量,索拉纳会提前公布负责节点的名单,每笔交易只需要传送给领导即可。其他验证者只需要验证自己负责的部分,不需要验证整个区块。
另外,索拉纳在执行交易前会提前判断。如果条件满足,它将采用并行计算来提高事务的处理速度。如果需要串行处理,就会转向比以太坊效率更低的运行模式。可见Solana为了追求可扩展性,牺牲了安全性和去中心化。当领导节点失效时,或者判断是否并行处理错误时,会造成网络中断的问题。
Aptos号称是新一代高性能公链的代表,以不同的方式延续了以太坊公链的各种功能。Aptos采用AptosBFT共识机制,这是一种基于BFT的共识机制。只需两次网络往返验证提交区块,无需多轮投票,可快速实现最终确认。Aptos块只包含交易记录的汇总,而不是所有的交易记录信息,所以每个块中会有更多的交易。它将事务分组成批,达成共识后合并成块,在后续的执行和存储中批量处理,可以提高效率。
Aptos也采用并行处理,使用Block-STM引擎。默认情况下,所有事务并行处理。在发生冲突的情况下,不成功的事务将被重新执行,这依赖于调度器来防止同一事务被同时执行,并在重新执行事务后获得更多的安全确认。此外,快速状态同步也是Aptos的一个考虑因素。
同步是指事务完成,状态转换后,将状态结果同步到其他节点的过程。低效的同步会导致大部分节点无法同步到最新的状态信息,从而影响用户体验,新节点也难以加入共识过程,从而影响网络的去中心化。Aptos提供了多种状态同步方法,包括通过验证器使用RocksDB或Merkel证明节点生成的状态变化,以及跳过事务执行阶段来同步状态。这种方法减少了节点同步所需的大量计算资源,但需要建立在使用大量网络资源的基础上。Aptos建议共识节点应该运行在云服务器上,个人电脑很难满足它的要求。
Aptos认为以太坊的虚拟机也是其瓶颈。以太坊没有办法大规模更新语言,但Aptos没有这样的技术负担。Aptos和SUI都采用Move语言,Move的创新之处在于把资产当成资源。对资源的创建、使用和销毁都有一定的限制,因此不会出现以太坊中常见的重入攻击问题,可以更安全地构建smart co
综上所述,新公链认为可扩展性优先于安全性和去中心化,与以太坊不同。所以他们在《不可能的三位一体》中重新选择了专注方向,而这种改变对于用户来说是非常明显的,索拉纳上的宕机问题是不可避免的。
思考和总结
共识机制和分布式节点网络从两个方面保证了公链的可靠运行:
一、保证系统的容错性:共识机制具有一定的容错性,即当失效节点的比例低于一定比例时,系统仍能验证信息。自由分布的节点可以补充新的正常节点。
第二,增加系统的攻击成本:共识机制代表节点对已有区块的状态达成一致的方式,拥有共识机制控制权的一方拥有代表作恶者修改共识(修改账本记录)和审核交易(决定交易顺序和是否打包)的权力。共识机制和分布式节点会增加规则攻击的难度和成本。
在此基础上,区块链的不可能三位一体问题可以这样理解:
以太坊本身已经基本成型,很难一开始就做出改变。因此,以太坊正在尽力引入新技术(密码学、单槽终结算法)和新框架(Rollup、数据可用性)来优化其性能瓶颈。希望借助新技术、新框架,在去中心化、安全性的基础上大幅提升其性能,进而优化不可能的三位一体。
以太坊同质公链、EVM公链、模块化公链灵活得多。以太坊级别的拆分让他们找到自己的“社会分工”来匹配不同的应用,比如承载金融、游戏、隐私等等。根据应用的需求,推导出不同层技术框架的需求,帮助他们在不可能三位一体中找到新的平衡点。
以太坊的非同质公链,因为没有技术负担,完全可以另起炉灶,使用全新的架构和技术手段。不同于以太坊在充分去中心化和安全性的前提下对性能的追求(以太坊的同质公链介于两者之间,但也更倾向于性能),都选择了性能优先的路径。这样做的好处是用户可以直观的感受到自己的进度(TPS),但是安全性和去中心化的问题也是一个隐患。