龙空技术网

从“Diem”系看下一代公链范式

MarsBit 423

前言:

今天姐妹们对“并行计算是并行计算机最主要的工作特点”都比较关切,各位老铁们都想要剖析一些“并行计算是并行计算机最主要的工作特点”的相关内容。那么小编同时在网络上网罗了一些关于“并行计算是并行计算机最主要的工作特点””的相关内容,希望看官们能喜欢,同学们一起来学习一下吧!

免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表MarsBit官方立场。

小编:记得关注哦

来源:stefaniewei4等

原文标题:从“Diem”系看下一代公链范式

摘要

公链基础设施一直是加密行业的叙事中心。尤其在技术方面,公链一直在共识机制、可编程性、可扩展性上有所突破。即使如此,公链如今仍然存在发展瓶颈,比如性能还无法与Web2基础设施匹敌,生态应用需求不足等。今年的新公链对以上问题都提出了自己的解决方案。2022年上半年,以Cosmos网络为主体,带领了一批“模块化”和“跨链”为话题点的新公链。下半年,热议的新公链就是“Diem”系衍生出的三条公链:Aptos, Sui, Linera。本篇文章以这三条公链为出发点,探讨了“Diem”系新公链在技术和生态层面的创新及优势,主要从5个方面分析:

●新Move语言的三大特性及优势;

● 并行化的解决方案;

● 共识机制的创新及难度;

● 代币经济模型的探索式发展;

● 专用型公链的可能发展趋势。

通过分析我们可以得出结论,(1)智能合约编程语言对安全性、并行化和开发者具有极其重要的作用;(2)并行化是未来公链的确定性的正确之路;(3)共识机制大部分基于BFT进行改造,但进步空间可能已到天花板级别;(4)代币经济模型一直是公链发展的助推剂,如何平衡网络、用户、验证者、开发者的关系是新公链需要重视的问题;(5)专用型公链需要基于应用场景开发技术和提高用户体验。从以上结论可以窥见下一代公链范式,尤其是并行化和虚拟机上,而对于“Diem”系尚未解决的问题,我们可以持续关注它们在技术、代币经济、生态上的新进展。

1. 公链技术发展概述

公链作为加密行业核心的基础设施,其一举一动对整个行业具有极大的影响力。公链的技术发展都是前3轮牛市的主要叙事,也是在资本和需求推动下的必然结果。公链的突破性技术主要表现在三个方面:1. 共识机制;2. 可编程性;3. 可扩展性。

共识机制方面,我们见证了以比特币网络为首的PoW链的辉煌时期,到以太坊merge之后PoS链的新时代。对于比特币和以太坊来说,PoW机制能够保证一定的去中心化,但也带来了资源浪费和低处理效率等问题。2012年诞生的PoS机制,其通过权益记账的方式解决了PoW能源过度消耗的问题。PoS机制也是大部分新公链所采用的共识机制。除了PoS之外,为了提高出块效率和维护网络的安全性,也诞生了其它创新的共识机制,比如Solana的PoH以及Avalanche的雪崩共识。

可编程性是指以智能合约打造区块链的应用层。由于比特币网络的脚本语言是非图灵完备的,导致其无法构建复杂应用。以太坊使用虚拟机和Solidity编程语言实现了智能合约。这也是上一个牛市的根本原因之一。但由于Solidity不支持并发,安全性低等缺陷,也有很多区块链开始使用Rust或者构建新的编程语言,例如Move,提供更为安全、友好、扩展性强的开发语言。

在可扩展性方面,区块链一直受到不可能三角问题的掣肘。解决这个问题的关键在于模块化。模块化是将系统分解为多个单独子模块的工具,这些子模块可以随意剥离和重新组装。这里的模块化包含了两个概念:公链的模块化框架和工具,以及模块化公链。区块链的三层框架模型有结算层、执行层和数据可用性层。基于模块化框架,已经有团队完成了这些模块化工具和组件的研发并广泛用于现有的公链建设开发中,包括Cosmos和Polkadot生态。而模块化分离的实现路径主要有三种形式:(1)共享安全;(2)Layer2执行层;(3)数据可用性层的分离。这些也是目前公链在扩容技术的主流方向。

2. 公链发展瓶颈

虽然公链技术一直在不断发展,但当下公链的主要问题还是性能不足,与web2的基础设施还有一定的差距。公链性能不足会带来两个严重问题:1. 限制了生态应用发展上限;2. 带来很差的用户体验,这主要体现在部分公链短时期的拥堵和手续费高昂。性能不足在执行层的体现是EVM只能串行,无法实现多笔交易的并发执行,直接限制了链上数据吞吐量,解决方法就是并行计算。并行计算在web2中已经是非常成熟的技术,而在区块链领域才刚刚起步。除了并行计算之外,以太坊把部分执行层的功能交给了Layer2。

性能在共识层的体现是共识达成的效率、经济性及安全性,这主要是算法决定的。目前,大部分公链选择PoS共识,所以效率主要指节点之间的通讯次数和达成最终确定性的时间。在分布式系统中达成共识是一个经典课题,远远早于区块链的诞生,所以其发展已经有很多成果,比如PBFT、HotStuff、DUMBO、Algorand,这些在理论上都能实现比较高的TPS。创新的共识机制和最终确定性算法对建设公链来说是非常具有挑战性的工作,超越前人已是很难,而在其上进行的改进是否能够实现指数级别的性能提升犹未可知。

数据层包含数据存储、账户和交易的实现及安全的功能。比特币网络的每个节点都为全节点,存储了所有的区块数据,是目前最安全和最去中心化的区块链网络。这种带来的妥协就是每秒只能处理7笔交易,区块大小为1M。而以太坊具有合约层和应用层,其区块需要的空间更大。这是以太坊目前所面临的棘手问题。虽然Layer2的Rollup方案能够实现对数据的压缩,但随着应用规模的增大,需要上传的数据量也加大。目前讨论较多的解决方案有两种:1.把数据层的部分功能剥离到其它公链,例如数据可用性放在celestia解决;2. 实现链上扩容,即分片,分片技术的实现难度很大。

除此之外,受区块链不可能三角的约束,在发展性能的同时,安全性会受到威胁。公链的安全性问题主要有两个方面:1. 节点;2. 智能合约。节点数量不足、去中心化程度不够,网络就很容易受到攻击。而智能合约方面的安全性,更涉及到区块链的底层,需要考虑编程语言和虚拟机等方面。

生态应用方面,大部分公链并没有形成自己独有的应用或者垄断。用户也是基于奖励多少在不同链上来回切换,实际靠应用本身留存的用户只有以太坊。这种现象在牛熊转换中格外明显,熊市阶段资金更偏向于待在以太坊网络上。剩余其它公链的优势在于有完整的生态应用和较低的链上手续费。

3. Diem新公链模式

新公链为了提高性能采用的创新技术几乎都是从共识机制、可编程性和可扩展性三个方面出发。最受关注的新公链项目无疑是从折戟项目Diem中孕育出的新项目:Aptos、Sui以及Linera。它们在编程语言、共识算法、模块化架构以及交易并行化思路均做出相应创新,试图在性能和安全方面更上一层楼。研究这三条新公链,我们也能从中窥见未来新一代公链范式。

3.1智能合约的安全革命

区块链世界中,编程语言作为定义计算机程序的形式语言,是实现系统一切功能和目标的基础载体。继Solidity、Rust语言后,从Diem中孕育的新一代编程语言Move因超新公链项目Aptos、Sui的强势亮相又重回聚光灯下,一度被誉为最适合区块链的语言。Move的再度出场似乎正暗示着,新语言的叙事正在成为公链竞争的新战场。下图简要地对比了三种编程语言的特点。我们也详细阐述了Move语言在安全、并行化、开发友好性的创新之处。

(1)安全性

Move在资产安全性上的表现优于以往的编程语言,很大程度上是因为它站在前人的肩膀上作出了针对性的改进。在火币研究院过去的报告《Move:innovations and opportunities》中,我们曾对这些安全特性有过专门的探讨,这里我们只对关键要点进行概括。

Move从语言设计、虚拟机、合约调用方式和合约具体执行几个层面为智能合约提供了全方位的安全保障,Move专门为数字资产定义了新的resource类型来和其它数据区分开,并结合了Module的强数据抽象特性保证资产不会凭空产生、任意复制或隐式丢弃,极大提高了安全性;同时,Move语言被设计为只支持静态调用,所有的合约执行路径都能在编译的时候确定,并进行充分分析和验证,从而提前揭露一些安全漏洞,降低系统运行时出现宕机的概率;最后,它还引入形式化验证工具,极大降低人工审计代码安全的成本。

(2)并行处理

众所周知,solidity语言是不支持并发处理的,Move则力求从底层对该特性做出改变。由于它为数字资产做出了专门定义,从数据类型上将它与普通数值区分开来,通过对各种resource定义不同的属性又能够有效地帮助识别“独立”的交易,再结合多线程执行引擎,使得交易数据能够被同时运行和处理,极大的提升了系统运行效率。

(3)开发友好性

从目前的市场反馈上看,Move 对开发者非常友好,其宗旨就是降低开发者的安全门槛,使合约开发者可以专注于业务逻辑;与此同时,Move由Rust和Solidity演进而来,舍弃了两者设计中不必要的“糟粕”,复杂度相对较低,因此整体开发者迁移成本并不算高。据Move实践者透露,对有Rust、Solidity编程经验的开发者而言,上手Move的时间大概只需花费1–2天;对无智能合约编程基础的开发者而言,从零学习Move也大致只需要1–2周。

Aptos和Sui都继承了Move的核心特性。但基于各自的特点有一些改进,但均保留了Move 的安全性和灵活性,但优化了存储和地址机制,从而提高了网络性能并减少了交易确认时间。具体如下:

3.1.1 锦上添花:引入适配器层,全面奠基并行化

我们以数据所有权为例进行说明,Aptos的数据是存储在所有者账户中的,即所有者拥有完全控制权,账户是基本存储空间。这无疑是Move原生ownership系统的直接应用,很好地体现了用户交易的本质就是资产所有权的转移。

除此之外,Aptos也根据自身项目特点做出了一些特殊设计。它引入了适配器层(adapter layer)的概念来扩展了核心 MoveVM 的附加功能,其中包括通过 Block-STM 实现的并行性,无需用户输入即可并发执行事务,用于在帐户中大规模存储、存储密钥的表,以及解耦的细粒度存储(fine grained storage)在帐户中的数据量会影响与帐户相关的交易的Gas Fee。

3.1.2 别具一格:移除全局存储,降低交易延迟

Move公链双子星的另一位即是Sui。相比于Aptos对Move的继承性,Sui对Move的核心功能进行了一些修改,尤其是在全局存储运算符和索引属性(key ablility)方面。具体不同点体现在以下几点:

(1)移除全局存储操作符

在原生Move语言中,用户可以通过move_to,move_from等全局存储操作符来直接访问和调用module和resource。当新对象被创建时,数据通常会直接存储到相应的链上地址中。但是,考虑到链上的存储空间资源十分有限,Sui移除了全局存储操作符,将新创建的资产或模块存储到特定的Sui storage中。因此,当用户需要访问系统中的某个对象时,不能依靠Move原本的全局存储操作来直接获取,必须先通过Sui将对象传递出来,再进行访问。

(2)为对象设置ID

Move中的对象可以被添加索引(key)属性,以键值形式存储在数据结构中。不过,由于Sui移除了全局存储功能,它为带有key属性的对象做出了细微调整。当对象可以被索引时,它必须拥有关键字段 — — ID。ID包括两个方面,object ID和 sequence number,通过创建ID给当前交易的内容和记录交易创建了多少对象的计数器应用抗冲突哈希函数创建从而保证资产的唯一性。

(3)构建不同对象类型

Sui有三种对象类型为并行化和共识机制提供了准备:

●可以读取、写入、传输、销毁;(共享对象)这种对象涉及智能合约

●只能读取/写入(单所有者对象),类似于单纯的转账。

●只能读取(不可变对象)

3.2 并行化的必然之路

目前主流的区块链大多采用EVM作为执行引擎。在处理交易时,EVM 一次执行一个交易,将所有其他交易处于暂停状态,直到这个交易执行完成,并更新区块链状态,再按顺序执行下一个交易。这种按顺序执行是网络吞吐量的主要瓶颈之一。

如何破解这个难题呢?除了使用更先进的硬件来加快执行速度以外,主要的方法就是并行计算。现代计算机的发展过程中也曾出现过类似的现象。在20年前,计算机的CPU大多只有1个核心,而现在4核、8核甚至更多核心的CPU随处可见。通过更多核心进行并行计算,计算机的处理能力才获得了持续的提升。

并行化计算(parallel computing)是指,在并行机上,将一个应用分解成多个子任务,分配给不同的处理器,各个处理器之间相互协同,并行地执行子任务,从而达到加快求解速度,或者解决更大规模的问题的目的。在区块链中,并行执行交易是要打破交易顺序执行的范式,通过简化交易的操作、排序、依赖性等联系来同时执行不相关的交易从而提升系统的吞吐量。并行机就是区块链的验证者/节点。

并行计算除了可以提升性能以外,还可以降低节点的成本,从而提升系统的去中心化程度。因为如果要达到同样的性能,却不采取并行化计算的话,就需要用到性能更强的单核CPU,这条路线的成本更高,而且不符合计算机科学发展的规律。Aptos和Sui都借鉴了并行化计算的思想。

3.2.1 并行化第一枪:交易分类,多线程同步执行

Aptos的设计思路是把不相关的交易区分开并依靠先进的执行引擎和硬件同时执行。这种思路更接近目前的区块链的运行方式,具体做法主要有以下3条:

● 最简单的情况:同时在不同的线程中执行在数据和账户上没有重叠冲突的交易。比如同时执行Alice向Bob转账100个XYZ token,Charles向Edward转账50个 UVW token这两个交易。

●稍复杂的情况:如果有同时对同一个数据或账户的操作,先并行执行交易,然后以正确的顺序结算可能冲突的能让状态产生变化的行为delta writes,以确保确定性的结果。比如Alice连续向Bob和Charles转账同一种token,先并行执行2笔转账,再检查Alice账户的总体变化情况是否合理。如果余额不足,则重新执行在前面的一条交易。

●高阶的操作:交易可以跨一个或多个区块重新排序,以优化执行的并发性。比如某个地址连续获得收款或者是转账,这些转账可以被分配在多个区块中。这样可能会造成某些用户的交易延迟确认,但是从整体上来看,它让其他交易更大限度地实现了并发,提升了网络整体的性能。

Aptos采用了Block-STM(Software Transactional Memory)并行执行引擎来执行交易。它在同一个CPU上的不同核心上同时执行不相关的交易,通过对交易实现多指令流和多数据流,最大程度上提高并行度。

Aptos白皮书展示了Block-STM并发控制的性能测试,可以看到在10k个账户竞争的情况下,32线程情况下可以达到16万的TPS,并行执行的优势在大量账户的竞争交易空间时得到体现。

此外,我们对比一下Aptos,以太坊,Solana在并行执行上的异同。主要观点引用自The Anti-Ape的文章《Ethereum -> Solana -> Aptos: the high-performance competition is on》。本文会用更通俗的语言表达。

以太坊虚拟机(EVM)是单线程的,没有并行化处理,它只能利用一个CPU核心来按顺序处理交易。注意不要把EVM的CPU核心与以太坊显卡(GPU)矿机混淆了,EVM的CPU处理的是用户的交易,如转账、智能合约调用;矿机的GPU处理的是ETHASH这个加密运算,争夺POW挖矿的记账权。

Solana为了追求更快的性能,用4096个GPU核心来处理交易。在交易的相关性很弱时,这个设计可以让Solana获得非常高的吞吐量。不过它有一个隐患,对于在逻辑上本来就有顺序的交易,它会丧失并行执行的能力。比如铸造NFT的交易就无法在4096个核心上同时进行。因为NFT有总数量限制,每个NFT还有自己的编号,同时铸造会导致重复,所以必须按顺序处理。这让Solana的4000多个GPU形同虚设,无法发挥并行执行的优势;而GPU的性能又弱于CPU,这让网络性能严重下降,甚至会导致Solana网络中断。

Aptos融合了二者的思路,用8核16线程CPU实现并行计算,既通过多线程提升了交易的并发性,又能用性能更高的CPU应对顺序执行的交易。

那以太坊能不能通过提升CPU的配置,比如也用16线程的CPU来实现并行化处理呢?很可惜,不行。因为EVM的设计中CPU就只有1个线程,只有对EVM做出改进,才能发挥出CPU更多线程的计算能力。以太坊的梦想是分片+layer2,同样能够达到高性能。Aptos也有在未来引入分片的想法,如果能够顺利实现,实现支付宝在双11高峰时期每秒50万笔的的超高吞吐量也不是不可能。

3.2.2 火力全开:交易进一步细分,依托DAG提升并发性

Sui在并行计算的思路上与Aptos类似,但Sui有更多的细节改进支持数据的并行化处理。首先,它放弃了区块链传统的链式结构,采用了DAG(有向无环图)的数据结构。而DAG先天就具有的高并发性特点。其次,Sui在Move语言的资源属性上,再把资源细分为不同的对象,以对象为中心进行并行化处理。这两点配合起来,让Sui实现了高并发和高性能。

在Sui改进的Move语言里,可以把对象理解为像钞票一样的资产。每个对象都有一个属性列表,包括其所有者的地址(或共享所有权属性)、读/写属性、可转移性属性、dapp/游戏内的功能等。大多数简单的转账只需要更改特定对象的所有者属性,比如Alice给Bob转账100个USDT,只需要把这100个USDT的所有者从Alice改成Bob。这些不相关的交易都可以同时处理。它们的顺序在DAG的数据结构上会自然呈现,全局有一个总排序。

DAG数据结构可以允许在同一时间内,网络中出现很多个分支链条,而不只是一条单一的链条。只要每个分支都能对应的对象的来龙去脉说清楚(验证),节点只需要验证交易,无需多轮通讯对某交易进行投票。这样就可以在单位时间内实现更多交易的并发,也能减轻验证者在共识过程的负担。

Sui在测试阶段的性能同样优秀。今年3月,在Macbook Pro(8核M1芯片)上运行的未优化单核运行的Sui Authority节点的TPS达到了12万。若增加CPU的核心数量,TPS还能线性提升。

3.2.3 两种并行化方案的对比

Aptos和Sui的并行化处理的设计有什么区别呢?下面我们举例对比Ethereum、Aptos和Sui在并行化上的异同。假设每个网络是一个城市,这个城市有8个旅游景点。用户提交交易就像是坐飞机来到了这个城市,交易得到了确认就是乘客从飞机场到达了目的地。

Ethereum的做法是用一辆大巴车装载乘客,车子坐满为止。大巴车会围着这8个景点绕一圈,逐次放下所有乘客。

Aptos的做法是设置8辆大巴车,去不同地点的乘客分别乘坐不同的大巴,这样就不用先去别的地方了。而且由于硬件的进步,Aptos大巴的速度比Ethereum大巴更快,就更节省时间。

Sui的做法是设置很多个出租车载客口,乘客上了出租车就直接发车,连等大巴车坐满再发车的时间都省掉了。很多出租车一起跑当然更快,但是也有负面作用。Sui 中的所有交易仍然需要足够多数量的验证者的签名才能写入账本。与 Aptos 相比,Sui的领导验证者需要收集其他验证者对每个交易的签名,这带来了额外的工作量;而 Aptos 的领导验证者只收集提议的区块的签名。Sui的额外的工作负载可能会抵消一部分的吞吐量和延迟优势。

Aptos和Sui的两种思路都是可行的,下面简单比较它们的优缺点。

至于这两种方式更好,在未来更有前途,目前不需要判断。第一是因为它们还都在测试网阶段(如果本文写作过程中Aptos主网上线了,也才上线不久),还需要让网络运行更长时间,取得更多的实际数据再做评价。第二是因为现在链上活动整体非常冷清,它们宣称的处理能力完全足以应付。如果能够不出现经常性的宕机事故,它们都比现在的高性能公链更加优秀。

最后我们还要关注到一点:并行化计算并不是有了多个核心,将交易分门别类处理就能解决所有问题了。Aptos、Sui和未来的其他公链绝不只是一个支付网络,它们也要运行很多dApp和智能合约。现有的智能合约只适合于串行执行,比如AMM、NFT铸造。而未来要发挥出并行计算的威力,就需要智能合约在算法上更符合并行计算的特点。开发者们需要对现有的智能合约进行改造,或者重新编写一批新的。其中包含巨大的工作量,更关键的是思维的转换。我们需要等待一段时间才能看到并行化计算公链的完全崛起,这件事一旦发生,可能极大推动行业的发展,并带来彻底的范式转变。

3.3 共识算法的天花板

在共识算法上的创新实际上是非常困难的。最早的是BFT共识,BFT适用于分布式系统中如何达成共识的问题,尤其是在节点可能故障和作恶情况下。关于BFT最早的讨论是在1982年。BFT的问题在于需要进行多轮通讯,通讯开销与节点个数的平方成正比。比特币网络采用中本聪共识,它有两个特点:(1)通过工作量证明(算力时间+成本)限制网络中的提案数量;(2)最长链原则保证概率上的最终确定性和安全性(经济博弈制约攻击者)。中本聪共识需要极高的成本、矿机性能、节点保持在线才能维持网络运转。

在共识机制上,有三个创新项目值得一说。第一个是Solana的PoH(Proof of History)共识。这种共识建立了一个全网一致的时钟,交易事件可以按自身的时钟进行排序,保证账本的一致性。PoH共识确实给Solana的性能带来了突破,其TPS能达到2000–3000。但由于黑客可以预测并因此攻击下一个区块生产者,因此PoH在安全性上稍显不足。第二个是Avalanche的雪崩共识,测试网能够达到4500TPS的性能。雪崩共识是BFT的一种,但它没有Leader节点,节点之间地位平等,每个节点随机抽样周围的节点形成自己的结果,最后整个系统会在极短的时间内达成共识。第三个是Tendermint共识,它也是属于BFT的改进版,适用于部分同步网络,具有两阶段投票,每轮投票都会有超时时间,Tendermint共识的创新之处在于简化了Leader的切换过程,但牺牲了时间。可以看出,目前流行的共识算法大部分是在BFT的基础上进行演化,比如HotStaff、Polkadot的GRANDPA。

评判一个共识协议的好坏,可以用三个指标:安全性(safety)、活性(liveness)、响应性(responsiveness)。这里对这三个指标进行解释:

●安全性:所有诚实的验证者会确认提案和执行。例如比特币网络利用算法来确保网络不易被攻击。

● 活性:网络中一直会有提案产生。这部分包括Leader节点如何切换、超时时间如何定义等。

● 响应性:区块的确认时间只与网络延迟有关,节点始终会响应共识。比如Tendermint共识,需要等待固定时间出块,即使网络状态好的情况下,所以其响应性并不是很好。

Diem的共识是基于HotStuff共识创建的,这是一个三阶段投票的BFT共识,每轮投票节点之间无需通讯,只需要向主节点提交自己的投票结果即可。DiemBFT共识做了多个细节改进,其中之一是增加了内存池,相当于增加了一个实际的存储层,这与Solana类似。这一改动极大的提高了系统的性能。这也在Aptos和Sui中得到了继承。而Sui是在DiemBFT的基础上创造了Narwhal和Tusk两种机制,让系统能够在异步的网络环境下快速达成共识。下面是这两个共识的分析。

3.3.1 区块结构的根本性改变

Aptos共识机制直接延续了DiemBFT。DiemBFT对共识节点的投票权力进行了重配置机制,每个验证者的投票权并不相等,需要根据权益加权,这与它的质押代币数量成正比。同时,DiemBFT通过共享的内存池协议彼此共享交易信息,然后按回合轮次进行投票,这与HotStuff类似。

Aptos的共识过程和内容与一般的区块链有些区别。它的交易传播与共识阶段是分离的,验证者只需要对交易的元数据(metadata)达成共识。这也就意味着,Aptos的区块里只有交易元数据,没有实际的交易数据。这与传统的区块结构有很大不同,如下图所示。

下面具体看看如何达成共识。

验证者收集交易并自行验证后,将一定数量或一段时间内的交易打包成一个批次,在验证者网络中不断地相互传输这样的批次。验证者分发交易批次后不能篡改,其他验证者接受并存储这个批次,同时在批次的摘要上签名并将签名反馈给它。当有2f+1个(加权计算,f是错误验证者的权重)验证者在批次摘要上签名后,系统生成一个可用性证明(PoAv)。PoAv保证了至少有f+1(假设f个错误验证者在上一步提交了签名,但是他们后来删除了这些交易,那么至少有f+1个诚实验证者还保留了交易)份权重的诚实验证者已经存储了这一批交易,因此所有诚实的验证者都能在执行前检索到它,于是区块中可以不用包含实际的交易。提议区块的节点只需要排序和打包几个批次的元数据,再加上它们的PoAv即可形成一个区块。其他验证者验证了PoAv和区块元数据标准(如提案时间戳、区块到期时间)后,可以投票决定这个区块是否合法。

Aptos把在共识阶段对带宽的需求均匀分配到了更长的时段,可以在非常低的带宽下进行共识(因为共识过程需要传输的数据量小,仅有区块元数据和PoAv),从而实现交易高吞吐量和最小化延迟。DiemBFT V4的共识速度很快,一般的共识只需要两次网络往返,全网往返时间通常小于300 毫秒。自2019 年以来,DiemBFTv4 已经在多次迭代中经过了数十个运营商节点和多钱包生态系统的广泛测试,又经过Aptos共3期测试网的测试,其稳定性应该也有保证。

3.3.2 DAG结构与BFT共识的组合

Sui的共识机制作为其最大的亮点,无论是在创新性和解决性能问题上都有所突破。Aptos和Sui虽都是在HotStuff BFT上做的变体,但Sui改造了DiemBFT中的交易内存池,让交易广播直接在内存池中进行。同时,采用了一个名为Tusk的全局随机硬币,实现了异步共识。共识使得Sui具有更快的交易速度、低延迟、更好的可扩展性。共识的创新使Sui在性能上比Aptos表现更优。

(1)DAG结构的并发优势

Sui没有区块的概念,而是一个个事务,节点对事务的“顶点”进行投票,“顶点”类似于Merkle tree的根,包含之前相关联事务的引用。Sui结合了对象类型分类和DAG的优势,创造了更快的交易确认。节点在DAG中无需达成共识,但为了防止双花,网络也需要节点参与交易的验证和签名,这里需要结合一些简单的共识机制完成。DAG在这里有两个优势:

● 为并行化创造条件:DAG作为一类数据结构,其与区块链结合,可以解决效率问题。因为链式结构使整个网络只能存在一条链,导致出块无法并发执行,引入DAG结构后,网络中可以并行打包多个区块。

● 因果顺序加快共识过程:在Sui中,事务的因果顺序是很重要的一个特点,它类似于区块中的Merkle Root,是DAG结构的主干,也是共识投票的参考证明。

(2)当DAG遇到BFT

Sui采用PoS机制,Sui的共识机制围绕以上三种对象展开,是混合协议,即DAG+BFT。关于这种共识已经有多家公司开始实施,包括Aptos、Celo、Somelier,但具体实现方案不同。Sui针对单所有者对象采用DAG+BFT一致性广播,把交易确认的环节直接下放给交易本身,这无需验证者进行区块排序和打包。普通的DAG需要一个total order 总排序,节点在本地内存池找到对象的依赖路径就可以验证,即找到与该对象相关的之前发生的所有事件,包括签名、时间戳、哈希值进行验证即可。

对共享对象,Sui采用BFT的变体为Narwhal+Tusk,Narwhal构建了内存池,Tusk是一个选取领导节点的随机硬币算法,这类似于Alogrand的可验证随机数,为了使Sui在异步网络下进行,这里不对这个算法做过多描述。Sui利用DAG结构在内存池中进行因果排序,并进行可靠传播,节点把最高级别的“顶点”提交到领导节点,并进行BFT共识。

(3)共识过程

Sui的共识机制中有两类角色:Client和Authorities。Client相当于不参与共识的全节点,它们搜集交易反馈给主节点,根据共识形成交易证书和最终的效果证书。Authorities的作用是参与共识的节点,需要对交易进行验证并进行签名。签名的交易将会返还给client,client搜集签名事务并形成交易证书(DAG过程)。Client相当于全节点客户端,其完成的交易证书会被发送回Authorities,如果交易涉及到共享对象,则需要进行BFT共识。Authorities即为验证者节点,需要对交易达成共识。对于不需要达成共识的单所有者对象交易,Authorities也需对交易签名。共享对象的事务处理会稍显复杂。节点需要对该对象和与其相关的对象进行排序,然后执行事务并汇总签名,形成执行证书。一旦共识节点的签名数达到了法定人数(2/3),即达到最终性,client可以搜集执行证书并创建效果证书。

(4)Narwhal构建的内存池

DiemBFT对Hotstuff进行了很多变动,其中一个就是添加了内存池,Hotstuff没有存储。Narwhal的内存池与DiemBFT有所不同,Diem的内存池仅仅用来做交易池共享以及周期性的发送。而Narwhal把交易的广播放在了内存池进行,相当于将网络通信层与共识逻辑分离。节点仅对提案哈希值进行排序和投票。这带来了两个好处:

l 能够让共识层更快的去完成共识的工作,广播的工作不占用共识的通讯通道,内存池直接完成了区块的广播;

l 实现了线性扩展,节点可以增加硬件提高性能,而Narwhal能够让性能呈线性提升(类似于分片)。每个验证者都可以水平扩展自身并通过增加更多的算力,增加其交易吞吐量。

从Aptos和Sui这两个Diem系新公链看出,目前对共识机制的研究已经可以获得很好的效果,其创新还是在经典的共识基础之上完成,主要有分为两个方向:1. 更换区块结构和内容格式,使其更加轻量化地参与共识过程;2. 利用各种方式推进并行化,尤其是在交易排序和广播上。而在未来,共识机制的演化大概率也是基于HotStuff的,毕竟其机制的成熟性。还有一个就是内存池,作为一个保存等待执行的交易缓冲区,其功能会被进一步完善。

3.4 尽显博弈论的经济模型

代币经济模型在区块链项目中的地位越来越重要,好的代币经济能够给本身有极大技术优势的项目带来加成。代币经济每一个参数的设置和修改都会给项目和社区带来极大的影响力。对一个公链来说,衡量代币经济模型的好坏主要从两个方面看:(1)是否能够捕获更多的经济价值;(2)是否能够平衡网络、用户、开发者和验证者(矿工)四者之间的关系。做好这两方面是很难的,很多成熟的项目要么迟迟不发代币或者一直在改进自己的代币经济。

Diem系的新公链中,也只有Sui给出了自己的代币经济,其实更多的是对经济模型的探讨。Sui的代币经济中,gas fee包含了交易费用和存储费用,其特点有两个方面:(1)沿袭了以太坊经济模型的优势;(2)提出了一种新的存储费用解决方案。

(1)gas fee

与以太坊类似,用户在支付前需要设置gas limit,即最大gas的预算。执行时会直到达到预算,如果预算用尽,将中止。此外,Sui也采取EIP1559的方案,协议会制定基本的费用(以每个$Sui的gas单位计价),该费用会在每个epoch临界时期进行算法调整(在每一个epoch开始时,要求验证者提交他们愿意处理交易的最低价格,协议会将2/3比例的价格设置为每个epoch的参考gas价格。提交低价格以及以低价处理了交易的验证者,会得到更高的奖励,相应也有惩罚),交易发送者还可以包括一个可选的小费(以$Sui计价)

Gas fee=(GasUsed * BaseFee)+Tip

Gas fee包含了算力费用和存储费用,Gas price在Sui网络中应该是比较低的。验证者在提交gas price时,两个关键力量影响他们的报价:计算规则激励验证者遵守在gas调查期间提交的报价,而分配规则激励验证者提交低gas价格。

(2)存储费用

用户也需要预先计算和支付存储费用。这种方式与gas fee类似,也是为了防止一些无效存储事务带来的网络拥堵和潜在的攻击行为。用户必须为当前执行和未来存储支付费用。但费用模型难以计算,存储的需求不可估计,成本就变得不稳定。

为解决这个问题,Sui引入了存储基金的概念,用于重新分配过去的交易费用给未来的验证者。当链上需求高时,可以使用存储基金作为补贴给验证者。存储基金的三个特征:1. 基金由过去的交易支付;2. 存储基金是会放入财库,产生收益,收益用来奖励验证者。基金的收益方式是,验证者可以借用存储基金,基金获得委托人收益;3. 存储基金的机制激励用户可以选择删除以前存储的数据,以获得存储费折扣;4. 存储基金不归委托人所有。

存储费用的经济模型是继filecoin后的一次新尝试,filecoin需要用户自己找到合适的矿工来存储数据。Sui虽然还存在一些问题,比如,可能在利益驱动下,运营节点会试图删除老数据,也无法确定节点是否真的会按照协议存储数据。但后续官方应该会根据网络情况进行调整。

Sui的代币经济主要是放在gas fee模型的构建上,还有验证者的质押奖励、如何进行链上治理,如何激励协议和开发者都是很重要的方面,我们可以期待Aptos和Sui对这些机制的完善。作为一个通用型公链,链上存储功能有一定的存在价值,建立一个合理的存储费用机制能够解决两个难题:1. 提高代币经济捕获能力;2. 缓解链上存储压力。未来公链的代币经济发展方向也是类似:1. 为验证者/矿工提供可持续性的商业模式;2. 治理方面能够灵活的参与链上活动,捕获协议的价值;3. 更为严谨的gas fee模型;4. 赋予代币更多的应用场景,包括与链上算法稳定币的挂钩。

3.5 Linera的专用型公链之路

随着Cosmos和Avalanche多链生态网络的发展,越来越多的公链选择专用型道路,或者一个拥有足够多用户的应用直接创建公链。例如dydx,WAX等。虽然专用型公链在性能上要求不高,但更注重其应用场景和用户增长。

在Diem系公链中,Linera更偏向于专用型公链发展。Linera主要的应用场景是支付,联通现实世界与web3世界,其可能真正继承了Facebook Diem的支付梦想和技术精髓。基于这类场景,Linera在技术上需要满足:

(1)低延迟

Linera创始人Mathieu认为市场对于低延迟区块链是有很强的需求性的,越来越多的Dapp需要低延迟来即时响应用户的操作,比如:零售支付、游戏应用程序的小额支付、自营交易以及区块链之间的连接等。

由于内存池的消耗和验证者之间的复杂协调,目前区块链中的确认时间通常仍然需要几秒钟。不同于Aptos和Sui,为了满足低延迟的硬需求,Linera完全移除内存池并最大限度地减少验证者之间的交互,这样可以大大加快支付等简单操作的速度。Linera 区块链希望大多数基于帐户的操作能够在几分之一秒内得到确认。

(2)Linear Scale(线性扩展)

Linear Scale是来自于Web2的技术思想,2000年左右互联网行业出现了“线性扩展”的水平扩展,根据实时吞吐量来动态提供数据库资源,动态增加更多的处理节点(硬件),来使企业不必担心网站在遭遇高并发时宕机,或在平时闲置资源。

目前的区块链优先考虑“顺序”执行模型,允许用户账户和智能合约在一系列交易中进行任意交互,但顺序执行阻碍了(纵向)线性扩展。Linera 项目将开发和推广适用于线性扩展的新执行模型,对不同用户帐户的操作将在不同的执行线程中同时运行。通过这种方式,始终可以通过向每个验证器添加新的处理单元来扩展执行。

Linera继承自FastPay和Zef协议,很大可能将成为一条低延迟、高交易确认的可以比肩Web2互联网支付的支付链,而且很有可能还会继承Zef协议的匿名支付特性。而FastPay 可以部署在多种环境中,可以以独立的方式用作原生代币和加密货币的结算层;或者成为另一种加密货币的侧链,或作为已建立的实时总结算系统(RTGS)一侧的高性能结算层来结算法定零售支付。未来Linera不仅可以作为支付链,很可能还可以作为其他公链的支付侧链,或嵌入其他Web2互联网产品内提供去中心化即时支付服务。

专用型公链往往可以比通用型公链获得更好的交互体验和更高的安全性,比如:dYdX宣布脱离Starkware,而去选择基于Cosmos SDK开发一条新链,或许不久的未来Rollup就可以满足dYdX作为期货交易DEX对交易流畅度的高要求,但即便Rollup性能提高到了够用的水平,相比于和上百个dAPP争夺一个区块空间,独自享用一条专属区块链可以使交易体验更好,也可以有很多办法提高区块的安全性。未来Linera作为专用型公链,链上的应用项目少、区块中的交易以支付订单为主,在这样简单、专注的环境中Linera很可能将会获得比Aptos和Sui具有更低的交易延迟、更高的交易确认和更高级别的安全性。

4. 下一代新公链范式探讨

从以上对Diem系新公链的分析中可以看到,公链技术的创新是主要的叙事主体。而在生态方面,经过调研,Diem系新公链的生态发展主要从两个方面入手:1. 降低用户使用门槛,这可以从钱包应用看出,用户直接用邮箱即可注册;2. 吸引开发者,基于Move语言,方便开发人员为应用创建各种工具和框架。Diem系公链给区块链的基础设施带来了新的气象:(1)更大的公链竞争压力,这体现在技术和性能上,公链开始不仅仅靠大机构、大人物的背书,而是靠技术团队和背景;(2)技术和运营并行,这一点可以从Aptos看出,从资本的青睐,到生态应用的迅速支持。但还是有一些问题没有解决,比如公链护城河问题,如何真正给去中心化用户提供需求。

从Diem系公链出发,我们可以看到下一代公链的发展形态:

(1)并行化是未来公链的新范式

并行计算只是小幅度提升了硬件的要求,矿工/验证者完全可以接受这个成本的提升,不会严重影响去中心化程度。但是并行化计算会大幅度提升区块链的整体性能和系统的稳定性,增大了不可能三角的面积。同时,基于共识的创新会很难。4年内的新公链在性能上应该会以Aptos和Sui为标杆,超过它们几乎很难。在生态应用上,AMM和NFT铸造的并行化升级可能是下一轮牛市的必备条件。AMM是DeFi的基础,NFT可能会在更多使用场景中发挥作用,牛市的来临必然会伴随着交易和其他各类应用的繁荣,它们的性能不能成为卡点。

(2)虚拟机的演进

EVM是链节点为智能合约创造的一个隔离的、可确定的沙盒环境,多个合约程序是运行在同一个进程内的不同的虚拟机沙箱中。这意味着以太坊合约之间的调用是同一个进程内不同的智能合约虚拟机之间的调用,安全依赖于智能合约虚拟机之间的隔离。

而Move虚拟机支持并行执行。合约之间的调用被集中放置在一个沙盒中,在这种架构下,合约的状态的安全性主要要通过编程语言内部的安全性进行隔离,即基于Move的每一笔资产都具有原生稀缺性,是独一无二的,并且拥有对应的访问控制属性,而非依赖虚拟机进行隔离。

(3)专用型公链的尝试

目前一些有足够用户的应用还是会有成立新链的想法。比如金融类dydx。一些专用型公链可能也会解决一些技术问题,比如 celestia提供了Layer2的数据可用性层。这些新范式大部分从技术角度出发,但技术离不开整个基础设施的发展,都有一定的周期性。除此之外,宏观经济是否支持资本持续为区块链行业底层技术的发展,也是限制公链的一大因素。而各个国家对加密行业监管严格,是否也是对开发者、节点、隐私类公链的一种威胁,也是成为影响未来公链形式的一个原因。

参考资料

1. Ethereum -> Solana -> Aptos: the high-performance competition is on,

2. Announcing Sui,

3.

4. Built for Speed: Under the Hoods of Aptos and Sui,

5. How Sui Move differs from Core Move,

6. Move on Aptos,

7. Move: A Language With Programmable Resources,

8.

9. Linera,

10. LibraBFT,

11. FastPay: High-Performance Byzantine Fault Tolerant Settlement,

12. Introducing Linera: Bringing web2 performance and reliability to web3,

13. Zef: Low-latency, Scalable, Private Payments,

14. Narwhal and Tusk: A DAG-based Mempool and Efficient BFT Consensus,

15. DAG Meets BFT — The Next Generation of BFT Consensus,

16. Sui whitepaper,

17. Sui tokenomics,

责任编辑:Kate

标签: #并行计算是并行计算机最主要的工作特点