一种对区块链智能合约脆弱性检测的方法技术

技术编号:36708027 阅读:23 留言:0更新日期:2023-03-01 09:32
本发明专利技术公开了一种对区块链智能合约脆弱性检测的方法,通过提取智能合约的有效特征及训练多标签分类模型,实现对整数上溢、整数下溢、交易顺序依赖、为检查返回值、时间戳依赖和代码重入六种智能合约漏洞准确且高效的自动化检测。化检测。化检测。

【技术实现步骤摘要】
一种对区块链智能合约脆弱性检测的方法


[0001]本专利技术涉及区块链
,尤其涉及一种对区块链智能合约脆弱性检测的方法。

技术介绍

[0002]智能合约的本质其实是一段代码,通过一定的事件驱动,利用协议和用户接口完成合约的自动执行。在协议制定和部署完后,无需任何外设或人为干预,即可实现自我执行和验证,并在执行后会产生相应的可被验证的证据,以确保合约的有效性。区块链因为其具有的弱中心化、不可篡改、公开透明等优势,使其可以在不需要可信第三方机构的情况下,让互不信任的节点相互之间能够直接进行价值的流通,这不仅降低了交易的信任成本,也极大缩短了交互时间,它被看作是实现“信息互联网”转变至“价值互联网”的关键技术。当前区块链智能合约面临着约多类安全漏洞的威胁,通过传统形式化验证手段,检测漏洞的准确性和及检测效率不高,需要结合其他手段提高其检测的准确率及检测效率。

技术实现思路

[0003]本专利技术的目的就在于为了解决上述问题而提供一种对区块链智能合约脆弱性检测的方法,本专利技术通过引入机器学习算法实现自动化合约漏洞检测,保证合约漏洞检测的准确率的同时提高检测的效率。
[0004]本专利技术通过以下技术方案来实现上述目的:
[0005]一种对区块链智能合约脆弱性检测的方法,包括以下步骤:
[0006]步骤1,智能合约的数据采集及标注;采集大量经过验证的智能合约数据并标注标签;
[0007]步骤2,数据预处理:通过预处理阶段,将源代码转换为抽象的操作码数据流;
[0008]步骤3,特征提取:操作码中提取多维特征,构建特征矩阵;
[0009]步骤4,漏洞样本训练;实现对漏洞样本及样本数量平衡;
[0010]步骤5,多标签分类器;实现对原始数据集、平衡数据集上分别训练多标签分类器;
[0011]步骤6,指标评价:对多标签分类器进行评价,并最终确定检测智能合约漏洞效果最好的多标签分类模型的最优方式。
[0012]进一步方案为,所述步骤1中,对爬取的Solidity源码、Solidity版本、合约地址等数据进行标注,构建多标签智能合约数据集。
[0013]进一步方案为,所述步骤2中,在数据预处理阶段,通过源码编译、字节码解析和操作码抽象化处理三个步骤将源代码转换为抽象的操作码数据流,为后续特征提取做好了铺垫。
[0014]进一步方案为,所述步骤3中,通过n

gram算法从抽象化的合约操作码中提取多维bigram特征,并根据特征值计算公式计算bigram特征值,构建特征矩阵;再采用Onevs.Rest策略对智能合约进行多标签分类;
[0015]对于交易顺序依赖漏洞、未检查返回值漏洞、时间戳依赖漏洞和代码重入漏洞,若训练集类间样本数量不平衡,采用SMOTE和SMOTETomek方法分别做训练集平衡,对于整数上溢漏洞和整数下溢漏洞,由于训练集类间样本数量是平衡的,直接进行分。
[0016]进一步方案为,所述步骤4中,通过XGBoost、AdaBoost、RF、SVM和k NN五种分类算法在原始数据集、SMOTE平衡数据集和SMOTETomek平衡数据集上分别训练多标签分类器,并通过micro

F1、macro

F1、F1

score和ROC等评价指标对多标签分类器进行评价,并最终确定检测智能合约漏洞效果最好的多标签分类模型的最优方式。
[0017]本专利技术的有益效果在于:
[0018]本专利技术的一种对区块链智能合约脆弱性检测的方法,通过提取智能合约的有效特征及训练多标签分类模型,实现对整数上溢、整数下溢、交易顺序依赖、为检查返回值、时间戳依赖和代码重入六种智能合约漏洞准确且高效的自动化检测。
附图说明
[0019]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要实用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]图1为本专利技术流程图。
具体实施方式
[0021]为使本专利技术的目的、技术方案和优点更加清楚,下面将对本专利技术的技术方案进行详细的描述。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本专利技术所保护的范围。
[0022]在任一实施例中,如图1所示,本专利技术的一种对区块链智能合约脆弱性检测的方法,包括以下步骤:
[0023]步骤1,智能合约的数据采集及标注;采集大量经过验证的智能合约数据并标注标签;
[0024]步骤2,数据预处理:通过预处理阶段,将源代码转换为抽象的操作码数据流;
[0025]步骤3,特征提取:操作码中提取多维特征,构建特征矩阵;
[0026]步骤4,漏洞样本训练;实现对漏洞样本及样本数量平衡;
[0027]步骤5,多标签分类器;实现对原始数据集、平衡数据集上分别训练多标签分类器;
[0028]步骤6,指标评价:对多标签分类器进行评价,并最终确定检测智能合约漏洞效果最好的多标签分类模型的最优方式。
[0029]为实现对交易顺序依赖漏洞、未检查返回值漏洞、时间戳依赖漏洞和代码重入漏洞、整数上溢漏洞和整数下溢漏洞六种常见智能合约漏洞检测,包括;
[0030]首先,对爬取的Solidity源码、Solidity版本、合约地址等数据进行标注,构建多标签智能合约数据集;
[0031]在数据预处理阶段,通过源码编译、字节码解析和操作码抽象化处理三个步骤将
源代码转换为抽象的操作码数据流,为后续特征提取做好了铺垫;
[0032]采用n

gram算法从抽象化的合约操作码中提取多维bigram特征,并根据特征值计算公式计算bigram特征值,构建特征矩阵;其次,再采用One vs.Rest策略对智能合约进行多标签分类。对于交易顺序依赖漏洞、未检查返回值漏洞、时间戳依赖漏洞和代码重入漏洞,若训练集类间样本数量不平衡,拟采用SMOTE和SMOTETomek方法分别做训练集平衡,对于整数上溢漏洞和整数下溢漏洞,由于训练集类间样本数量是平衡的,可以直接进行分类;
[0033]最后,拟采用XGBoost、AdaBoost、RF、SVM和k NN五种分类算法在原始数据集、SMOTE平衡数据集和SMOTETomek平衡数据集上分别训练多标签分类器,并通过micro

F1、macro

F1、F1

score和ROC等评价指标对多标签分类器进行评价,并最终确定检测智能合约漏洞效果最好的多标签分类模型的最优方式。
[0034]以上所述,仅为本专利技术的具体实施方式,但本专利技术的保护范围并不局限于此,任何熟本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种对区块链智能合约脆弱性检测的方法,其特征在于,包括以下步骤:步骤1,智能合约的数据采集及标注;采集大量经过验证的智能合约数据并标注标签;步骤2,数据预处理:通过预处理阶段,将源代码转换为抽象的操作码数据流;步骤3,特征提取:操作码中提取多维特征,构建特征矩阵;步骤4,漏洞样本训练;实现对漏洞样本及样本数量平衡;步骤5,多标签分类器;实现对原始数据集、平衡数据集上分别训练多标签分类器;步骤6,指标评价:对多标签分类器进行评价,并最终确定检测智能合约漏洞效果最好的多标签分类模型的最优方式。2.如权利要求1所述的一种对区块链智能合约脆弱性检测的方法,其特征在于,所述步骤1中,对爬取的Solidity源码、Solidity版本、合约地址数据进行标注,构建多标签智能合约数据集。3.如权利要求1所述的一种对区块链智能合约脆弱性检测的方法,其特征在于,所述步骤2中,在数据预处理阶段,通过源码编译、字节码解析和操作码抽象化处理三个步骤将源代码转换为抽象的操作码数据流,为后续特征提取做好了铺垫。4.如权利要求1所述的一种对区块链智能合约脆弱性检测的方法,其特征在于,所述步骤3中,通过n

【专利技术属性】
技术研发人员:肖建杨川
申请(专利权)人:四川启睿克科技有限公司
类型:发明
国别省市:

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

1