主页 > imtoken钱包最新版本 > 区块链虚拟机异步执行智能合约的方法、系统及P2P网络和过程

区块链虚拟机异步执行智能合约的方法、系统及P2P网络和过程

imtoken钱包最新版本 2023-02-07 07:02:13

区块链虚拟机异步执行智能合约的方法、系统及P2P网络与流程

区块链虚拟机异步执行智能合约的方法、系统及p2p网络

技术领域

1、本发明涉及大数据处理和信息技术领域,具体涉及一种区块链虚拟机异步执行智能合约的方法、系统及p2p网络。

背景技术:

2、随着区块链知识和技术的普及,区块链技术(blockchain technology,简称bt)出现在越来越多的应用场景中。 区块链技术,又称分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,允许每个节点参与数据库记录。

3、区块链技术主要经历了比特币区块链1.0时代、以太坊区块链2.0时代、以eos(企业操作系统)为代表的区块链3.0三个发展阶段。 关键技术有更新突破。

4. 区块链虚拟机,即智能合约在区块链中的运行环境,是目前区块链技术中的重要技术支撑,随着区块链不断发展; 比如以太坊虚拟机(evm),就是以太坊智能合约(smart contract)的运行环境。 区块链虚拟机技术的发展也反映了区块链本身的发展。

5. 智能合约是一组协商好的代码,其执行是分布式的、可观察的和可验证的。 代码部署在一个公共账本上,智能合约可以维护自己的状态,控制自己的资产(即状态和代码一样,存储在账本上),也可以执行代码,响应输入信息。 智能合约在区块链上的执行是利用区块链本身的共识算法来保证合约执行结果的一致性。

6、现有技术中,区块链虚拟机在执行智能合约时,是同步执行的,即虚拟机执行智能合约,需要等待执行完成并返回结果后才能执行下一份合同或交易。 当前合约还没有执行完成,虚拟机处于等待状态。 也就是说,在访问本地不可用的冷数据(不经常访问的离线数据)或其他功能合约同步执行过程中无法及时得到反馈的情况下,区块链虚拟机仍然需要处于等待状态,导致合约执行的交易时间较长,影响合约的整体执行效率。

技术实现要素:

7、本发明的目的在于提供一种区块链虚拟机异步执行智能合约的方法及装置,能够在执行过程中遇到本地无法获取的冷数据或其他无法立即得到反馈的情况一份智能合约。 机器可以暂时暂停当前合约的执行,先执行其他合约,待数据准备好后恢复执行暂停的智能合约。

8、为实现上述目的,本发明的技术方案如下:

9、一种区块链虚拟机异步执行智能合约的方法,用于n个节点的区块链系统,包括以下步骤:

10、步骤s1:各节点从区块广播中获取未处理的交易交易,并按照打包的顺序依次执行未处理的交易交易;

11、步骤s2:在执行当前交易交易时以太坊虚拟机处理的事务,从该交易交易中解析得到payload数据;

12、步骤s3:从payload数据中解析函数和智能合约相关的API,准备调用当前交易的智能合约;

13、步骤s4:调用智能合约时,检查本地数据是否完整,如果是,则执行智能合约,返回执行成功或失败的结果,如果结果成功,则执行步骤s6; 若本地数据不完整,或智能合约执行返回执行失败结果,则执行步骤s5;

14、步骤s5:暂停当前智能合约,作为当前智能合约执行下一个智能合约或交易交易;

15、步骤s6:判断是否有未处理的交易或智能合约,如果有,执行步骤s1,如果没有,结束。

16、进一步地,在步骤s4中,将每个节点包含的本地数据分为冷数据和热数据; 其中,冷数据为离线类不常访问的数据,热数据为计算节点频繁访问的在线数据,每个节点存储完整的热数据和冷数据。

17、进一步地,在步骤s4中,将每个节点包含的本地数据分为冷数据和热数据。 其中,冷数据是离线类不常访问的数据,冷数据采用分布式存储,每个节点只存储一部分冷数据; 热点数据为计算节点频繁访问的在线数据,每个节点存储完整的热点数据; 当本地冷数据不完整时,向其他相邻节点请求获取完整的冷数据。

18、进一步的,所述步骤s5具体包括:

19、步骤s51:暂停当前智能合约,作为当前智能合约执行下一个智能合约或交易交易;

20、步骤s52:继续完成智能合约挂起的本地数据完整性工作;

21、步骤s53:判断待处理智能合约的本地数据是否完整,如果是,则判断当前智能合约或交易交易是否完成? 如果是,返回挂起的智能合约作为当前智能合约执行; 否则,作为当前智能合约依次执行下一个智能合约或交易交易。

22、进一步地,在步骤s4返回执行失败结果的情况下,当本地数据完整时,智能合约的执行在预定时间内没有结果反馈。

23、进一步的,智能合约中嵌套了另外一个智能合约。

24、从上述技术方案可以看出,本发明提出的区块链虚拟机异步执行智能合约的方法,可以有效提高合约执行效率,提高交易速度。

图纸说明

25、图1为本发明一个实施例的区块链虚拟机异步执行智能合约的方法流程示意图

26、图2为本发明实施例的第一种区块链数据存储方法示意图

27、图3为本发明实施例的第二种区块链数据存储方法示意图

28、图4为本发明实施例在本地没有完整冷数据时异步执行智能合约的流程示意图

29、图5为本发明实施例在本地数据完整但合约执行无反馈时的异步执行智能。

合约流程示意图

详细说明

30、下面结合附图1-5对本发明的具体实施方式作进一步详细说明。

31、需要说明的是,在以下具体实施例中,在对本发明实施例进行详细描述时,为了清楚地展示本发明的结构,以便于描述,附图中的结构均未按照一般规模。 进行了局部放大、变形和简化,因此不应理解为对本发明的限制。

32、本发明提出一种异步执行的区块链虚拟机智能合约执行方法。 在执行智能合约的过程中,当遇到访问本地冷数据、访问本地冷数据或其他无法立即得到反馈的情况时,区块链虚拟机可以暂时中止当前智能合约的执行,执行其他智能先执行合约,等数据准备好后再恢复执行被挂起的智能合约,可以有效提高智能合约执行效率,提高交易速度。

33. 请参考图。 参见图1,为本发明实施例中一种区块链虚拟机异步执行智能合约的方法流程示意图。 如图1所示,区块链虚拟机异步执行智能合约的方法,用于包含n个节点的区块链系统。 与现有技术相同,可以包括以下步骤:

34、步骤s1:各节点从区块广播中获取未处理的交易交易,按照打包的顺序依次执行未处理的交易交易;

35、步骤s2:在执行当前交易交易时,从该交易交易中解析得到payload数据;

36、步骤s3:从payload数据中解析函数和智能合约相关的API,准备调用本次交易的智能合约。

37、与现有技术不同,在本发明实施例中,异步执行智能合约的方法需要执行以下步骤:

38、步骤s4:调用智能合约时,检查本地数据是否完整,如果是,则执行智能合约,返回执行成功或失败的结果,如果结果成功,则执行步骤s6; 如果本地数据不完整,或者执行智能合约时返回执行失败的结果,则执行步骤s5。

39、在步骤s4中,将每个节点包含的本地数据分为冷数据和热数据; 其中,冷数据为线下不常访问的数据,例如一年前的交易数据、日志数据等; 热点数据是计算节点经常访问的在线数据。

40、在本发明的以下具体实现中,每个节点必须保持所有存储的数据可被智能合约访问,区块链系统可以有两种区块链存储方式:

41.①

1、每个节点存储完整的热数据和冷数据,所有数据默认存储在本地硬盘上。

42、请参阅图2,为本发明实施例的第一种区块链数据存储方法示意图。 如图2所示,以包含6个节点的区块链系统为例,每个节点都存储了大量相同的数据。 这种方式不兼容基于分布式存储的上层执行环境,大大增加了本地存储的开销。 ; 特别是当智能合约需要在本地搜索冷数据时,需要很长时间。

43.②

. 冷数据采用分布式存储,每个节点只存储一部分冷数据; 热点数据是计算节点经常访问的在线数据,每个节点存储完整的热点数据; 当本地冷数据不完整时,向其他相邻节点请求获取完整的冷数据。

44. 请参考图。 参见图3,为本发明实施例的第二种区块链数据存储方法的示意图。 如图3所示,以包含6个节点的区块链系统为例,每个节点存储和维护热数据,而冷数据则采用分布式存储,每个节点只存储一部分,即冷数据整个网络的数据分为3部分。 节点 1、节点 2、节点 3 各维护全网 1/3 的冷数据,并获得一份完整的冷数据进行分布式存储。 当其中一个节点需要查找历史冷数据,而本节点找不到时,可以向相邻节点请求冷数据,从而达到请求完整数据的目的。 同时,为了防止部分节点意外宕机而无法提供服务,分布式存储需要考虑容灾和备份的需求。 整个系统中的每一个冷数据在多重纠错码意义上都有多个副本或备份,即节点 4 、节点 5 和节点 6 各维护全网冷数据的1/3,同时也是分布式存储(备份)一个完整的冷数据。

45、在执行过程中,如果节点没有完整的冷数据信息,可以向其他相邻节点请求,可以大大节省存储成本。

46.因此,与上述方法1相同,当智能合约需要在本地搜索冷数据时,需要花费较长的时间,即在预定时间内收集到的本地数据是不完整的。 此时,执行步骤s5:暂停当前智能合约,作为当前智能合约执行下一个智能合约或交易。

47、 在本发明的一个实施例中, 所述步骤s5具体可以包括:

48、步骤s51:暂停当前智能合约,作为当前智能合约执行下一个智能合约或交易交易;

49、步骤s52:继续完成智能合约被挂起的本地数据完整性工作;

50、步骤s53:判断待处理智能合约的本地数据是否完整,若是则判断当前智能合约或交易交易是否完成? 如果是,返回挂起的智能合约作为当前智能合约执行; 否则,作为当前智能合约依次执行下一个智能合约或交易交易。

51、步骤s6:判断是否有未处理的交易或智能合约,如果有,执行步骤s1,如果没有,结束。

52、下面通过两个具体实施例对本发明作进一步详细说明。

53. 例 1

54. 请参考图。 参见图4,为本发明实施例在本地没有完整冷数据时异步执行智能合约的流程示意图。 如图4所示,当区块链虚拟机在执行智能合约时遇到访问本地不可用的冷数据时,会及时挂起当前智能合约,执行下一个合约或交易; 它会在本地数据准备好后恢复并执行挂起的智能合约,可以有效提高智能合约的执行效率。

55. 例 2

56. 请参考图。 参见图5,为本发明实施例在本地数据完整但合约执行无反馈时异步执行智能合约的流程示意图。 如图5所示,区块链虚拟机在执行智能合约时,如果在步骤s4中遇到返回执行失败的结果(即本地数据完整时,智能合约在预定的时间内执行)时间内没有结果反馈),及时暂停当前智能合约以太坊虚拟机处理的事务,执行下一个智能合约或交易时间; 等待本地数据准备好后再恢复执行挂起的智能合约,可以有效提高智能合约执行效率。

57、以上所述仅为本发明的优选实施例而已,所描述的实施例并不用于限制本发明的专利保护范围。 因此,凡是利用本发明的说明书和附图所做的等效结构变化,均具有同等效力。 应该包含在

在本发明的保护范围之内。

技术特点:

1. 一种区块链虚拟机异步执行智能合约的方法,用于包括n个节点的区块链系统,其特征在于,包括以下步骤: 步骤s1:每个节点获取未识别的用于处理的交易交易,按照打包的顺序依次执行未处理的transaction事务; 步骤s2:在执行当前交易transaction时,解析并获取transaction交易的payload数据; 步骤s3:从交易交易中获取payload数据; 解析payload数据中的函数和智能合约相关API,准备调用当前交易交易的智能合约; 步骤s4:调用智能合约时,检查本地数据是否完整,如果是,则执行智能合约返回执行成功或失败的结果。 如果得到成功结果,则执行步骤s6; 若本地数据不完整,或执行智能合约时返回执行失败的结果,则执行步骤s5; 步骤s5:暂停当前智能合约作为当前智能合约执行下一个智能合约或交易交易; 步骤s6:判断是否有未处理的交易交易或智能合约,如果有,执行步骤s1,如果没有,结束。 2.根据权利要求1所述的区块链虚拟机异步执行智能合约的方法,其特征在于,在步骤s4中,将每个节点包含的本地数据分为冷数据和热数据; 其中,冷数据是不常被访问的离线数据,热数据是计算节点频繁访问的在线数据,每个节点都存储了一组完整的热数据和冷数据。

3.根据权利要求1所述的区块链虚拟机异步执行智能合约的方法,其特征在于,在步骤s4中,将每个节点包含的本地数据分为冷数据和热数据; 其中,冷数据为离线不常访问的数据,冷数据采用分布式存储,每个节点只存储一部分冷数据; 热点数据是计算节点经常访问的在线数据,每个节点都存储完整的热点数据; 当本地冷数据不完整时,向其他相邻节点请求获取完整的冷数据。 4.根据权利要求2或3任一项所述的区块链虚拟机异步执行智能合约的方法,其特征在于,所述步骤s5具体包括: 步骤s51:暂停当前智能合约,与下一个智能合约或交易交易作为当前智能合约执行; 步骤s52:继续完成挂起智能合约的本地数据完整性工作; 步骤s53:判断挂起的智能合约系统本地数据是否完整? 如果有,判断当前智能合约或交易交易是否已经执行? 如果是,返回挂起的智能合约作为当前智能合约执行; 否则,作为当前智能合约依次执行下一个智能合约或交易交易。 5.根据权利要求1所述的区块链虚拟机异步执行智能合约的方法,其特征在于,所述步骤s4中返回执行失败的结果为:当本地数据完整时,智能合约在预定时间内执行,没有时间内结果反馈。 6.根据权利要求1所述的区块链虚拟机异步执行智能合约的方法,其特征在于,所述智能合约中嵌套调用另一个智能合约。

技术概要

一种区块链虚拟机智能合约的异步执行方法。 在智能合约执行过程中,当遇到访问本地冷数据、访问本地不可用的冷数据,或其他无法得到即时反馈的情况时,区块链虚拟机可以暂时中止当前智能合约的执行,先执行其他智能合约,待数据准备好后,再继续执行被挂起的智能合约。 因此,本发明能够有效提高智能合约的执行效率,提高交易速度。 提高交易速度。 提高交易速度。

技术研发人员:李晨星、杨光、张丰宇、龙帆、吴明、李佩伦

受保护技术用户:上海树图区块链研究院

技术研发日:2022.01.28

技术公告日期:2022/5/31