基于制造技术

技术编号:39751200 阅读:25 留言:0更新日期:2023-12-17 23:49
本发明专利技术公开了一种基于

【技术实现步骤摘要】
基于Tree

LSTM和BiLSTM的智能合约漏洞检测方法及系统


[0001]本专利技术属于智能合约安全领域,涉及深度学习技术,具体涉及一种基于
Tree

LSTM

BiLSTM
的智能合约漏洞检测方法及系统


技术介绍

[0002]区块链是一种融合多种现有技术的新型分布式计算和存储范式,具有透明性

不可篡改

可溯源

去中心等特点

智能合约指的是一段可以在区块链平台上自动运行的代码,用于描述并且自动执行一份合约

智能合约能够在不需要第三方监督的情况下被强制地执行,使人们能够在不可信的环境中进行安全可靠的交易

以太坊是当前影响力最大的开源区块链平台
,
也是目前为止智能合约数量最多

漏洞类型最多

漏洞造成损失最大的区块链平台

目前以太坊上书写智能合约的主要编程语言是...

【技术保护点】

【技术特征摘要】
1.
一种基于
Tree

LSTM

BiLSTM
的智能合约漏洞检测方法,其特征在于,包括如下步骤:
S1
:收集数据形成智能合约数据集,且进行数据处理;
S2
:使用语法解析器对步骤
S1
数据处理后的智能合约源代码进行解析得到
AST
,并对
AST
进行处理;
S3
:对步骤
S1
数据处理后的智能合约源代码文本进行程序切片规范化以及文本分词处理,训练并保存词嵌入模型
word2vec

S4
:使用构建好的
Tree

LSTM
模型对步骤
S2
中处理好的
AST
进行特征提取,得到语法特征向量;使用构建好的
BiLSTM+Attention
模型对步骤
S3
中处理好的程序切片文本进行特征提取,得到语义特征向量;
S5
:将语法特征向量和语义特征向量进行融合,利用分类器网络根据融合后的特征向量进行智能合约源代码的漏洞检测
。2.
根据权利要求1所述的一种基于
Tree

LSTM

BiLSTM
的智能合约漏洞检测方法,其特征在于,所述步骤
S1
具体包括如下步骤:
A1
:使用网络爬虫从
Github

Estherscan
收集智能合约源代码;
A2
:对合约源代码进行标记,并进行人工检查;
A3
:清除源代码中的注释和非
ASCII
码字符;
A4
:根据漏洞的特征找到程序中的关键语句和包含关键语句的关键方法,再找到所有直接调用或嵌套调用关键方法的方法与关键方法组成一个方法集合,找到方法集合中所有方法依赖和间接依赖的变量,作为变量集合;
A5
:根据步骤
A4
中获得的方法集和变量集合对智能合约源代码进行提取;
A6
:使用
python
自带的
difflib
库对步骤
A5
中获得的程序切片文本进行文本相似度检查,舍弃相似度过高的程序切片
。3.
根据权利要求2所述的一种基于
Tree

LSTM

BiLSTM
的智能合约漏洞检测方法,其特征在于,所述步骤
S2
具体包括如下步骤:
B1
:使用
ANTLR
语法解析器对步骤
A6
得到的程序切片进行解析得到抽象语法树的解析类;
B2
:深度遍历抽象语法树的每一个节点,为每一个节点编号,仅使用节点的类型来表示节点,并且将抽象语法树以邻接表的形式存储;
B3
:根据统计邻接表中的词的出现次数,创建词典,词典中存储的是词和词对应的索引;
B4
:从叶子节点开始迭代计算每个节点的计算顺序,使用一个数组存储计算顺序,遍历邻接表设所有叶子节点为已计算节点,并设计算顺序为0,再次遍历邻接表将所有子节点都为已计算节点的节点设为已计算节点,并设计算顺序为1,循环迭代直到邻接表中所有的节点都计算完成,最后将数组与邻接表一同存储
。4.
根据权利要求1所述的一种基于
Tree

LSTM

BiLSTM
的智能合约漏洞检测方法,其特征在于,所述步骤
S3
具体包括如下步骤:
C1
:合约规范化,将程序切片中的函数名称替换为
FUN{#}
,其中
#
表示数字,将程序切片
中的变量名称替换为
VAR{#}
,其中
#
表示数字;
C2
:对程序切片进行分词;
C3
:将程序...

【专利技术属性】
技术研发人员:张鹏程唐凌军李雯睿吉顺慧楚涵婷王萧
申请(专利权)人:南京晓庄学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1