Diem计划(旧名Libra、脸书币) 团队在解散后,开枝散叶衍生出不同的公链。风投Volt Capital 合伙人Mohamed Fouda撰文讨论近来热议的四个案例:Aptos、Sui、Linera、Fuel。

EVM 相容链的问题:执行效能

了解概念:EVM (以太坊虚拟机)

像是以太坊这样的智能合约公链,需要共享的计算引擎来执行不同的去中心化应用程序(dapp),节点会运行这个计算引擎,并执行dapp,用户再跟dapp 互动; 在节点得到执行结果的共识后,就会继续推进区块链。

以太坊虚拟机(EVM) 就是智能合约主要的执行引擎,有多个公链、L2都采用EVM。

了解问题:EVM 执行效率

EVM 的限制在于顺序性的一次执行一个事务。执行一个事务时,将所有其他事务置于暂停状态,直到事务执行完成,并更新区块链状态。这样的次序处理(sequential execution),也造成网路吞吐量的瓶颈。

并行处理取向的机会

有一些底层链(L1) 采取并行处理(parallel execution,PE) 的方式。它可以在交易在不同的处理核心分别处理,优化硬体应用提升网路吞吐量,这个取向改进了交易确认的延迟。

PE 不是一个新的方法,很多人都尝试过。其中一个点子是将EVM 使用的记帐模型由Accounts model 改成比特币在用的UTXO model ; 后者能做到并行处理,适合支付用途。但是因为UTXO 的功能有限,还需要扩充才能够与智能合约互动,因此市场上有Cardano 的extended UTXO model案例。

另一种做到PE 的方式,则是不去改变记帐模型。而是改善链的状态如何被架构与修改,Solana 的Sealevel就是案例。Aptos、Sui、Linera、Fuel 也都是采取这样后者的解决路线。然而,关键挑战就在于,如何理解区块链状态、识别独立交易(从相依的交易中区别)。

RAM (随机存取内存) 概念

区块链状态可以类比为电脑的随机存取内存,每个区块链帐户或是智能合约,都拥有一定范围的记忆位置可以修改。相依的交易会在同一个记忆位置中修改,像是UNI 兑换到USDC 的AMM 交易,可能须经由Uni -> ETH -> DAI -> AAVE -> USDC,以上交易彼此相依,需要次序处理。目前不同的区块链有不同的内存架构与机制来识别相依的交易。

Aptos、Sui、Linera、Fuel

Aptos、Sui 和Linera 是用Diem 团队的MOVE 语言来改进智能合约执行; Fuel 则是用自己的语言来处理PE。

Aptos

Aptos 基于MOVE 与MOVE 虚拟机(MoveVM) 实现高吞吐量的并行处理。Aptos 采用一种改良的软体事务内存(Software Transactional Memory, STM) 称为Block-STM 来处理,不需要事务明确声明它们使用状态的哪一部分。

在Block-STM 中执行时,交易在区块中被预先排序并拆分,不同的处理器会「乐观处理」(optimistic execution)。乐观执行是指,会假设交易都没有相依性。有被交易修改的记忆位置会被记录下来。在处理后,所有交易结果都会是有效的。在验证期间,如果有一个交易被发现取用先前交易的记忆位置,该交易就为无效。交易打掉后,会重新处理交易,这个过程会重复至所有区块中的交易都被处理。Block-STM 在采用多个核心处理器时,有助于加速处理。但若是一个区块中的交易全部相依,效率将会比次序处理稍弱。据称Aptos 可达16 万TPS。

Sui

另一种PE 的方式是要求交易明确声明它们修改的区块链状态部分。Solana 和Sui 都是采用这种方法,Solana 称这些记忆单元为accounts,一笔交易必须声明它修改了哪些accounts。Sui 也是用类似的方法。

Sui 虽然也使用MoveVM,但Sui 使用的是不同版的MOVE 语言,Sui Move 语言改变了储存模组与资产许可,这也是它与Aptos 不一样的地方,它定义了一种状态存储模型,可以更轻松地识别独立交易。

在Sui 中,状态储存被定义为物件(Objects),物件代表资产,它可以被分享,也就是多个用户可以修改同一个物件。而每个物件都有唯一的ID,并有内部指向至持有者地址。透过这样的方式,就很容易可以识别交易的相依关系。

不过,声明相依关系的工作会交给开发者,虽然执行引擎更容易实现,理论上也会有更好的效能跟吞吐量; 但是对于开发者体验并不理想。

Sui 目前刚有测试网,并声称有10 万TPS。

Linera

Linera 由16z 领投首轮融资,但细节并不多,据其公告,它是基于Facebook 开发的FastPay 协议,一种称为Byzantine Consistent Broadcast 的技术,它可以有助于加速支付。

Fuel

Fuel 则是专注在模组化区块链堆栈的执行层,也就是它没有共识层,也没有资料储存在Fuel 链上。对于这样的功能性区块链,Fuel 可以跟其他的区块链互动取得共识与资料,例如以太坊。Fuel 使用UTXO 建立一个严格的造访清单,就是对同一个状态具有控制权的清单。这样的方式中,区块中的交易要辨认相依关系就会变得更为简化。Fuel 也有自己的FuelVM 跟Sway 智能合约语言。在它的设计下,其智能合约执行是可以在以太坊主网上结算的。

并行处理的挑战

可并行交易的实际百分比有多少单纯的独立事务,如地址间的转帐,以及复杂的相依事务,如AMM 流动池中的交易,不同类型的活动多寡,牵涉PE 实际能带来的效益。Mohamed Fouda 表示,根据以太坊每日交易的不同活动,可以估计PE 可以加速智能合约平台中大约70-80% 的交易。PE 的吞吐量也可能提高到3~5 倍。 网路中心化的问题。PE 大大地推动网路中心化发展,一般的消费型设备不易满足这种高吞吐量网路的要求,用户必须依赖专门的节点供应商。这可能会让权力集中在少部分实体,审查风险也较高。Mohamed Fouda 表示,目前Sui 测试网全节点的要求比Aptos 低,但在主网实际上线后,应会发生显著变化。Fuel 在这方面因为与以太坊的长期目标一致,较不受影响。目前对Aptos 与Sui 还不清楚他们对去中心化的优先次序。Linera 则没有清楚资讯。

最后,Mohamed Fouda 认为,PE 是最有望提高智能合约平台吞吐量的解决方案,加上共识机制的创新,有机会将TPS 接近或提高至10 万。但如何为这样的高效的设施维护去中心化,仍是一项挑战。