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