[发明专利]一种基于深度学习的区块链智能合约漏洞检测方法及装置有效
申请号: | 201910258822.2 | 申请日: | 2019-04-01 |
公开(公告)号: | CN109977682B | 公开(公告)日: | 2023-04-07 |
发明(设计)人: | 郑子彬;肖一土 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06N3/0442;G06N3/08 |
代理公司: | 广州粤高专利商标代理有限公司 44102 | 代理人: | 林丽明 |
地址: | 510275 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 深度 学习 区块 智能 合约 漏洞 检测 方法 装置 | ||
1.一种基于深度学习的区块链智能合约漏洞检测方法,其特征在于,包括如下步骤:
S10抽取H个智能合约的源代码,将源代码规则对齐并对其用户自定义函数/变量依顺序标注漏洞t,共有n个漏洞,t为当前漏洞,1≤t≤n;
S20将行列代码输入循环神经网络模型,输出深度神经网络可识别的语言词向量X,其中包括由n个漏洞的发生判断形成的漏洞发生判断集M={m1,m2,…,mt,…,mn},所述循环神经网络模型为BiLTSM网络模型,将行列代码输入Bilstm网络模型,输出深度神经网络可识别的语言词向量X,其中:Bilstm网络的ForWard层按漏洞顺序正向计算得到每个漏洞向前隐含层的输出ht=f(W1Xt+W2ht-1),Bilstm网络的BackWard层按漏洞顺序反向计算得到每个漏洞向后隐含层的输出ht′=f(W3Xt+W5ht-1),结合ht和ht′通过第t个漏洞的发生判断mt=g(W4ht+W6ht′)得到漏洞发生判断集M={m1,m2,…,mt,…,mn};其中,ht表示第t个漏洞正向计算结果,ht′表示第t个漏洞反向计算结果;f为sigmod激活函数,g为relu激活函数;将行列代码编译成等长的二进制代码后,将其输入Wide网络模型训练,输出字节码模型,其中包括通过Wide网络的隐含层函数yt=g(Wi XWide+BWide)得到wide网络的漏洞预测集Y={y1,y2,...,yn},其中g为relu激活函数,XWide为输入字节码,W1、W2、W3、W4、W5、W6均为预设权重,Wi表示第i个预设权重,i=1,2,3,4,5,6;BWide为预设偏置值;
S30将语言词向量X和字节码模型输入深度神经网络的激活层训练以获取深度神经网络概率预测pt,计算公式为:pt=f(Wdeep[mt]+W Wide[yt]+BWide),其中,W Wide取与m相乘的权重参数,Wdeep取与y相乘的权重参数;
S40求预测值与其对应的漏洞标注的偏差以获取当前模型误差Loss,当前模型误差的公式为其中s为漏洞标注,无漏洞取0,有漏洞取1,为单个合约的误差值,H为当前取样训练的全体合约数量,采用梯度下降公式:W=W-α*loss*u迭代训练,以将预设权重修正为误差小于预定数值的W,其中α为用于控制训练速度和效果的训练因子,u为X、mt或yt,loss*u为梯度,梯度的方向指明了误差扩大的方向。
2.如权利要求1所述的基于深度学习的区块链智能合约漏洞检测方法,其特征在于,所述S30之后,所述S40之前还包括:
S01对每份智能合约进行评分,评分公式:
S02若评分结果Q小于预定阈值,则对该智能合约的源代码重新标注漏洞然后进入S20;若所有的评分结果Q大于预定阈值,则输出检测结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910258822.2/1.html,转载请声明来源钻瓜专利网。