可能很多考拉的朋友都会有一个共同的感受,随着这轮加密市场牛市的来临,各个项目对于区块链技术的开发水平也在提升。老一代的公链项目除了ETH因为DeFi的应用而不断扩展外,其他如EOS、ONT、QTUM等公链项目渐渐远离市场的核心讨论圈,取而代之的是Polkadot、Near、Solana等新一代公链项目。
但无论新老哪一代项目,似乎都没有真正解决区块链在大规模应用中的最大难题–“堵”。从近一年时间,DeFi生态发展的表现看,但凡市场进入火爆时期,以太坊上的Gas费都会飞涨,交易速度变缓已经成为一种惯例。公链扩容,已经成为去中心化金融进一步发展,区块链技术落地商业应用上的最大瓶颈。
行业内很早就认识到了各公链在性能上的缺陷,因此不同团队从各种角度的解决方案也是层出不穷,这其中Layer2与分片是最主流的两条技术路线。
尽管Layer2方案也走出了一条由状态通道、侧链、Plasma、ZK-rollup、Optimistic Rollup的发展路径,技术发展难度不断上升,但目前的技术水平始终不能在保证去中性化的前提下,解决ETH吞吐量、扩展性以及安全性的问题。而ETH2.0采用的分片方式,从技术的角度而言,因为无法做到各个分片的无缝整合,这种以损失系统可用性为代价得到的提升TPS的效果也是大打折扣。
相比于商业应用,DeFi受限于用户数量及结算速度只能算是非常轻量级的应用。但这就像一面镜子,反映了现有公链在大规模推广面前遇到的最大障碍:
1.单纯的Layer2或是分片在不结合并发执行的情况下扩容效率很低;
2. 即使采用Layer 2,分片、跨链,得到的只是一堆各自为战的子链,无法做到相互间无缝协作;
3. 用快速的形式化验证来保证合约的安全还是座不可逾越的大山。
不过随着近期RChain项目取得的一些技术进展,当前公链所面临的这些问题有希望得到彻底解决。
行业之光出圈,唯一受邀出席 IFF 会议的公链项目
用RChain创始人Lucius Gregory Meredith (以下简称Greg)的话来讲,RChain是要成为一个去中心化的世界计算机。本质而言,这又是一个以击败以太坊为目标的项目。但事实上,以太坊兴起后,Greg觉得基于图灵机(EVM)体系的以太坊由于先天缺陷无法成为世界电脑,所以去游说V神采用Rho演算。V神由于大车难调等历史性包袱原因并未采纳,所以才有了现在的RChain。
RChain通过革命性的Rho演算解决了困扰公链发展的诸多难题,使得让通用计算上链第一次成为可能。基于Rho演算的快速冲突检测配合Casper CBC共识,所有节点可以并发出块达成共识,首次做到了单分片可扩展性,使得大数据可以直接上链而不需要借助IPFS。
同时,基于Rho演算的分片间同步共识,保证了跨分片合约调用的原子性,让分片间的交互和协作第一次可以无缝进行。而其行为类型系统可以完成并发和分片下的快速形式化验证,完成大量链上合约的安全有序编排。RChain的独特技术路线使它成为构建世界电脑的不二之选。
在应用方面,RChain项目在很早就有其明确的发展方向,即成为一个可以协调解决全球气候变化问题的去中心化世界计算机,这也是RChain的核心愿景。在社区开发人才济济,不乏奇思妙想的情况下,同时提供ETH合约代码一键转换工具,方便ETH的生态迁移。
Greg在一次AMA的活动中就曾说,“气候变化对所有人而言是一个生存威胁。我们全球团队的坚持不懈,致力于把这个技术变成现实,以做出一个对人类生死存亡具有重大意义的协作技术。”正是本着这样大爱无疆的精神,RChain非常早便加入了联合国气候链联盟,推动用区块链技术减缓和适应气候变化的问题。
基于RChain在区块链技术对气候监测全球合作领域长期的探索和努力,以及对区块链技术发展所做出的创新性尝试,在今年5月29-30日,国际金融论坛(IFF) 2021年春季会议上,RChain作为唯一受邀的公链项目参会。今年的IFF春季会议首次专设了数字货币板块,在会议上,RChain创始人Greg分享了有关RChain最新的进展及技术发展方向,并参与研究和探索推动企业尤其是制造业如何进行数字化转型发展的讨论。同时与参会专家一起研讨央行法定货币与数字货币的关系,数字货币的功能、定位、应用前景等问题。
值得一提的是,国际金融论坛(IFF)是我国举办的最高规格国际性金融峰会之一,被誉为全球金融领域的“F20(Finance 20)”。2003年10月由中国、美国、欧盟、联合国等20多个国家、地区及相关国际组织的领袖共同发起成立,现任大会主席为中国人民银行前行长周小川。此次RChain作为唯一受邀参会的公链项目,出圈参加如此高规格的峰会进行前沿创新技术分享,实属业内首次。由此也可以看出,区块链行业作为一个新兴行业虽有投机乱象,但真正追求技术创新解决行业和社会痛点的项目,会在时间的沉淀下得到主流社会更多的认可。
RChain 的技术优越性
并发执行与块合并
如果将以太坊概括成为一台虚拟机,那么RChain就是一台升级了执行结构的虚拟机。可以想象一条首尾都是单车道的高速公路,无论中间是几车道并行,这条公路的整体通行效率都是很低的。这也正是目前大部分公链所存在的问题。
目前大多数公链项目的主链都是单链结构,这就好像高速公路上的单车道,虽然Layer2可以解决中间部分的交易执行效率,但各个Layer2在把交易打包上链时仍然要回到“单行车道”。而现在的绝大多数分片方案,都是不支持跨分片的同步确认,相当于虽有很多车道但车辆不可以换道,这样吞吐量上去了,然而可用性却大大下降了。所以我们需要在数据传输上实现并发的逻辑,即很多节点都可以同时出块让其他节点投票确认,这样同时出的区块之间就会存在兄弟关系,使得区块之间最终形成DAG结构。
DAG:Directed Acyclic Graph,中文意为“有向无环图”,是一种计算机数据存储结构,它像条毛线织的围巾,可以一直编下去。好处:高确认时间,高吞吐量,高去中心等。有向无环图是一种存储数据的方式。“有向”指所有数据顺着同一方向存储;“无环”指数据结构间不构成循环。
用一个生活中的例子做比方,DAG相当于一个由单行线连接成的交通网络,那些单行线虽然彼此连接形成很多岔路口,但大方向都一致,所以你在上面行车,不会走回头路。这里“单行线”就是“有向”,“不走回头路”就是“无环”。
从区块链的角度看,DAG结构就是无数条链根据一定规则(交易没有冲突)交织在一起,链与链之间大方向相同,同时生长,且不存在环路。
实现DAG结构就打开了公链并发出块的可能,成为扩容的基础。然而光这还不够,为了实现真正的扩展,还需要一种机制可以虚拟机并发的去处理这个DAG。RChain正好有这个机制,那就是它独有的块合并技术。这是RChain区别与其他基于DAG的项目比如Conflux,Fantom的重要一点。
块合并是RChain技术中很独特的设计。在主流的公链技术中强调的交易处理的顺序性,因为没有并发虚拟机,只能让收到的所有的交易通过某种方式排成一个序列然后顺序处理。而块合并则让系统具备了并发执行功能。只要是不冲突的区块都可以在链上合并成一个新的状态,新的区块也可以在其上产生,而这些不冲突的区块可以并发执行。
例如,某个节点,它可以看到1,2,3这些区块,然后它自己准备出区块4。只要区块1,2,3之间没有冲突,他可以把区块1,2,3看作一个整体,然后把区块4作为他们的子区块接入到整个DAG中。这个过程就是“块合并”。需要指出的是,这个区块1,2,3是否冲突的判断非常快速,不需要通过运行其中的交易,而是通过简单分析里面的Rho演算的特征获得。
块合并可以使区块链中的每个节点都能以并发的方式连续的出块、确认、执行交易、更新状态,动态的让全网共识到同一个DAG,这就真正意义上对消除了传统区块链的顺序瓶颈,让单分片内的无限扩展第一次成为可能。
分片 VS 并发
在明确了DAG结构的基础上,我们还需要区分一下分片与并发的概念。
分片是一个从数据库传承下来的概念,即把一个大的数据库切分成很多小的、可处理的小块,从而提高系统性能。
在采用分片技术的区块链中,整个网络的总账本也被类似的切分成很多子帐本。网络中的节点类似的被切分成很多小组,每个小组相当于一个独立的区块链,负责维护相应的子账本。所以每个节点只负责处理对应的子帐本上的交易。最后各个分片通过链之间的通讯方式,形成一个总账本,通过这样的方式完成对主链吞吐量的扩展。
在RChain的思路中,分片的概念更接近于进程。如果将区块链比作一台全球电脑,那么一个分片类似一个在这台电脑上运行的应用程序(进程),而并发的概念更像是多线程。
线程类似一个轻量级的子进程,它是进程下面一级的处理单元,每个进程可以创建很多个线程同时运行。多线程可以利用起现代CPU多核心的优势,同时可以利用某个线程等待长时间IO的空闲时间切换到其他线程运行,提高整体的执行速度。在RChain的设计理念里,区块链对某个交易达成共识类似于一个延时非常久的IO操作,用多线程并发的执行方式同时处理大批的交易,是提高系统吞吐量最理想的方式。
RChain认为,想要提高公链的TPS,分片并不是最佳方案,因为分片和进程一样,主要目的是为了扩展系统的“内存空间”,增加上面运行的应用程序的数量,隔离每个应用程序的资源。而真正要提高每个应用程序的速度,必须提高单分片内的处理能力,这就需要并发的工作方式。一言一概之,区块链上的分片对应了计算机中多进程的任务组织方式,而链上的并发对应了计算机中多线程的单任务加速方式。
跨分片共识
在用并发的方式帮助单分片扩容之后,下一个问题就是分片之间的互操作性。
目前,跨分片交易的共识有两种方案:同步共识和异步共识。RChain属于前者,而ETH2.0、DOT等属于后者。
两者的差异在于验证的顺序性。同步共识,就是跨分片的交易需要两个分片的验证者同时批准,一次通过,保证了跨链交易的原子性。而异步共识是把跨分片交易分成两阶段提交,每个分片只处理自己的那部分。这样并不能保证交易的原子性,可能会产生问题。
所谓交易的原子性就是跨链的交易不被割裂成多个,让每个分片去单独确认,而是作为一个整体让涉及到的分片去同时确认,要不都通过要不都通不过。例如两人用分片A中的Token A换取分片B中的Token B。那么在同步共识的协议下,该交易要A和B分片一起验证批准,同时返回,这样交易的原子性可以保证,不存在任何问题。如果用异步共识的方案,就需要先在分片A中把Token A转账,但这个转的余额是暂时不可用的,系统暂时锁定并产生一个收条。然后分片B接收这个收条,再把Token B完成转账。最后分片A把Token A的那次转账的锁定取消,让余额变得可用。如果一定时间内,Token B没完成转账的话,分片A就把Token A的交易取消并且回滚。可以看出,割裂了原子性的异步共识,不但会让跨链交易变得非常复杂,还需要合约提供锁定和回滚机制,这极大的增加了一般情况下编写跨链合约的复杂性。
不过,同步共识实现的基础还是需要块合并的实现,正是因为有了块合并,不同分片的小DAG之间可以如乐高积木般拼接成一个总的DAG,相当于很多车道的高速公路上,车流有了换道的能力。相反,没有快合并能力的区块链去做同步跨链共识,就好像多车道高速公路,一旦有车需要换道,就必须把多车道压缩成单车道,效率会大大降低,可扩展性也就消失了。
快速低成本的形式化验证
因为公链上的合约涉及到非常高的经济价值,所以对合约的代码质量提出了非常高的要求,需要实现“零容错”。而形式验证是最根本的保证质量的方案。形式化验证的是用数学方法去证明代码在任何条件下都不存在 Bug,根据设计的方案运行。
传统区块链项目的形式化验证,需要首先把合约的代码翻译成前条件、后条件等数学语言,然后用机器定理证明的办法去检查这段代码是否满足指定的特性。并发下的形式化验证,一般用TLA+之类的工具,先抽象出状态和状态转移这些数学语言,然后穷举,看能不能证明不管执行路径怎么变都能得出指定的结果。这两种都不能扩展而且代价高昂,极大的限制了区块链的普及。
RChain的合约语言Rholang基于Rho演算,本身就是一种可进行逻辑推导的数学语言,节省大量人工转换为数学模型的步骤。另外,在OSLF算法基础上建立的行为类型系统,可以通过类型检查的方式自动快速的完成形式化证明。即只要一段Rholang代码通过了某个类型检查,那么就满足了这个类型检查所对应的特性,例如:不会产生冲突和死锁,不会把授予的权限透露给第三方,等等。这种基于行为类型系统的形式验证可以规模化地完成大量链上合约的安全有序的编排。
总结
行文至此,我相信本文中所提到的很多技术词汇已经非常让人头痛了,但行业的发展正是有赖于这种专业且扎实的技术推进。正如Greg对于RChain的期待,RChain从一开始就被设计作为一台无需信任的、完全去中性化的世界电脑、世界数据库,而不仅仅是一个支付网络。它被设计出来可以让草根的、自组织的社区在这个星球上蓬勃发展。这样宏大的愿景一定需要具有创新性的技术来支撑。
最后,让我们再用最简单的话来总结RChain的技术特点:以基于Rho演算的并发虚拟机为基础,实现块合并技术,让链上并发成为现实,解决单分片内的扩容问题;并在同步共识的基础上实现跨分片间的无缝互操作;用行为类型系统规模化的对合约进行安全有序的编排。这些解决了困扰当前公链发展的三大问题:单分片内并发,无缝分片,和快速形式化验证。至少在目前,RChain可以成为未来区块链大规模应用的必选技术之一。
原创文章,作者:CoinKaola,如若转载,请注明出处:https://www.coinkaola.co/news/235501/