智能合约可信性证明方法、装置、设备及存储介质

文档序号:34263693发布日期:2023-05-25 05:31阅读:49来源:国知局
智能合约可信性证明方法、装置、设备及存储介质

本发明涉及信息安全,尤其涉及一种智能合约可信性证明方法、装置、设备及存储介质。


背景技术:

1、区块链因其去中心化、不可篡改等优点得到了广泛应用,智能合约作为扩展区块链的关键技术,不仅赋予了区块链底层逻辑的可编程性,还封装了区块链网络中各节点的复杂交互行为,扩展了区块链的功能。然而,智能合约作为代码无法避免漏洞,恶意攻击者可以利用智能合约中隐藏的安全漏洞创建恶意合约破坏智能合约的正确执行。恶意合约一旦发布,将会对区块链网络造成严重的损害。据不完全统计,在区块链网络遭受到的攻击数量中,来自智能合约的攻击数量占较大比例,因此,提高区块链网络的安全性刻不容缓。

2、可信并不等同于安全,但可信是安全的基础,现有的提高区块链网络安全性的方法,均无法保证智能合约的行为可信性。例如,公开号为cn114896604的专利提出了一种“智能合约与链环境交互漏洞检测方法、系统、设备及介质”,公开号为cn111581047a的专利提出了“一种针对智能合约行为的监管方法”,前者在生成智能合约行为模型时,采用合约字节码反推函数信息的方法,根据行为模型生成任意的事务序列,并未考虑函数的执行顺序;并且,该方案只考虑了合约交互时事务的状态转移,未考虑单个合约可信性,因此无法很好的保障合约行为的可信性。后者针对智能合约行为的监管方法,将现实中的监管规则和代监管主体的状态转变为推理形式系统中的数字化监管规则,无法检测出像可重入合约这种符合每一个监管规则,但整体行为序列不符合要求的情况,因此,同样无法保证智能合约的行为可信性。


技术实现思路

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、本发明提供的智能合约可信性证明方法、装置、设备及存储介质,通过获取对区块链系统中的智能合约的调用交易请求,并生成所述智能合约对应的第一行为序列;基于第一行为序列对智能合约的行为可信性进行验证,得到第一验证结果;将调用交易请求写入所述区块链系统中的目标区块中,并在区块链系统中广播调用交易请求;接收所述区块链系统中的各目标节点对所述智能合约的行为可信性的第二验证结果;根据第一验证结果和第二验证结果,确定智能合约的可信性。基于智能合约的行为序列,通过区块链的共识机制对合约行为进行可信验证,防止恶意合约行为对区块链系统进行恶意攻击,通过保障合约行为的可信性,提高了区块链系统的安全性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1