[发明专利]一种基于句法树匹配的智能合约相似性检测方法有效

专利信息
申请号: 202110569353.3 申请日: 2021-05-25
公开(公告)号: CN113177107B 公开(公告)日: 2022-05-27
发明(设计)人: 刘振广;徐小俊;钱鹏;刘灵凤;武思凡 申请(专利权)人: 浙江工商大学
主分类号: G06F16/33 分类号: G06F16/33;G06F40/211;G06F40/253;G06F40/30
代理公司: 杭州天勤知识产权代理有限公司 33224 代理人: 王琛
地址: 310018 浙江*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 句法 匹配 智能 合约 相似性 检测 方法
【权利要求书】:

1.一种基于句法树匹配的智能合约相似性检测方法,包括如下步骤:

(1)构建抽象语法树:针对以太坊智能合约为研究对象,利用语法树抽取工具从智能合约源码中提取抽象语法树;

(2)构建句法树序列:以智能合约代码段Z1和Z2为拟检测的合约克隆对,利用语法树抽取工具得到Z1和Z2对应的抽象语法树F1和F2,将F1和F2按照相应的语句进行拆分并通过先序遍历对应得到句法树序列S1和S2,具体实现方式为:首先,利用语法树抽取工具将智能合约代码段Z1和Z2提取为抽象语法树F1和F2;然后按照语句层次对F1和F2进行拆分,通过先序遍历得到句法树序列S1={fi∈F1|f1,...,fm}和S2={fj∈F2|f1,...,fk},其中每一棵句法树对应智能合约中的一条语句,即Z1和Z2分别含有m条和k条语句,i和j为自然数且1≤i≤m,1≤j≤k;

特别地,对于嵌套语句,需要定义一系列独立的节点Ns={block,body},其中block用于拆分嵌套语句的header和body,body用于方法声明;以节点s为根的句法树由s及其所有的后代节点D(s)组成,如果节点s和d之间存在一条路径通过n,即意味着节点d为包含于s的body中的某条语句,其中d∈D(s),n∈Ns;

(3)句法树特征提取:构建基于Attention机制的句法树编码器,提取句法树序列S1和S2中每个句法树对应的特征向量,进一步得到句法树序列S1的特征向量集合以及句法树序列S2的特征向量集合其中n表示向量的维度,m和k分别表示S1和S2中的句法树个数,具体实现方式如下:

首先,利用word2vec工具将需要编码的句法树中的所有节点转换为对应的向量表示,得到向量序列X={x1,...,xm},将X作为句法树编码器的输入,m为句法树中的节点数量;

然后,构建基于Attention的句法树编码器,学习序列X中各向量之间的语义关系,经过多层迭代学习,获得与输入向量序列X对应的语义化向量序列Y={y1,...,ym};

最后,将序列Y中的所有向量输入卷积池化层中,生成句法树对应的特征向量;

(4)相似性计算:利用皮尔逊相似性算法计算中各向量与中各向量之间的相似度,得到合约相似度矩阵Tm×k,其中Tm×k中第i行第j列元素值即表示S1中第i个句法树与S2中第j个句法树的相似度,具体实现方式为:将中的向量pi与中的向量pj代入以下相似度计算函数中,得到pi与pj的相似值tij即sim(pi,pj);

其中:pit表示向量pi中的第t个元素值,表示向量pi中的元素平均值,pjt表示向量pj中的第t个元素值,表示向量pj中的元素平均值,tij为矩阵Tm×k中的第i行第j列元素值,即表示代码段Z1对应句法树序列S1中的第i个句法树与代码段Z2对应句法树序列S2中的第j个句法树的相似度;

(5)合约相似性检测:设定阈值a1和a2,将矩阵Tm×k中高于a1的元素值保持不变,低于a1的元素值置零,计算矩阵中所有非零元素的平均值M,该平均值即为智能合约代码段Z1与Z2的相似度,进而比较M与a2的大小,判断合约代码段Z1与Z2是否相似,具体实现方式如下:

首先,设定阈值a1和a2,其中a1用于过滤合约相似度矩阵中相似值偏低的元素,a2用于判断两个代码段是否相似;

然后,将矩阵Tm×k中高于a1的元素值保持不变,低于a1的元素值置零,计算矩阵中所有非零元素的平均值M,该平均值即为智能合约代码段Z1与Z2的相似度;

最后,比较M与a2的大小,判断Z1与Z2的相似性:如果M≥a2,则表示Z1与Z2具有相似性,否则Z1与Z2不具有相似性;

(6)可解释性分析:若矩阵Tm×k中第i行第j列元素值为矩阵中的最大元素值,则代表S1中第i个句法树与S2中第j个句法树的相似度最高,进而即可定位合约代码段Z1与Z2存在相似性的具体代码行,具体实现方式为:首先,通过比较矩阵Tm×k中的元素值大小,可以锁定其中一些数值较高的元素,并得到这些元素在矩阵中的位置;具体地,矩阵Tm×k中第i行第j列的值即表示S1中的第i个句法树与S2中第j个句法树的相似度,若是该相似度值大于设定阈值,则表示智能合约代码段Z1中的第i个语句与Z2中的第j个语句高度相似,以此可以锁定至智能合约中具体的代码行,从而给出智能合约相似性检测的可解释性。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江工商大学,未经浙江工商大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202110569353.3/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top