2021年9月4日,BeWaterDEVCON全球开发者大会在北京举办,来自各地的近百位区块链开发者齐聚北京,围绕编程语言、密码学、去中心化协议、隐私技术、安全计算、开放金融等领域展开深入探讨。在提到公链的可扩展性问题时,来自海内外的开发者们对当前备受市场关注的分片、Layer2、侧链等技术解决方案展开了激烈的讨论。HECO技术负责人Andrew系统地分析了当前公链赛道存在的可扩展性难点,并详细介绍了现有公链可扩展性解决方案的优缺点。Andrew认为Layer1方案是对区块链平台的扩展,而Layer2技术是对区块链应用的扩展,Andrew将Layer1扩容架构分为3大类:分片、DAG和大区块,将Layer2扩容架构分为侧链子链、状态通道和Rollup三大类。另外,Andrew重点分享了HECO在公链扩展性理念和实践中的经验和总结,“HECO回到公链扩展性问题的原点,立足于公链自身的架构优化,只要保证区块链特有的约束和语义不被破坏的提前下,软件和互联网领域成熟优秀的工程优化经验是可以充分借鉴和利用的。”基于以上观点和认知,Andrew提出公链架构优化的新四化建设:1)在保证链式结构的提前下,对架构进行模块化,对组件进行充分拆分和解耦;2)在保证线性语义的提前下,对执行进行并行化,实现多阶段流水线作业;3)在保证状态一致性的前提下,进行异步化改造,将阻塞式的I/O操作放在后台处理;4)在保证透明安全的前提下,进行本地化多级缓存优化。Andrew在分享过程中提到,HECO当前性能优化成果是BSC的1.3倍以上,对Geth的性能提升更是达到了1.5倍以上,未来HECO也会有计划地将这些优化经验贡献给Geth社区。演讲最后,Andrew提出“CAB定律”——CryptoAndyandBill’slaw,他认为未来10-20年,大部分基础网络、基础硬件、基础安全的技术红利都会被区块链行业充分吸收并极致发挥,HECO未来将持续在Layer1扩展性之路上深入探索。以下为Andrew演讲全文:公链扩展性问题和解决方案
区块链技术的本质是扩展信任的边界、组织的边界和协作的边界,但在不断扩展业务边界的道路上,技术自身却受到了扩展性问题的制约。
最明显的就是以太坊主网,上图是截止到Q2的智能合约TVL锁仓量,可以看到以太坊的份额正在持续被其他公链所蚕食;原因大家都知道,网络严重拥堵,手续费高昂;但根本的原因还是以太坊主网的扩展性不够。讲到这里相信大家都会想到区块链不可能三角,那去中心化、安全性和可扩展性三者真的不可兼得吗?其实区块链不可能三角问题是没有被严格定义和证明的,并不能等同于分布式领域的CAP,区块链领域内学术界和工业界有多层次多类型的扩展性解决方案,比如分片以及最近很火的Layer2Rollup方案。
分片作为平台级扩展方案虽然潜力很大,但其安全假设和模型在实际落地中并不容易满足、要支持通用的高级智能合约完整语义困难重重、很多场景下跨片交易带来的开销大于对吞吐提升带来的收益;Rollup方案通过平台合约和二层应用相结合的方式,在安全性和吞吐方面有一定的优势,但当前还只是对特定应用的扩展,还不能扩展到通用平台层面。DeFi业务的兴起又给公链的扩展性提出了新的要求,DeFi应用非常注重可组合性,合约之间的调用需要像搭建乐高积木一样便捷,而分片和Layer2技术的共同问题是引入的分布式事务的复杂性,对DeFi应用不够友好。所以当重新回到问题的原点,立足于公链自身的架构优化时,我们会发现,只要保证区块链特有的约束和语义不被破坏的提前下,软件和互联网领域成熟优秀的工程优化经验是可以充分借鉴和利用的。这里我将其总结为公链架构优化的新四化建设:1)在保证链式结构的提前下,对架构进行模块化,对组件进行充分拆分和解耦;2)在保证线性语义的提前下,对执行进行并行化,实现多阶段流水线作业;3)在保证状态一致性的前提下,进行异步化改造,将阻塞式的I/O操作放在后台处理;4)在保证透明安全的前提下,进行本地化多级缓存优化。其实行业内已经出现了和我们想法类似的公链,比如Flow和Solana。下面我们分别介绍一下二者的核心设计。Flow是一条主打NFT的垂直行业公链,其核心理念是对交易处理过程中的共识和执行进行解耦。主要有两个创新点:1)分角色节点架构,因设计人员发现节点间的处理能力差异拉低了整个网络的性能和扩展性,因此Flow将网络中的节点分为收集、共识、执行和验证4类,让大量的低配节点只负责共识,保证网络的安全性,而少量的高配节点只负责执行,从而提升网络整体的处理能力。
2)引入流水线机制,进行跨区块BlockSeal,从而避免区块间的相互等待。
Solana是一条发展迅猛的全行业公链,最大的创新是PoH,一种可验证的对时间采样和事件排序的方法,可以作为网络全局时钟,从而实现全网节点对相对时间的统一度量和消息的高效通信;而TowerBFT共识则是在PoH全局时钟的基础上,实现了对PBFT消息传输和VC优化。其他的优化点像大区块分片EC编码和分层传输、流水线化充分利用硬件资源、并行合约执行等,都是在高TPS下必须要做的工程实现,当然想到不代表做到,Solana在公链架构优化工程实践层面走的是比较靠前的。
Flow和Solana都是在公链架构优化层面不错的案例,这也让持有相同理念的HECO在行进的道路上不觉孤单,当然HECO相比于Flow和Solana还有一个更大的特点就是完全兼容以太坊和EVM。下面就一起来了解一下HECO在扩展性方面的实践和成果。HECO公链扩展性理念和实践
首先来看一下HECO的战略定位,HECO作为整个DeFi平台的技术底座和生态基础设施,承载着上层资产、应用和流量入口的所有核心业务,而HECO自身的技术矩阵又可以按资产安全、容量性能、网络规模、应用生态4大维度细分为12个核心模块,接下来给大家分享的主要是我们在容量性能相关的交易执行、状态存储等方面的优化工作。
容量性能优化首先要明确其理论模型,HECO当前还是基于最长链的POA+POS共识,在出块时间方面一定要保证可以cover住区块打包+区块传播+交易二次执行和验证的时间。那反过来想就是如果可以进一步降低交易执行和区块传播时间,就可以在一个区块内纳入更多的交易,从而有效提升网络整体的吞吐。左图是我们整理的扩展性瓶颈以及优化的层次,右图是当前整体优化后的效果,可以看蓝色的线,HECO已经可以安全地将BlockGasLimit设置到100MGwei以上,TPS可以到1500+。下面来展开几个代表性优化。
首先来看并行执行优化,大家都知道以太坊节点的一大瓶颈就是其MPT状态树,HECO针对状态树更新做了很多并行优化,比如多账户之间可以无关联地并行RLP编码,更新StorageTrie,并行计算StorageRoot等,还有并行计算区块bloom和receiptRoot等。并行执行整体优化效果是可以将区块内交易执行时间降低30%以上。
再来看存储流水线优化,当区块执行完成之后,需要进行写块、更新snapshot和状态提交3步存储更新,分析发现状态提交是耗时最长的,而且可以和下一个区块执行进行流水线优化,即上一个区块完成更新snapshot就可以开始下一个区块的执行,但同时也要保证上一个区块状态提交完成之后才开始下一个区块的状态提交,从而保证状态提交的顺序性和一致性。通过存储流水线优化,HECO基本上将存储更新在整个成块时间中串行的占比降低了90%以上,效果还是非常明显的。
同时HECO对合约Bitmap、短数据Hash计算结果等缓存优化也取得了不错的成果,将区块内交易执行时间降低了31.46%。
HECO技术团队将我们性能优化的代码分别patch到BSC和Geth的主干上,并放在BSC和以太坊主网去同步区块和执行交易进行实测对比,结果是HECO优化的性能是BSC的1.3倍以上,对Geth的性能提升更是达到了1.5倍以上。当然HECO也会有计划地将我们的优化贡献给Geth社区。
回顾HECO扩展性路线,我们始终秉承着DeFi友好和完全兼容以太坊两大原则。相信区块链技术同行一路走来或多或少都会有这样的疑问,比如区块链平台的发展还要走互联网工程化的老路吗?密码朋克的宝盒里还有多少魔法没有放出来?HECO认为路线和主义之争不会影响区块链的高速发展,组合创新才是区块链技术最大的魅力。而且我们认为软件行业曾经的安迪比尔定律在区块链行业同样适用,我们称其为“CAB定律”——CryptoAndyandBill’slaw:未来10-20年,大部分基础网络、基础硬件、基础安全的技术红利都会被区块链行业充分吸收并极致发挥。所以HECO会持续在Layer1扩展性之路上砥砺前行。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。