掌桥专利:专业的专利平台
掌桥专利
首页

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

文献发布时间:2023-06-19 18:37:28


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

技术领域

本发明涉及区块链技术领域,尤其涉及一种对区块链智能合约脆弱性检测的方法。

背景技术

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

发明内容

本发明的目的就在于为了解决上述问题而提供一种对区块链智能合约脆弱性检测的方法,本发明通过引入机器学习算法实现自动化合约漏洞检测,保证合约漏洞检测的准确率的同时提高检测的效率。

本发明通过以下技术方案来实现上述目的:

一种对区块链智能合约脆弱性检测的方法,包括以下步骤:

步骤1,智能合约的数据采集及标注;采集大量经过验证的智能合约数据并标注标签;

步骤2,数据预处理:通过预处理阶段,将源代码转换为抽象的操作码数据流;

步骤3,特征提取:操作码中提取多维特征,构建特征矩阵;

步骤4,漏洞样本训练;实现对漏洞样本及样本数量平衡;

步骤5,多标签分类器;实现对原始数据集、平衡数据集上分别训练多标签分类器;

步骤6,指标评价:对多标签分类器进行评价,并最终确定检测智能合约漏洞效果最好的多标签分类模型的最优方式。

进一步方案为,所述步骤1中,对爬取的Solidity源码、Solidity版本、合约地址等数据进行标注,构建多标签智能合约数据集。

进一步方案为,所述步骤2中,在数据预处理阶段,通过源码编译、字节码解析和操作码抽象化处理三个步骤将源代码转换为抽象的操作码数据流,为后续特征提取做好了铺垫。

进一步方案为,所述步骤3中,通过n-gram算法从抽象化的合约操作码中提取多维bigram特征,并根据特征值计算公式计算bigram特征值,构建特征矩阵;再采用Onevs.Rest策略对智能合约进行多标签分类;

对于交易顺序依赖漏洞、未检查返回值漏洞、时间戳依赖漏洞和代码重入漏洞,若训练集类间样本数量不平衡,采用SMOTE和SMOTETomek方法分别做训练集平衡,对于整数上溢漏洞和整数下溢漏洞,由于训练集类间样本数量是平衡的,直接进行分。

进一步方案为,所述步骤4中,通过XGBoost、AdaBoost、RF、SVM和k NN五种分类算法在原始数据集、SMOTE平衡数据集和SMOTETomek平衡数据集上分别训练多标签分类器,并通过micro-F1、macro-F1、F1-score和ROC等评价指标对多标签分类器进行评价,并最终确定检测智能合约漏洞效果最好的多标签分类模型的最优方式。

本发明的有益效果在于:

本发明的一种对区块链智能合约脆弱性检测的方法,通过提取智能合约的有效特征及训练多标签分类模型,实现对整数上溢、整数下溢、交易顺序依赖、为检查返回值、时间戳依赖和代码重入六种智能合约漏洞准确且高效的自动化检测。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要实用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。

在任一实施例中,如图1所示,本发明的一种对区块链智能合约脆弱性检测的方法,包括以下步骤:

步骤1,智能合约的数据采集及标注;采集大量经过验证的智能合约数据并标注标签;

步骤2,数据预处理:通过预处理阶段,将源代码转换为抽象的操作码数据流;

步骤3,特征提取:操作码中提取多维特征,构建特征矩阵;

步骤4,漏洞样本训练;实现对漏洞样本及样本数量平衡;

步骤5,多标签分类器;实现对原始数据集、平衡数据集上分别训练多标签分类器;

步骤6,指标评价:对多标签分类器进行评价,并最终确定检测智能合约漏洞效果最好的多标签分类模型的最优方式。

为实现对交易顺序依赖漏洞、未检查返回值漏洞、时间戳依赖漏洞和代码重入漏洞、整数上溢漏洞和整数下溢漏洞六种常见智能合约漏洞检测,包括;

首先,对爬取的Solidity源码、Solidity版本、合约地址等数据进行标注,构建多标签智能合约数据集;

在数据预处理阶段,通过源码编译、字节码解析和操作码抽象化处理三个步骤将源代码转换为抽象的操作码数据流,为后续特征提取做好了铺垫;

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

最后,拟采用XGBoost、AdaBoost、RF、SVM和k NN五种分类算法在原始数据集、SMOTE平衡数据集和SMOTETomek平衡数据集上分别训练多标签分类器,并通过micro-F1、macro-F1、F1-score和ROC等评价指标对多标签分类器进行评价,并最终确定检测智能合约漏洞效果最好的多标签分类模型的最优方式。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。

技术分类

06120115636759