本技术涉及智能合约,特别是一种智能合约运行方法和装置。
背景技术:
1、智能合约(smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。但智能合约在运行过程中也存在被非法篡改的可能,因此,需要保证智能合约运行的安全性。
2、相关技术中,可以使用区块链技术来保证智能合约的安全性。由于区块链为封闭的环路,因此,区块链中的任何一个主体都可以存储一整套区块链账本,参与整个系统的数据处理过程。同时,区块链系统中的任一节点被摧毁都不会导致系统的数据丢失与功能瘫痪,可以保证智能合约的可用性与安全性。
3、但是上述方法中,由于智能合约通常以信息化数字的形式镶嵌在代码中,往往会存在一定漏洞,智能合约在运行过程中可能发生错误,智能合约运行的稳定性较差。
技术实现思路
1、鉴于上述问题,本技术实施例提供了一种智能合约运行方法、装置、电子设备和可读存储介质,以便克服上述问题或者至少部分地解决上述问题。
2、第一方面,本技术实施例提供了一种智能合约运行方法,所述方法包括:
3、响应于针对目标智能合约的合约运行请求指令,基于所述目标智能合约的合约信息,确定所述合约信息对应于各个合约信息类型的第一信息状态;
4、基于所述第一信息状态,确定所述目标智能合约的第一合约状态;
5、在所述第一合约状态为正常状态的情况下,在第一区块链中运行所述目标智能合约。
6、可选地,所述方法还包括:
7、在所述第一合约状态为异常状态的情况下,调用所述第一区块链中的区块链预言机,对第一信息状态为异常状态下的合约信息进行修复,得到修复后的目标智能合约;
8、在所述第一区块链中运行所述修复后的目标智能合约。
9、可选地,所述合约信息包括网络端口信息、操作系统接口信息和运行时间信息,所述基于所述目标智能合约的合约信息,确定所述合约信息对应于各个合约信息类型的第一信息状态,包括:
10、在所述网络端口信息对应的网络端口受限节点的节点响应超时的情况下,确定所述网络端口信息的第一信息状态为异常状态;
11、在所述网络端口受限节点的节点响应未超时的情况下,确定所述网络端口信息的第一信息状态为正常状态;
12、在所述操作系统接口信息对应的操作系统接口受限节点的节点响应超时的情况下,确定所述操作系统接口信息的第一信息状态为异常状态;
13、在所述操作系统接口受限节点的节点响应未超时的情况下,确定所述操作系统接口信息的第一信息状态为正常状态;
14、在所述运行时间信息对应的时间不一致节点的节点运行时间戳不一致的情况下,确定所述运行时间信息的第一信息状态为异常状态;
15、在所述节点运行时间戳均一致的情况下,确定所述运行时间信息的第一信息状态为正常状态。
16、可选地,所述在第一区块链中运行所述目标智能合约,包括:
17、获取各个节点类型分别对应的多个容器化节点的第一节点运行信息;其中,所述节点类型包括网络端口受限节点、操作系统接口受限节点、时间不一致节点和合约运行节点;
18、在所述第一节点运行信息相一致的情况下,在第一区块链中运行所述目标智能合约。
19、可选地,所述方法还包括:
20、从所述多个容器化节点中确定包含相同第一节点运行信息的第一节点的第一数量;
21、在所述第一数量的预设倍数大于或等于所述多个容器化节点的第二数量的情况下,判定所述第一节点运行信息相一致。
22、可选地,所述方法还包括:
23、在所述第一节点运行信息不一致的情况下,获取所述多个容器化节点中的随机函数;
24、删除所述随机函数,以对所述多个容器化节点进行修复,得到修复后的多个容器化节点;
25、获取各个节点类型对应的所述修复后的多个容器化节点的第二节点运行信息;
26、在所述第二节点运行信息相一致的情况下,在第一区块链中运行所述目标智能合约。
27、可选地,所述在第一区块链中运行所述目标智能合约,包括:
28、将所述目标智能合约导入第一区块链中的多个容器化节点中;
29、基于所述第一区块链中的区块链预言机,在所述多个容器化节点上运行所述目标智能合约。
30、可选地,所述基于所述第一区块链中的区块链预言机,在所述多个容器化节点上运行所述目标智能合约,包括:多个容器化节点上运行所述目标智能合约,包括:
31、基于所述第一区块链中的区块链预言机,向所述多个容器化节点下发第一时间戳和第一随机数;
32、将所述第一时间戳和第一随机数导入所述目标智能合约,得到更新后的目标智能合约;
33、在所述多个容器化节点上运行所述更新后的目标智能合约。
34、可选地,所述基于所述第一区块链中的区块链预言机,在所述多个容器化节点上运行所述目标智能合约,包括:
35、从所述多个容器化节点中确定所述目标智能合约所在的第一节点;
36、将所述第一节点中存储的所述目标智能合约对应的合约数据缓存到所述第一区块链中的区块链预言机中;
37、基于所述区块链预言机,将所述合约数据下发到所述多个容器化节点中除所述第一节点之外的其他节点中;
38、在所述多个容器化节点上运行所述目标智能合约。
39、第二方面,本技术实施例提供一种智能合约运行装置,所述装置包括:
40、第一确定模块,用于响应于针对目标智能合约的合约运行请求指令,基于所述目标智能合约的合约信息,确定所述合约信息对应于各个合约信息类型的第一信息状态;
41、第二确定模块,用于基于所述第一信息状态,确定所述目标智能合约的第一合约状态;
42、第一运行模块,用于在所述第一合约状态为正常状态的情况下,在第一区块链中运行所述目标智能合约。
43、可选地,所述装置还包括:
44、修复模块,用于在所述第一合约状态为异常状态的情况下,调用所述第一区块链中的区块链预言机,对第一信息状态为异常状态下的合约信息进行修复,得到修复后的目标智能合约;
45、第二运行模块,用于在所述第一区块链中运行所述修复后的目标智能合约。
46、可选地,所述合约信息包括网络端口信息、操作系统接口信息和运行时间信息,所述第一确定模块,包括:
47、第一确定子模块,用于在所述网络端口信息对应的网络端口受限节点的节点响应超时的情况下,确定所述网络端口信息的第一信息状态为异常状态;
48、第二确定子模块,用于在所述网络端口受限节点的节点响应未超时的情况下,确定所述网络端口信息的第一信息状态为正常状态;
49、第三确定子模块,用于在所述操作系统接口信息对应的操作系统接口受限节点的节点响应超时的情况下,确定所述操作系统接口信息的第一信息状态为异常状态;
50、第四确定子模块,用于在所述操作系统接口受限节点的节点响应未超时的情况下,确定所述操作系统接口信息的第一信息状态为正常状态;
51、第五确定子模块,用于在所述运行时间信息对应的时间不一致节点的节点运行时间戳不一致的情况下,确定所述运行时间信息的第一信息状态为异常状态;
52、第六确定子模块,用于在所述节点运行时间戳均一致的情况下,确定所述运行时间信息的第一信息状态为正常状态。
53、可选地,所述第一运行模块,包括:
54、获取子模块,用于获取各个节点类型分别对应的多个容器化节点的第一节点运行信息;其中,所述节点类型包括网络端口受限节点、操作系统接口受限节点、时间不一致节点和合约运行节点;
55、第一运行子模块,用于在所述第一节点运行信息相一致的情况下,在第一区块链中运行所述目标智能合约。
56、可选地,所述装置还包括:
57、第三确定模块,用于从所述多个容器化节点中确定包含相同第一节点运行信息的第一节点的第一数量;
58、判定模块,用于在所述第一数量的预设倍数大于或等于所述多个容器化节点的第二数量的情况下,判定所述第一节点运行信息相一致。
59、可选地,所述装置还包括:
60、第一获取模块,用于在所述第一节点运行信息不一致的情况下,获取所述多个容器化节点中的随机函数;
61、删除修复模块,用于删除所述随机函数,以对所述多个容器化节点进行修复,得到修复后的多个容器化节点;
62、第二获取模块,用于获取各个节点类型对应的所述修复后的多个容器化节点的第二节点运行信息;
63、第三运行模块,用于在所述第二节点运行信息相一致的情况下,在第一区块链中运行所述目标智能合约。
64、可选地,所述第一运行模块,包括:
65、导入子模块,用于将所述目标智能合约导入第一区块链中的多个容器化节点中;
66、第二运行子模块,用于基于所述第一区块链中的区块链预言机,在所述多个容器化节点上运行所述目标智能合约。
67、可选地,所述第二运行子模块,包括:
68、第一下发单元,用于基于所述第一区块链中的区块链预言机,向所述多个容器化节点下发第一时间戳和第一随机数;
69、导入单元,用于将所述第一时间戳和第一随机数导入所述目标智能合约,得到更新后的目标智能合约;
70、第一运行单元,用于在所述多个容器化节点上运行所述更新后的目标智能合约。
71、可选地,所述第二运行子模块,包括:
72、确定单元,用于从所述多个容器化节点中确定所述目标智能合约所在的第一节点;
73、缓存单元,用于将所述第一节点中存储的所述目标智能合约对应的合约数据缓存到所述第一区块链中的区块链预言机中;
74、第二下发单元,用于基于所述区块链预言机,将所述合约数据下发到所述多个容器化节点中除所述第一节点之外的其他节点中;
75、第二运行单元,用于在所述多个容器化节点上运行所述目标智能合约。
76、第三方面,本技术实施例提供一种电子设备,包括存储器、处理器及存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序以实现如上任意一项所述的智能合约运行方法。
77、第四方面,本技术实施例提供一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如上任意一项所述的智能合约运行方法。
78、具体的有益效果在于:
79、本技术实施例通过响应于针对目标智能合约的合约运行请求指令,基于目标智能合约的合约信息,确定合约信息对应于各个合约信息类型的第一信息状态,基于第一信息状态,确定目标智能合约的第一合约状态,在第一合约状态为正常状态的情况下,在第一区块链中运行目标智能合约,可以根据目标智能合约的合约信息对应于各个合约信息类型的第一信息状态确定目标智能合约的第一合约状态,并且可以在智能合约的第一合约状态为正常状态的情况下,在第一区块链中运行目标智能合约,一定程度上降低了智能合约存在漏洞的可能性,提升了智能合约运行的稳定性。
1.一种智能合约运行方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述合约信息包括网络端口信息、操作系统接口信息和运行时间信息,所述基于所述目标智能合约的合约信息,确定所述合约信息对应于各个合约信息类型的第一信息状态,包括:
4.根据权利要求1所述的方法,其特征在于,所述在第一区块链中运行所述目标智能合约,包括:
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1所述的方法,其特征在于,所述在第一区块链中运行所述目标智能合约,包括:
8.根据权利要求7所述的方法,其特征在于,所述基于所述第一区块链中的区块链预言机,在所述多个容器化节点上运行所述目标智能合约,包括:
9.根据权利要求7所述的方法,其特征在于,所述基于所述第一区块链中的区块链预言机,在所述多个容器化节点上运行所述目标智能合约,包括:
10.一种智能合约运行装置,其特征在于,所述装置包括:
