APP下载

智能合约平台的可扩展性研究

2022-02-03陈云芳

无线互联科技 2022年22期
关键词:主链可扩展性以太

金 菁,陈云芳

(南京邮电大学 计算机学院,江苏 南京 210000)

0 引言

近几年来,区块链技术快速发展,在各行各业得到了广泛应用,目前区块链已经逐渐进入3.0时代。区块链广泛应用于智能合约、保险、供给链、医疗保健、物联网、知识产权等领域。智能合约作为区块链的重要组成部分,旨在以信息化方式传播、验证或执行合同的谈判或者履行计算机协议。为了解决自身的需求,各行各业都或多或少创建了自身的智能合约平台。目前最大的区块链基础设施比特币及以太坊存在着性能瓶颈,对于大规模应用的各种需求难以满足。比特币的吞吐量为每秒7笔交易,以太坊为每秒10~20笔[1]。与VISA实现的每秒2 000笔交易相比,这两个平台的吞吐量非常低。因此,可扩展性一直是这些区块链平台的研究热点。Xie等[2]以提高吞吐量为研究核心,介绍了当前主要的3种提高区块链吞吐量的技术。Zhang等[3]介绍了当前区块链在吞吐量、存储以及网络上面临的挑战,并提出了解决办法。Abdurrashid等[4]综合介绍了目前区块链可扩展性的解决方案,并对未来的可扩展性研究提出建议。本文通过对比当下各类扩容方案,分析其优缺点,最后对区块链可扩展性未来的研究提出展望。

1 可扩展性相关研究

随着去中心化金融的爆炸式增长,区块链对于可扩展性的要求逐渐增长。

目前,以太坊Layer-2的解决方案Polygon在2021年吸引了大量关注。Polygon采用两种底层技术架构:PoS Commit Chain 和 More Viable Plasma L2扩容方案。作为以太坊主链的Commit Chain,Polygon的PoS链已经吸引了超过80个以太坊DApps在其平台上部署。理论上来说,Polygon最终将拥有成千上万的链来共同扩容以提高网络的吞吐量,当连接到以太坊这样的主链时,未来甚至可能会达到数百万的TPS。

而作为公链之首的以太坊本身也在不断进行升级。以太坊已于2022年第2季度完成“合并”,即实现由工作量证明PoW转向权益证明PoS。然而,此次PoW转PoS的合并升级只涉及共识机制层面,以太坊的可扩展性问题仍需依赖Layer-2技术或分片来解决。

本节将从链上扩容Layer-1和链下扩容Layer-2两个方面来分析和讨论当前主流的以太坊扩容方案。

1.1 链上扩容

链上扩容(On-Chain Scaling),也被称为是Layer-1扩容。通常情况下,链上扩容指直接发生在区块链上,通过改变区块大小或数据结构从而提高吞吐量的解决方案。

链上扩容技术的第一种是减少区块数据的大小,而不减少块中的交易数量,使得吞吐量提高。例如隔离见证(Segwit)方案。Segwit从交易数据中删除签名,并将其与一个单独的脚本一起附加到元数据中。由于签名的部分在交易数据中占比达到约65%,因此将其删除可以释放块内空间,腾出更多的空间给交易本身。如此,区块中能增加约4倍的交易量,吞吐量也随之提高。Segwit还将块大小从1 MB增加到4 MB,解决了二次哈希问题,加速了支付通道的运行,如闪电网络(Lighting Network)。尽管Segwit能对比特币进行软扩容,但效果始终有限,吞吐量的提高仅限于17~23 TPS。

第二种链上扩容方案是直接增加区块的大小。Bitcoin-cash和Bitcoin-unlimited两个方案使用了这种方法[5-6]。然而,这种方案会导致传播延迟的增加,从而带来分叉和DoS攻击的问题,给安全性带来了巨大的挑战。由于SegWit的局限性,一些矿工选择Bitcoin-Cashing作为替代解决方案。Bitcoin-Cashing将比特币块的大小先增加到8 MB,而后又增加到32 MB。然而由于块的大小与吞吐量没有线性关系,因此这种方法对于吞吐量的增加也十分有限。

还有一种链上扩容的方法,称为分片(Sharding),主要用于分布式处理系统。在这种方法中,数据被分割并存储为单独的分片以供处理。每个分片都并行地处理交易和存储数据,可以提高吞吐量。分片技术还降低了BFT共识网络中的通信开销。目前,分片分配,小分片安全,交叉分片通信开销是分片技术面临的巨大挑战,如果在这些方面的技术不够完善,将导致严重的安全问题。

1.2 链下扩容

链下扩容(Off-Chain Scaling)是指为以太坊等底层链提供外部执行的任何创新方式。这些创新被称为Layer-2扩容方式,即将交易的执行放在以太坊之外的第二层网络进行,从而继续优化以太坊Layer-1的性能。

1.2.1 状态通道

状态通道(State Channels)是一种由多签智能合约支撑的链下扩容方案。状态通道从根本上丰富了支付通道的功能,除了能够实现基本的支付功能外,状态通道还可以用于在区块链上进行状态更新,即更改智能合约的内部状态。在状态通道网络中,ETH等加密资产可以锁定在这些合约中,用于在用户之间创建双向支付通道。

具体而言,状态通道的用户除了支付外,还可以采用链下的方式执行智能合约,状态通道的原理如图1所示。举个具体的例子,如果用户Alice和Bob在彼此之间建立了一个状态通道,即可以拥有一个“合同的模拟分类帐”,并在上面执行合约,而不需要在真正的区块链上注册。只要双方不发生冲突,该方案就可以顺利实现。状态通道的安全性来自双方在任何时候都可以在实际的区块链上“注册”通道的当前链下状态,并让通道合约公平地完成该合约的执行。状态通道的使用场景很多,包括数字分发、在线游戏和去中心化代币交换等[7]。

图1 状态通道运行原理

1.2.2 Plasma

Plasma是最初由Joseph Poon和Vitalik Buterin提出的一个Layer-2扩展解决方案,是一个用于在以太坊上构建可扩展应用的框架。Plasma用于解决状态通道的局限性,允许在以太坊主链上创建附加子链,这些子链可以产生自己的子链。也就是说,可以在子链级别执行许多复杂的操作,运行拥有数千名用户的整个应用程序,并且只需与以太坊主链进行尽可能少的交互。子链可以更快地操作,且交易费用更低,因为不需要在整个以太坊区块链留下副本。与状态通道相比,有一个很大的不同点是Plasma能够运行智能合约。如果说状态通道是对交易吞吐量的扩容,那么Plasma就是对计算能力的扩容。Plasma将计算和数据存储都迁移到Layer-2进行,由Layer-2的执行者周期性地向主链递交Merkle根形式的状态承诺。

如图2所示是使用Plasma机制的简单示意:如果执行者递交无效的状态,用户可以向主链上的智能合约提供欺诈证明(Fraud Proof);一旦确认执行者出现欺诈行为,则智能合约会没收其保证金。虽说欺诈证明可以使得提供无效承诺的执行者在主链上遭到惩罚,但如果Plasma的执行者拒绝在主链上公开数据,那么用户则无法取得错误数据,也就无法提供欺诈证明,所以 Plasma目前面临的最大问题是交易数据可用性。对此,Plasma也给出了一些解决措施,如延长资产从Layer-2退出的时间,当出现恶意行为的时候,就能允许大量资产从Plasma链退出。

图2 Plasma运行原理

1.2.3 Rollup

Rollup在其自身的执行层上进行交易,并将交易数据发布到以太坊上。和Plasma相比,Rollup的核心优势是数据可用性。它将数据提交给主链,大大提高了安全性。

如图3所示是一个简化的Optimstic Rollup流程,可以看出,Rollup和Plasma的最大区别在于新增了交易数据的提交。因此,Rollup的实质是将一大笔实际产生的交易汇总成一笔主链上的交易,这些交易由Rollup链来负责执行和计算,最后将数据提交给主链,同时由主链最终确认这些交易。这种方法利用了主链的共识和安全性,同时提升了实际上的交易效率,降低了交易成本。当前使用Rollup的有ZK Rollup和Optimistic Rollup。

图3 Optimstic Rollup运行原理

ZK Rollup基于有效性证明(Validity Proof)和零知识证明(Zero-Knowledge Proof)的提出,最先假设不相信提交者能主动提交正确的batch。ZK Rollup在主链完成零知识证明,链上无需包含签名数据,因为零知识证明就足以证明交易是否有效。如果交易被证明有效,便立刻确认,这样可以保证无效的状态不会发生,即数据可用性存放在链上,所以ZK Rollup对数据存储方面也带来了一定程度上的扩展性提升。但由于零知识证明生成的复杂性,目前这种方式也存在局限性,只适用于简单转账。

Optimistic Rollup是一种交互式的方法,它选择乐观地相信提交者提交的batch正确,和Plasma有一定的相似性,都使用了欺诈证明的机制。在这种解决方案中,新的batches是由运营商发布的,而没有被Rollup智能合约证明正确。Optimistic Rollup克服了合约执行管理的困难。一般来说,Rollup合约会跟踪已更新状态的历史记录,任何发现错误过去状态根(Post-State Root)的人都可以发布错误证明。这也就意味着合约可以验证所提供的证明:如果这个证明指出了一个无效的提交声明,那么系统将恢复最后一个有效批的状态,并对发布者进行惩罚[8]。

1.3 扩容方案对比

为了更直观地看出不同扩容方案的异同点,本节将通过表格的形式,从各方案对区块链系统吞吐量、成本以及容量3个角度的影响出发,对上文中介绍的方案进行详细的比较和分析,由此继续强调其优缺点,如表1所示。

表1 扩容方案的比较

从表1中可以看出,不同的扩容技术有其不同的优缺点和使用场景。对链上扩容方案而言,Segwit通过分离签名提高吞吐量,但增加了代码复杂度,方案可移植性低;直接增加区块大小降低了成本,但使得孤立区块出现的可能性增加;Sharding可以并行处理大量交易,但被攻击的可能性也随之增加。

而在Layer-2扩容方案中,状态通道因其独特的性质,让其在扩容领域拥有不可替代的一席之地。跟状态通道相比,Plasma的优点在于能够运行智能合约。跟Plasma和ZK Rollup相比,Optimistic Rollup带来的扩展性提升幅度最小,但更容易解决问题。而ZK Rollup则可以消除尾部风险,减少提取资金的实践,且保护隐私,适合需要提高流动性的项目。

2 未来研究方向

目前已有许多扩容方案在权衡区块链“不可能三角”,即可扩展性、去中心化、安全性的问题上做出了一定的成果。但是,区块链的可扩展性挑战仍然没有被完全解决,这意味着区块链仍未发挥出全部潜力。目前,区块链可扩展性有如下几个挑战。

(1)分片技术(Sharding)作为目前最常用的提高可扩展性的方案,可以实现低延迟、高吞吐量、存储可扩展性和拜占庭容错。每笔交易的通信成本是区块链可扩展性问题的关键。只有其排序的复杂度降低到O(n),才能表示该区块链具备可扩展性。未来或许会通过部署去中心化的名誉管理方法和使用激励策略的负载平衡机制来做到这一点。

(2)保持跨分片交易中的原子性是另一项可扩展性挑战。当不同的分片共同操作时,需要使用时间轴来验证这些操作的先后顺序。当分片需要处理大量合法或不合法的跨分片交易时,可以通过负载平衡机制来应对矿工节点耗尽以及DoS攻击的问题。

(3)区块容易形成多个分支,这些分支被称为分叉,也会对可扩展性造成影响。目前已有最长链规则被用于处理这些分叉。但是,如果没有任何分叉避免机制,仍然会出现资源浪费的现象。为了解决这个问题,可以成立由激励节点组成的分叉监测委员会,将该委员会与采矿节点分开,并根据采矿节点的能力分配采矿工作,并实时监测并及时避免分叉。

(4)对被许可链而言,使用可信的硬件设备进行挖矿和验证会减少BGR,这将直接影响交易吞吐量。然而,在公共链中使用这种方法则需要采用激励机制,让矿工使用那些拥有更高处理能力和更大内存的硬件。

3 结语

本文介绍了智能合约平台的可扩展性现状、存在的挑战和解决办法。首先,介绍了公链之首以太坊的Layer-2扩容解决方案Polygon的发展近况。其次,从链上和链下两个方面介绍了目前存在的扩容方案,并分析了优缺点。最后,阐述目前区块链可扩展性面临的挑战和可能的解决办法,展望了其未来研究方向。

猜你喜欢

主链可扩展性以太
以太极为旗,开启新时代“黄河大合唱”
车易链:做汽车业的“以太坊”
恩智浦推出全新i.MX 8X 处理器,为工业应用带来更高的安全性、可靠性和可扩展性
电力监控软件的可扩展性设计
有机化合物命名易错题直击
“烷烃”的五字命名方针
构建高可扩展性的物流装备管理系统
百通推出入门级快速工业以太网络交换器系列
以太互联 高效便捷 经济、可靠、易用的小型可编程控制器
高聚物单体的判断方法