[发明专利]一种智能合约代码相似检测方法在审
申请号: | 202110695693.0 | 申请日: | 2021-07-29 |
公开(公告)号: | CN113312268A | 公开(公告)日: | 2021-08-27 |
发明(设计)人: | 王荣;蔡维德 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/41;G06K9/62 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 智能 合约 代码 相似 检测 方法 | ||
本发明公开了一种智能合约代码相似检测方法,包括以下:(1)构建智能合约源码库(2)为每个智能合约生成智能合约抽象语法树(AST)(3)基于AST提取变量序列和变量之间的依赖关系(4)构建智能合约语义图(5)将智能合约源码、语义图输入Bert预训练模型(6)构建智能合约源码库向量矩阵数据库(7)利用学习到的智能合约向量与智能合约源码库向量矩阵进行相似度计算(8)生成相似度检测报告。该方法能够自动学习智能合约代码特征,实现对智能合约代码相似进行自动检测。
技术领域
本发明涉及针对区块链领域,特别是涉及一种智能合约代码相似检测方法。
背景技术
智能合约数量与日俱增,开发人员开始习惯于复制这些代码库中已有的源码来提高开发效率,但是智能合约安全问题最为常见、最为灵活,其造成的损失也最不可控。复制代码容易出现无法预料的程序漏洞,而降低程序或软件的可靠性和安全性。近年来出现出了多种关于智能合约相似代码检测的方法和工具,但是目前现有智能合约相似代码检测的方法大多是基于语法模型,依赖于源代码的文本信息而忽略了语法结构信息,从而造成了源代码语法和语义信息的丢失,同时也遗漏了许多相似特征。
BERT是2018年10月由Google AI研究院提出的一种预训练模型,提供一个供其它任务迁移学习的模型,该模型可以根据任务微调或者固定之后作为特征提取器。
发明内容
针对上述现有技术存在的问题,本发明提出了一种智能合约代码相似检测方法。
为了解决上述技术问题,本发明通过下述技术方案得以解决:
一种智能合约代码相似检测方法,包括如下步骤:
S01、构建智能合约源码库;
S02、为每个智能合约生成智能合约抽象语法树(AST);
S03、基于AST提取变量序列和变量之间的依赖关系;
S04、构建智能合约语义图;
S05、将智能合约源码、语义图输入Bert预训练模型;
S06、构建智能合约源码库向量矩阵;
S07、利用学习到的智能合约向量与智能合约源码库向量矩阵进行相似度计算;
S08、生成相似度检测报告。
具体的,所涉及智能合约可以是公有链、联盟链或私有链,根据不同类别智能合约创建不同的智能合约源码库,智能合约源码库由智能合约源码构成。生成智能合约抽象语法树,可以采用开源的智能合约抽象语法树工具,也可以是利用智能合约编译工具来实现抽象语法树提取。基于AST提取变量序列和变量之间的依赖关系,是通过对AST节点进行递归遍历提取变量序列和变量之间的依赖关系。智能合约语义图是由变量序列和变量之间的依赖关系组成的图数据结构,变量序列中每个变量是智能合约语义图中的节点,变量之间的依赖关系是智能合约语义图中的边。Bert预训练模型,可以是原始Bert预训练模型,也可以是其他类型的Bert预训练模型。智能合约源码库向量矩阵构建,是通过将智能合约源码、智能合约语义图输入Bert预训练模型得到的动态向量构成的智能合约源码库向量矩阵。相似度计算,可以是点积或余弦相似度计算。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本发明的目标及特征考虑到如下结合附图的描述将更加明显,附图中:
图1为本发明所述的一种智能合约代码相似检测方法流程示意图。
图2为本发明所述的基于AST提取变量序列和变量之间的依赖关系示意图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110695693.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种电能替代潜力预测方法及系统
- 下一篇:一种环保实木复合门及其制备方法