一种区块链智能合约的并行执行方法及系统

文档序号:34227293发布日期:2023-05-24 10:04阅读:209来源:国知局
一种区块链智能合约的并行执行方法及系统与流程

本公开属于区块链,尤其涉及一种区块链智能合约的并行执行方法及系统。


背景技术:

1、本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。

2、目前,区块链系统中为了避免在智能合约执行过程中产生数据冲突,通常串行的执行智能合约,当存在大量合约交易时,智能合约的执行速度会影响区块链系统的吞吐量。

3、现有技术中,为了提高区块链系统中合约交易执行的效率,引入了基于dag(directed acyc l ic graph,有向无环图)并行执行合约的解决方案。通过预执行合约或者事先确定合约间互斥关系等方法生成用于表示合约间依赖关系的有向无环图,根据该图可确定一个合约在执行时是否依赖于其他合约,对于执行时不存在依赖关系的合约可并行处理,从而提高执行效率。

4、然而,发明人发现,现有的基于dag的方案中,采用预执行合约方法生成dag增加了执行时间,采用事先确定合约间互斥关系的方法依赖于特定的并行框架去判断依赖关系,并且增加了合约开发人员的负担;这些方案必须生成有向无环图dag附加在交易中,占用了一定的带宽。


技术实现思路

1、本公开为了解决上述问题,提供了一种区块链智能合约的并行执行方法及系统,所述方案通过建立的全局调度队列,在执行过程中判断当前智能合约是否与其他智能合约存在冲突,来保证即使存在智能合约间调用的情况,调用同一个智能合约的多个交易在全局视角中总是串行执行的,同一个合约不会被并行访问,最终在不通过生成dag实现并行的同时,保证了执行结果的一致性。

2、根据本公开实施例的第一个方面,提供了一种区块链智能合约的并行执行方法,包括:

3、获取区块链中所有合约交易,并生成初始化全局调度队列;

4、根据全局调度队列,基于预设调度规则确定当前可并行执行的智能合约数量,并初始化对应数量的智能合约虚拟机实例进行智能合约的执行;

5、其中,所述全局调度队列用于保证智能合约执行过程中对同一智能合约的多次调用在全局视角下串行执行,对于不同智能合约的调用并行执行;所述预设调度规则为:将全局调度队列分为若干阶段,每个阶段设置多层;所有初始智能合约均放置于第一阶段,将相同的智能合约放置在不同层,使同一层中不存在相同的智能合约,执行时每一层并行执行;当存在智能合约间调用时,则将被调用智能合约放入子阶段,同一子阶段中的相同智能合约放置在不同层,根据被调用智能合约在子阶段中的位置和调度队列中其他阶段中的智能合约,判断当前智能合约是否执行。

6、进一步的,所述智能合约虚拟机实例包括执行模块和调度模块,其中,所述执行模块用于智能合约的执行,所述调度模块用于在发生合约间调用的情况下,将被调用合约放入全局调度队列中适当位置,并根据当前全局队列判断被调用合约的执行时机。

7、进一步的,所述执行时每一层并行执行,具体为:根据当前层中的智能合约数量启动多个智能合约虚拟机实例并行执行当前层中的合约,当前层执行完毕后继续执行下一层,直至所有合约执行完成。

8、进一步的,对于所述全局调度队列中的智能合约设置有process、wait及comp lete状态,其中,智能合约被放入队列时置为process状态,智能合约在执行过程中发生智能合约间调用时,当前智能合约置为wa it状态,被调用智能合约放入队列并置为process状态,智能合约执行完成时置为comp l ete状态。

9、进一步的,在执行智能合约过程中发生智能合约间调用时,暂停当前智能合约的执行,将当前智能合约状态置为wa it,并将被调用智能合约放入子阶段,其放入子阶段前需执行第一预设检测;同时,所述被调用智能合约放入子阶段并确定放入层后,需执行第二预设检测。

10、进一步的,任一所述智能合约均具有独立的存储空间,各智能合约之间合约数据的读写互不影响。

11、进一步的,所述智能合约的执行环境包括但不限于以太坊虚拟机以及基于docker的执行环境。

12、根据本公开实施例的第二个方面,提供了一种区块链智能合约的并行执行系统,包括:

13、数据获取单元,其用于获取区块链中所有合约交易,并生成初始化全局调度队列;

14、调度执行单元,其用于根据全局调度队列,基于预设调度规则确定当前可并行执行的智能合约数量,并初始化对应数量的智能合约虚拟机实例进行智能合约的执行;

15、其中,所述全局调度队列用于保证智能合约执行过程中对同一智能合约的多次调用在全局视角下串行执行,对于不同智能合约的调用并行执行;所述预设调度规则为:将全局调度队列分为若干阶段,每个阶段设置多层;所有初始智能合约均放置于第一阶段,将相同的智能合约放置在不同层,使同一层中不存在相同的智能合约,执行时每一层并行执行;当存在智能合约间调用时,则将被调用智能合约放入子阶段,同一子阶段中的相同智能合约放置在不同层,根据被调用智能合约在子阶段中的位置和调度队列中其他阶段中的智能合约,判断当前智能合约是否执行。

16、根据本公开实施例的第三方面,提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现如上所述的一种区块链智能合约的并行执行方法。

17、根据本公开实施例的第四方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如上所述的一种区块链智能合约的并行执行方法。

18、与现有技术相比,本公开的有益效果是:

19、(1)本公开提供了一种区块链智能合约的并行执行方法及系统,所述方案通过建立的全局调度队列,在执行过程中判断当前智能合约是否与其他智能合约存在冲突,来保证即使存在智能合约间调用的情况,调用同一个智能合约的多个交易在全局视角中总是串行执行的,同一个合约不会被并行访问,最终在不通过生成dag实现并行的同时,保证执行结果的一致性。

20、(2)本公开所述方案中的并行方式,通过区块链底层逻辑可自动启用并行,使用者无需关注并行逻辑,并且不需要预执行、预分析或重试的流程。

21、本公开附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。



技术特征:

1.一种区块链智能合约的并行执行方法,其特征在于,包括:

2.如权利要求1所述的一种区块链智能合约的并行执行方法,其特征在于,所述智能合约虚拟机实例包括执行模块和调度模块,其中,所述执行模块用于智能合约的执行,所述调度模块用于在发生合约间调用的情况下,将被调用合约放入全局调度队列中适当位置,并根据当前全局队列判断被调用合约的执行时机。

3.如权利要求1所述的一种区块链智能合约的并行执行方法,其特征在于,所述执行时每一层并行执行,具体为:根据当前层中的智能合约数量启动多个智能合约虚拟机实例并行执行当前层中的合约,当前层执行完毕后继续执行下一层,直至所有合约执行完成。

4.如权利要求1所述的一种区块链智能合约的并行执行方法,其特征在于,对于所述全局调度队列中的智能合约设置有process、wait及complete状态,其中,智能合约被放入队列时置为process状态,智能合约在执行过程中发生智能合约间调用时,当前智能合约置为wait状态,被调用智能合约放入队列并置为process状态,智能合约执行完成时置为complete状态。

5.如权利要求1所述的一种区块链智能合约的并行执行方法,其特征在于,在执行智能合约过程中发生智能合约间调用时,暂停当前智能合约的执行,将当前智能合约状态置为wait,并将被调用智能合约放入子阶段,其放入子阶段前需执行第一预设检测;同时,所述被调用智能合约放入子阶段并确定放入层后,需执行第二预设检测。

6.如权利要求1所述的一种区块链智能合约的并行执行方法,其特征在于,任一所述智能合约均具有独立的存储空间,各智能合约之间合约数据的读写互不影响。

7.如权利要求1所述的一种区块链智能合约的并行执行方法,其特征在于,所述智能合约的执行环境包括但不限于以太坊虚拟机以及基于docker的执行环境。

8.一种区块链智能合约的并行执行系统,其特征在于,包括:

9.一种计算机可读存储介质,其上存储有程序,其特征在于,该程序被处理器执行时实现如权利要求1-7任一项所述的一种区块链智能合约的并行执行方法。

10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7任一项所述的一种区块链智能合约的并行执行方法。


技术总结
本公开提供了一种区块链智能合约的并行执行方法及系统,所述方案包括:获取区块链中所有合约交易,并生成初始化全局调度队列;根据全局调度队列,基于预设调度规则确定当前可并行执行的智能合约数量,并初始化对应数量的智能合约虚拟机实例进行智能合约的执行;其中,所述全局调度队列用于保证智能合约执行过程中对同一智能合约的多次调用在全局视角下串行执行,对于不同智能合约的调用并行执行。

技术研发人员:张旭,赵伟,戴振利
受保护的技术使用者:山东大学
技术研发日:
技术公布日:2024/1/12
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1