智能合约代码陷阱识别方法、装置及设备

文档序号:37747603发布日期:2024-04-25 10:34阅读:9来源:国知局
智能合约代码陷阱识别方法、装置及设备

本技术涉及陷阱检测,更具体地说,涉及一种智能合约代码陷阱识别方法、装置及设备。


背景技术:

1、智能合约是区块链技术的一种应用方式,是互不信任的参数者之间的计算机协议,是无需信任且可自执行的程序,在金融行业有着广泛应用。但不少欺诈者利用智能合约的不可篡改性及账户匿名性,在智能合约中设置去中心化合约陷阱,给不少用户造成巨大的经济损失。其中,去中心化合约陷阱(decentralized contract traps,dct),指的是在去中心化金融(defi)智能合约中,不道德的开发者可能会插入的一些代码片段,这些代码片段允许合约的所有者通过不正当手段从不知情的合约用户那里获取不公平的利润。

2、基于此,越来越多的研究者开始关注智能合约的代码陷阱检测问题。现有技术中,研究者从机器学习的角度,采用神经网络模型检测代码陷阱,但神经网络模型的建模过程中,需要不断学习包含有多种代码陷阱的训练集,但智能合约更新频率较快、数据量较多,导致训练集具有一定的滞后性,神经网络模型难以与时俱进,以至于检测精确度较低。


技术实现思路

1、有鉴于此,本技术提供了一种智能合约代码陷阱识别方法、装置及设备,用于解决现有技术中检测精确度较低的缺点。

2、为了实现上述目的,现提出的方案如下:

3、一种智能合约代码陷阱识别方法,包括:

4、获取待测智能合约的合约源码文件、创建字节码creation opcode及运行字节码runtime opcode;

5、对所述creation opcode进行符号执行,确定所述待测智能合约的存储槽及合约权限所有者;

6、对所述runtime opcode进行符号执行,生成所述待测智能合约的控制流图cfg及合约指令;

7、解析所述合约源码文件,构建抽象语法树ast;

8、基于所述存储槽、所述合约权限所有者、所述cfg、所述合约指令及所述ast,检测所述待测智能合约中是否存在合约陷阱dct。

9、可选的,获取待测智能合约的creation opcode及runtime opcode,包括:

10、将所述待测智能合约的合约源码文件编译为字节码,并将所述字节码反汇编为操作码;

11、将所述操作码分割为creation opcode及runtime opcode。

12、可选的,所述基于所述存储槽、所述合约权限所有者、所述cfg、所述合约指令及所述ast,检测所述待测智能合约中是否存在合约陷阱dct,包括:

13、基于所述存储槽及所述合约指令,检测所述待测智能合约中是否存在虚假转账陷阱ts;

14、基于所述存储槽、所述合约权限所有者、所述cfg及所述合约指令,检测所述待测智能合约中是否存在存储变化权限陷阱ssp;

15、基于所述存储槽、所述合约权限所有者、所述cfg及所述合约指令,检测所述待测智能合约中是否存在超级转账权限陷阱stp;

16、基于所述存储槽、所述合约权限所有者、所述cfg及所述合约指令,检测所述待测智能合约中是否存在自毁权限陷阱sp;

17、基于所述ast,检测所述待测智能合约中是否存在伪造转账陷阱ft。

18、可选的,所述基于所述存储槽及所述合约指令,检测所述待测智能合约中是否存在虚假转账陷阱ts,包括:

19、分析所述合约指令,确定所述待测智能合约是否存在转账行为;

20、若存在转账行为,则分析所述合约指令,判断所述待测智能合约是否存在检测转账结果的行为;

21、若不存在检测转账结果的行为,则分析所述存储槽及所述合约指令,确定所述待测智能合约是否存在修订内存余额的行为;

22、若存在修订内存余额的行为,则确定所述待测智能合约中存在虚假转账陷阱ts。

23、可选的,所述基于所述存储槽、所述合约权限所有者、所述cfg及所述合约指令,检测所述待测智能合约中是否存在存储变化权限陷阱ssp,包括:

24、基于所述cfg、所述合约权限所有者及所述合约指令,确定所述合约指令中是否存在获取合约权限所有者地址的行为以及获取合约调用者地址的行为;

25、若存在获取合约权限所有者地址及合约调用者地址的行为,则基于所述cfg,确定所述合约指令中是否存在评估所述合约权限所有者地址及所述合约调用者地址相似性的行为;

26、若存在评估相似性的行为,则分析所述cfg及所述存储槽,判断所述待测智能合约是否存在修订所述存储槽中存储变量的行为;

27、若存在修订存储变量的行为,则确定所述待测智能合约中存在存储变化权限陷阱ssp。

28、可选的,所述基于所述存储槽、所述合约权限所有者、所述cfg及所述合约指令,检测所述待测智能合约中是否存在超级转账权限陷阱stp,包括:

29、基于所述cfg、所述合约权限所有者及所述合约指令,确定所述合约指令中是否存在获取合约权限所有者地址的行为以及获取合约调用者地址的行为;

30、若存在获取合约权限所有者地址及合约调用者地址的行为,则基于所述cfg,确定所述合约指令中是否存在评估所述合约权限所有者地址及所述合约调用者地址相似性的行为;

31、若存在评估相似性的行为,则分析所述cfg及所述存储槽,判断所述待测智能合约是否存在转账行为;

32、若存在转账行为,则确定所述待测智能合约中存在超级转账权限陷阱stp。

33、可选的,所述基于所述存储槽、所述合约权限所有者、所述cfg及所述合约指令,检测所述待测智能合约中是否存在自毁权限陷阱sp,包括:

34、基于所述cfg、所述合约权限所有者及所述合约指令,确定所述合约指令中是否存在获取合约权限所有者地址的行为以及获取合约调用者地址的行为;

35、若存在获取合约权限所有者地址及合约调用者地址的行为,则基于所述cfg,确定所述合约指令中是否存在评估所述合约权限所有者地址及所述合约调用者地址相似性的行为;

36、若存在评估相似性的行为,则分析所述cfg及所述存储槽,判断所述待测智能合约是否存在自毁行为;

37、若存在自毁行为,则确定所述待测智能合约中存在自毁权限陷阱sp。

38、可选的,所述基于所述ast,检测所述待测智能合约中是否存在伪造转账陷阱ft,包括:

39、对所述ast进行广度优先算法递归遍历,确定所述待测智能合约的所有依赖关系;

40、基于各个依赖关系,构建合约调用图ccg;

41、解析所述ccg,判断所述待测智能合约中是否存在用于转账的孤立子合约;

42、若存在,则确定所述待测智能合约中存在伪造转账陷阱ft。

43、一种智能合约代码陷阱识别装置,包括:

44、获取模块,用于获取待测智能合约的合约源码文件、创建字节码creation opcode及运行字节码runtime opcode;

45、确定模块,用于对所述creation opcode进行符号执行,确定所述待测智能合约的存储槽及合约权限所有者;

46、生成模块,用于对所述runtime opcode进行符号执行,生成所述待测智能合约的控制流图cfg及合约指令;

47、构建模块,用于解析所述合约源码文件,构建抽象语法树ast;

48、检测模块,用于基于所述存储槽、所述合约权限所有者、所述cfg、所述合约指令及所述ast,检测所述待测智能合约中是否存在合约陷阱dct。

49、一种智能合约代码陷阱识别设备,包括存储器和处理器;

50、所述存储器,用于存储程序;

51、所述处理器,用于执行所述程序,实现上述的智能合约代码陷阱识别方法的各个步骤。

52、一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现上述的智能合约代码陷阱识别方法的各个步骤。

53、从上述技术方案可以看出,本技术提供了一种智能合约代码陷阱识别方法,该方法可以获取待测智能合约的合约源码文件、创建字节码creation opcode及运行字节码runtime opcode;基于此,本技术可以综合待测智能合约的合约源码文件、creationopcode及runtime opcode进行陷阱检测;对所述creation opcode进行符号执行,确定所述待测智能合约的存储槽及合约权限所有者;对所述runtime opcode进行符号执行,生成所述待测智能合约的控制流图cfg及合约指令;解析所述合约源码文件,构建抽象语法树ast;实际上,控制流图代表了一个程序执行过程中会遍历到的所有路径,因而,可以通过待测智能合约的控制流图反映待测智能合约在执行过程中的所有路径,合约指令可以反映待测智能合约的指令传输情况,因而,通过控制流图及合约指令可以获知待测智能合约的运行情况;通过存储槽及合约权限所有者可以获知待测智能合约的创建情况,而ast抽象语法结构的树状表示,因而,待测智能合约的ast以树的形式清晰地表达了待测智能合约源代码中的语法结构,反映了待测智能合约源代码的结构层次;基于所述存储槽、所述合约权限所有者、所述控制流图cfg、所述合约指令及所述ast,检测所述待测智能合约中是否存在合约陷阱dct,基于此,本技术可以综合待测智能合约的运行情况、创建情况及结构层次对待测智能合约的合约陷阱进行检测,避免了训练集的滞后性对检测精确度的影响。可见,本技术可以综合存储槽、合约权限所有者、cfg、合约指令及ast对合约陷阱进行检测,综合多重数据检测合约陷阱,提高了本技术陷阱检测的准确度;确定待测智能合约中是否可能存在侵害合约用户权益的合约陷阱,能够进一步保障合约用户的权益;相较于现有技术中本技术不需要利用训练集,避免了训练集的滞后性对检测精确度的影响。

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