智能合约的并行执行

北京航空航天大学分布式实验室 北京航空航天大学云南创新研究院   余维 胡 凯

性能问题一直是困扰区块链领域的大问题,其中智能合约性能是整个区块链性能的瓶颈之一,智能合约在1994年由尼克萨博首次提出,但受到合约代码执行环境的影响,很难应用到现实生活中。区块链技术为智能合约提供了一个良好的执行环境,保证了合约的正确性以及强制执行性,在区块链上合约具备了控制资产的能力。但基于区块链的智能仍处于一个初级阶段,仍有许多问题需要解决。最新数据显示大部分公链上的智能合约执行效率低下,以太坊上智能合约的平均时间达到了20s左右。如何提升合约的执行效率成为了一个亟待解决的问题。

1. 一般智能合约执行模型

纵观现有公链的的智能合约执行模型,其大部分与以太坊的执行模型相似,对以太坊的智能合约执行模型进行进一步分析可知,其主要的执行步骤如图1所示。

其中,智能合约的执行处理过程为:

步骤1:获取目前待处理的交易池,获取排头交易,调用其相应的智能合同。

步骤2:以太坊虚拟机分析交易内容,获取交易所调用的合约名、合约方法、以及合约输入等信息。

步骤3:以太坊虚拟机从交易和状态数据库中获取相应的合约字节码和合约输入。

步骤4:合约代码在以太坊虚拟机中执行,完成对应交易的业务逻辑。

步骤5:以太坊虚拟机将合约执行结果写回到状态数据库中,完成业务状态的更新。

步骤6:当块中的所有交易都已执行时,系统会将状态数据库的当前状态的哈希摘要作为认证记录存储在区块链中。

1. 智能合约并行执行模型

基于对以上的执行模型步骤的分析,我们可以发现智能合约执行过程均为串行执行,由于执行过程中包含大量计算以及存储操作,易导致性能不佳。基于此分析,我们提出了智能合约并行执行模型,使用并行技术来解决串行模型所带来的性能瓶颈。并行模型的具体实现借助于多线程技术,从而有效的提升智能合约的执行效率。智能合约并行模型如图2所示。

图2 智能合约并行模型

其中,智能合约的执行处理过程为:

步骤1:当区块链系统从交易池中获得足够的有效交易时,它将开始处理这些交易。

步骤2:交易分割模块分析当前交易以获取共享变量的信息。随后,交易分割模块将交易分到不同的集合中,使得这些集合彼此之间没有相同的共享变量。最后,这些交易集将被发送到多线程处理模块中执行。

步骤3:多线程处理模块将工作分配给每个线程。

步骤4:线程开始运行并从状态数据库获取必要的初始数据,例如合约代码。智能合约准备好执行。

步骤5:将执行合约代码,代码将完成其相应的智能合约的业务逻辑。

步骤6:智能合约执行将改变一些相关的状态变量,这些更改最终将被写回状态数据库。

步骤7:当所有智能合约完成后,区块链系统将进行状态数据库的认证。然后将所有已处理的交易和认证记录到区块链中。

新模型在实现上面临的最大问题是执行时所产生的同步问题,同步问题可描述为在使用多线程对业务进行处理时,若不能保证各线程之间共享变量的安全,则可能会导致程序执行的出错。为保证多线程所处理业务中共享变量的安全性,相比于现有的智能合约模型,其主要增加了交易分割模块,将交易高效的分割为相互独立(无相同共享变量)的交易组,保证了多线程之间无相同的共享变量,确保了各线程中任务执行的安全性。交易分割过程如图3所示。

图3 并行模型交易分割

交易分割主要是基于交易中所包含的共享变量,将具有相同共享变量的交易分配到同一个任务组,交予同一个线程串行执行,防止了因包含同一共享变量而产生的同步问题。如图3所示,交易1与交易2拥有同一共享变量x1,故两者被分配到了组合1这个任务组中。除包含相同共享变量的交易需被分配到同一任务组外,包含相同共享变量的交易存在着传递性,即两交易同时与另一个交易拥有相同共享时,其也应被分配到同一任务组中,如图3所示,交易1与交易3同时与交易2拥有x1与x3的相同共享变量,则三者被分配到了同一任务组组合1中。

以下为智能合约并行模型和串行智能合约模型的性能对比,测试场景为购物消费场景,基于购物的基础逻辑编写了对应的购物合约并模拟了批量的购物交易。所对比的是两种模型处理同一批数量的购物交易所花费的时间。

图4 智能合约模型性能对比

如图4所示,并行智能合约模型相比于串行执行模型,在实验中至少可以节省23.8%的时间成本,最多可以节省41.9%的时间成本。由上述实验结果可以看出并行模型可有效的提升智能合约执行性能,让智能合约应用到更多领域。

24小时热点

免费的行情软件app网站在国外有哪些?

区块链看行情的软件,简而言之,就是一类能够实时提供数字货币行 ...

2377169

波场区块链浏览器

2024年最新十大不收费看盘软件排名公布

随着股市交易的普及和技术的发展,投资者对高效、可靠且免费的看 ...

1126159

波场区块链浏览器

2024年人气最高的免费看行情的软件大全

区块链看行情的软件是指那些能够提供实时数字货币行情、市场动态 ...

450622

波场区块链浏览器

雷达币最新进展:2024年主网上线时间及前景预测

近期有传闻称,新加坡的加密货币交易所推出了一款雷达币,这款被 ...

1827806

波场区块链浏览器

什么是u币?u币怎么换成人民币?

U币通常指的是USDT(Tether),是一种与美元1:1锚 ...

267673

波场区块链浏览器

1U等于多少人民币?U币怎么兑换人民币?

U币(如USDT)是一种基于区块链技术的稳定币,其价值与美元 ...

251060

区块链圈小菜鸡

数字人民币预计全面普及时间是什么?与纸质人民币有什么差别?

数字人民币的全面普及时间是一个受到广泛关注的话题。数字人民币 ...

536594

区块链圈小菜鸡

988pay虚拟钱包使用指南分享

988pay虚拟钱包被称为数字货币钱包或者是区块链钱包,方便 ...

657985

波场区块链浏览器

2024年派币在中国被认可了吗?

派币,全称为Pi Network,是一个旨在实现相对广泛普及 ...

516234

区块链圈小菜鸡

比特币最开始价格多少一个?比特币刚进入中国多少钱一个?

比特币最开始的价格不到1美分,1美元可以兑换1300个比特币 ...

329124

区块链圈小菜鸡

热点专题

区块链网是什么

中国区块链价值评价中心 中国区块链价值评价中心于2 ...

5292806

知信链

免费的行情软件app网站在国外有哪些?

区块链看行情的软件,简而言之,就是一类能够实时提供数字货币行 ...

2377018

波场区块链浏览器

雷达币最新进展:2024年主网上线时间及前景预测

近期有传闻称,新加坡的加密货币交易所推出了一款雷达币,这款被 ...

1827508

波场区块链浏览器

2024年最新十大不收费看盘软件排名公布

随着股市交易的普及和技术的发展,投资者对高效、可靠且免费的看 ...

1125849

波场区块链浏览器

元界(Metaverse)

元界(Metaverse)是一个去中心化的公有区块链项目,元 ...

992187

WEEX数字货币

BTC123

BTC123(www.btc123.com)成立于2011年 ...

839225

Kusama 测试网

最全传销名单,请告诉家人朋友,别让他们上当受骗后赔到血本无归

因为互联网的发展,让现代传销具备了更强的隐蔽性,更让社会经验 ...

785641

律动 BlockBeats

中币网zb——中币交易所

ZB.com是一个全球化的数字货币交易所,目前已获得泰国和迪 ...

751221

中币交易所

Bitfinex(香港B网)

Bitfinex交易平台目前仍处于试运营阶段,该平台由iFi ...

722733

Hi元宇宙

DAC币——达芬奇Davinci Coin

达芬奇项目的平台是通过叫作"Dchain"的自身区块链把可以 ...

715222

Mechanism Capital