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

一种基于模糊测试的庞氏合约检测方法及系统

文献发布时间:2023-06-19 16:08:01



技术领域

本发明属于软件安全领域,尤其是一种基于模糊测试的庞氏合约检测方法及系统。

背景技术

庞氏骗局是一种欺诈性投资,庞氏骗局通过收购新投资者为早期投资者创造回报,庞氏骗局最终会在大批新投资者枯竭、资金不足时见底,庞氏骗局的智能合约实现称为庞氏合约。这种实现非常有吸引力,因为它继承了智能合约和区块链的固有属性:分散、匿名和不变,这些财产是许多合法金融应用的基石。但与此同时,它们使智能庞氏骗局比传统庞氏骗局更危险,庞氏骗局的发起人可以保持匿名,这显然可以避免发起该骗局的人被定罪,部署的庞氏合约很难修改和停止,一旦投资者参与进来,就没有出路。为了避免损失,投资者必须不断邀请新的投资者,这完全符合合约创建者的恶意意图,分利给投资者一种错觉,认为集资是可靠和可信的。

现有的检测模式包含基于交易、规则、机器学习、深度学习技术进行检测,基于交易的检测原始交易数据少,无法检测新的庞氏合约。基于规则的检测:由于规则的不全面性,无法识别出较复杂的庞氏骗局且误报率较高;基于机器学习的检测方法:由于简单的将操作码频率作为检测特征,而此特征对智能合约的语义表达不完整使得检测效果提升有限;传统深度学习方法:对数据处理时无法处理不规则的空间结构且无法捕获数据内部之间的依赖关系,更为重要的是其假设样本之间是相互独立的。

发明内容

发明目的:本发明的目的在于提供一种基于模糊测试的庞氏合约检测方法,使用模糊测试解决现有智能合约交易数据的不足,同时针对新的智能合约,实现在未发生损失时,鉴别出新的智能合约是否为庞氏合约,最终将新的庞氏合约的特征保存为图片放入数据库中;

本发明同时提供一种基于模糊测试的庞氏合约检测系统,同样使用模糊测试解决现有智能合约交易数据的不足,同时针对新的智能合约,实现在未发生损失时,鉴别出新的智能合约是否为庞氏合约,最终将新的庞氏合约的特征保存为图片放入数据库中。

技术方案:本发明提供的一种基于模糊测试的庞氏合约检测方法,包含以下步骤:

1)在Etherscan平台上任意选取一个时间段内已经标记的庞氏合约和非庞氏的智能合约进行采集,将采集到的已经标记的庞氏合约和非庞氏的智能合约作为输入集;

2)进行静态分析,使用静态分析工具扫描输入集,再使用配置过参数的模糊测试工具进行模糊测试,获取交易资金流向并整理成矩阵,进一步转化成图片;

3)建立ResNet模型,对图片进行预处理,并使用ResNet算法对图片中的交易特征进行自动提取,该交易特征包含每一次产生交易后资金的流向、每个账户获得的资金数目、最终呈现庞氏骗局经典的金字塔资金分布特征,对ResNet模型进行训练,最终得到最优ResNet模型;

4)将准备好的待检测测试集经过静态分析,再进行模糊测试,最终转化成图片,将转化好的图片放入最优ResNet模型,最优ResNet模型对转化好的图片进行分析并处理,输出分析结果是否为庞氏合约。

进一步的,步骤2)中,使用静态分析工具扫描输入集,检查模糊测试工具的配置选项,以YAML文件的形式对模糊测试工具进行检查配置,再使用配置过参数的模糊测试工具进行模糊测试,模糊测试工具进行参数配置后,进入初始运行阶段,形成运行事务序列的语料库,为初始语料库,初始运行阶段完毕后,模糊测试工具进入循环运行阶段,循环运行阶段运行完毕后,形成新语料库,将新语料库的数据进行整理,以矩阵的形式进行储存,最终将矩阵转化为图片格式,该循环运行阶段包含以下步骤:

2.1)在模糊测试工具允许使用的内核数的范围内,生成一组新的配置文件即YAML格式的文件,新的配置文件在每组进程中都将起始语料库中原有的运行事务序列进行覆盖与替代,产生新覆盖的所有运行事务序列;

2.2)从循环运行阶段中收集所产生的新覆盖的所有运行事务序列,并将新覆盖的所有运行事务序列添加入语料库中,产生新语料库;

2.3)若发现新语料库和/或新的运行事务序列失败,则进行报告。

进一步的,步骤3)中,建立ResNet模型,对图片进行预处理,使用ResNet算法对图片中的交易特征进行自动提取,并对ResNet模型进行训练,该ResNet模型包含超参数的设置及模型数据的输入;

超参数的设置包含设置批量训练的大小、学习速率的大小、分类数目、权值衰减率、学习到的目标;将学习到的目标的函数设置为:

式中,x表示图片中的交易特征的输入,

模型数据的输入包含特征集的选择、样本选取、生成TFRecords样本数据集,特征集的选择用以针对待分类的图片,提取图片不同维度的特征来构成特征集,使得特征集的维度更大;样本选取用以选取样本点并提取样本点的M维特征,每个样本的特征是一个大小为M×L的矩阵;生成TFRecords样本数据集用以将不同图片的交易特征拆分为训练样本集和测试样本集,并且把训练样本集和测试样本集全部都转换成二进制文件,再根据文件夹名称添加样本标签,转换得到的TFRecords文件作为ResNet模型训练的数据输入。

进一步的,步骤3)中,建立ResNet模型,对图片进行预处理,该ResNet模型的设置还包含模型初始化,模型初始化包括归一化输入数据、数据降采样、特征图像尺寸减半时、滤波器个数加倍步骤;同时对图片进行预处理,经过卷积层、池化层、全连接层对图片进行预处理;利用卷积层的特征稀疏进行提取,输入的每批次样本图片数据被转换为稀疏特征,输出图片的大小可以通过公式得出:

式中y为输出图片的分辨率,x为输入图片的分辨率,k为卷积核的大小,Stride为步长;

经过卷积层的卷积操作的数据均进行批量归一化和线性修正单元的激活,如下公式:

式中,x

图片通过池化层,在池化层对卷积层传输来的特征图片的不同位置的特征进行聚合统计,实现图片的特征从高层次到低层次的表达;

图片最终通过全连接层,图片数据经过softmax分类器,将每行的最大值对应的one-hot矩阵作为训练的分类结果;

最后对ResNet模型进行训练,卷积层会提取每批次样本图像数据的特征,并且逐层计算图像数据的稀疏特征,并把相应的参数值记录下来,把ResNet模型最底层提取的稀疏特征输入到logist层,统计样本的分类值,批量数据训练的模式増加了ResNet模型的鲁棒性,减少过拟合。

本发明对应提供一种基于模糊测试的庞氏合约检测系统,包含采集模块、静态分析模块、建立数据处理模型模块、检测模块;

采集模块用以在Etherscan平台上任意选取一个时间段内已经标记的庞氏合约和非庞氏的智能合约进行采集,将采集到的已经标记的庞氏合约和非庞氏的智能合约作为输入集;

静态分析模块用以进行静态分析,使用静态分析工具扫描输入集,再使用配置过参数的模糊测试工具进行模糊测试,获取交易资金流向并整理成矩阵,进一步转化成图片;

建立数据模型模块用以建立ResNet模型,对图片进行预处理,并使用ResNet对图片中的交易特征进行自动提取,该交易特征包含每一次产生交易后资金的流向、每个账户获得的资金数目、最终呈现庞氏骗局经典的金字塔资金分布特征,对ResNet模型进行训练,最终得到最优ResNet模型;

检测模块用以将准备好的待检测测试集经过静态分析,再进行模糊测试,最终转化成图片,将转化好的图片放入最优ResNet模型,最优ResNet模型对转化好的图片进行分析并处理,输出分析结果是否为庞氏合约。

进一步的,静态分析模块中,使用静态分析工具扫描输入集,检查模糊测试工具的配置选项,以YAML文件的形式对模糊测试工具进行检查配置,再使用配置过参数的模糊测试工具进行模糊测试,模糊测试工具进行参数配置后,进入初始运行阶段,形成运行事务序列的语料库,为初始语料库,初始运行阶段完毕后,模糊测试工具进入循环运行阶段,循环运行阶段运行完毕后,形成新语料库,将新语料库的数据进行整理,以矩阵的形式进行储存,最终将矩阵转化为图片格式,该循环运行阶段包含覆盖单元、产生新语料库单元、报告单元:

覆盖单元用以在模糊测试工具允许使用的内核数的范围内,生成一组新的配置文件即YAML格式的文件,新的配置文件在每组进程中都将起始语料库中原有的运行事务序列进行覆盖与替代,产生新覆盖的所有运行事务序列;

产生新语料库单元用以从循环运行阶段中收集所产生的新覆盖的所有运行事务序列,并将新覆盖的所有运行事务序列添加入语料库中,产生新语料库;

报告单元用以若发现新语料库和/或新的运行事务序列失败,则进行报告。

进一步的,建立数据处理模型模块中建立ResNet模型,对图片进行预处理,使用ResNet算法对图片中的交易特征进行自动提取,并对ResNet模型进行训练,该ResNet模型包含超参数的设置及模型数据的输入;

超参数的设置包含设置批量训练的大小、学习速率的大小、分类数目、权值衰减率、学习到的目标;将学习到的目标的函数设置为:

式中,x表示图片中的交易特征的输入,

模型数据的输入包含特征集的选择、样本选取、生成TFRecords样本数据集,特征集的选择用以针对待分类的图片,提取图片不同维度的特征来构成特征集,使得特征集的维度更大;样本选取用以选取样本点并提取样本点的M维特征,每个样本的特征是一个大小为M×L的矩阵;生成TFRecords样本数据集用以将不同图片的交易特征拆分为训练样本集和测试样本集,并且把训练样本集和测试样本集全部都转换成二进制文件,再根据文件夹名称添加样本标签,转换得到的TFRecords文件作为ResNet模型训练的数据输入。

进一步的,建立数据处理模型模块中,建立ResNet模型,对图片进行预处理,该ResNet模型的设置还包含模型初始化,模型初始化包括归一化输入数据、数据降采样、特征图像尺寸减半时、滤波器个数加倍步骤;同时对图片进行预处理,经过卷积层、池化层、全连接层对图片进行预处理;利用卷积层的特征稀疏进行提取,输入的每批次样本图片数据被转换为稀疏特征,输出图片的大小可以通过公式得出:

式中y为输出图片的分辨率,x为输入图片的分辨率,k为卷积核的大小,Stride为步长;

经过卷积层的卷积操作的数据均进行批量归一化和线性修正单元的激活,如下公式:

式中,x

图片通过池化层,在池化层对卷积层传输来的特征图片的不同位置的特征进行聚合统计,实现图片的特征从高层次到低层次的表达;

图片最终通过全连接层,图片数据经过softmax分类器,将每行的最大值对应的one-hot矩阵作为训练的分类结果;

最后对ResNet模型进行训练,卷积层会提取每批次样本图像数据的特征,并且逐层计算图像数据的稀疏特征,并把相应的参数值记录下来,把ResNet模型最底层提取的稀疏特征输入到logist层,统计样本的分类值,批量数据训练的模式増加了ResNet模型的鲁棒性,减少过拟合。

有益效果:本发明与现有技术相比,其显著特点是通过使用模糊测试的方式,解决现有智能合约交易数据不足的问题,将交易资金流向转化为图片进行保存,构建ResNet模型并加入ResNet算法动态获取图片的交易特征,对ResNet模型进行训练获取最优ResNet模型,实现针对新的智能合约,在未发生损失的情况下鉴别出此智能合约是否为庞氏合约。

附图说明

图1是本发明的流程示意图;

图2是本发明建立ResNet模型示意图。

具体实施方式

下面结合附图及具体实施例对本发明做进一步的详细说明。

实施例1

请参阅图1所示,本发明提供了一种基于模糊测试的庞氏合约检测方法,包含以下步骤:

1)从Github数据库、SWC数据库中收集现有公开且人工审计过的庞氏合约和非庞氏的智能合约,在Etherscan平台上任意选取一个时间段内已经标记的庞氏合约和非庞氏的智能合约进行采集,将采集到的已经标记的庞氏合约和非庞氏的智能合约作为输入集。

2)进行静态分析,使用静态分析工具扫描输入集,再使用配置过参数的模糊测试工具进行模糊测试,获取交易资金流向并整理成矩阵,进一步转化成图片;

使用静态分析工具扫描输入集,检查模糊测试工具的配置选项,以YAML文件的形式对模糊测试工具进行检查配置,再使用配置过参数的模糊测试工具进行模糊测试,模糊测试工具进行参数配置后,进入初始运行阶段,形成运行事务序列的语料库,为初始语料库,初始运行阶段完毕后,模糊测试工具进入循环运行阶段,循环运行阶段运行完毕后,形成新语料库,将新语料库的数据进行整理,以矩阵的形式进行储存,最终将矩阵转化为图片格式,该循环运行阶段包含以下步骤:

2.1)在模糊测试工具允许使用的内核数的范围内,生成一组新的配置文件即YAML格式的文件,新的配置文件在每组进程中都将起始语料库中原有的运行事务序列进行覆盖与替代,产生新覆盖的所有运行事务序列;

2.2)从循环运行阶段中收集所产生的新覆盖的所有运行事务序列,并将新覆盖的所有运行事务序列添加入语料库中,产生新语料库;

2.3)若发现新语料库和/或新的运行事务序列失败,则进行报告;

其中,将新语料库的数据进行整理,以矩阵的形式进行储存,该矩阵的形成如下:

每份输入集建立一个方阵,该方阵的大小取决于模糊测试的次数,若输入集的模糊次数为n,则该方阵的大小为(n+2)

3)请参阅图2所示,建立ResNet模型,对图片进行预处理,并使用ResNet算法对图片中的交易特征进行自动提取,该交易特征包含每一次产生交易后资金的流向、每个账户获得的资金数目、最终呈现庞氏骗局经典的金字塔资金分布特征,同时,为了解决二分类的问题,通过采用Softmax函数将线性模型输出的实数域映射到[0,1]表示概率分布的有效实数空间,在此过程中模型自动存储各神经元之间的互连权值,并通过优化算法随时对这些数据进行优化改进,对ResNet模型进行训练,最终得到最优ResNet模型;

建立ResNet模型,对图片进行预处理,使用ResNet算法对图片中的交易特征进行自动提取,并对ResNet模型进行训练,该ResNet模型包含超参数的设置及模型数据的输入;

超参数的设置包含设置批量训练的大小、学习速率的大小、分类数目、权值衰减率、学习到的目标;将学习到的目标的函数设置为:

式中,x表示图片中的交易特征的输入,

模型数据的输入包含特征集的选择、样本选取、生成TFRecords样本数据集,特征集的选择用以针对待分类的图片,提取图片不同维度的特征来构成特征集,使得特征集的维度更大;样本选取用以选取样本点并提取样本点的M维特征,每个样本的特征是一个大小为M×L的矩阵;生成TFRecords样本数据集用以将不同图片的交易特征拆分为训练样本集和测试样本集,并且把训练样本集和测试样本集全部都转换成二进制文件,再根据文件夹名称添加样本标签,转换得到的TFRecords文件作为ResNet模型训练的数据输入;

建立ResNet模型,对图片进行预处理,该ResNet模型的设置还包含模型初始化,模型初始化包括归一化输入数据、数据降采样、特征图像尺寸减半时、滤波器个数加倍步骤;同时对图片进行预处理,经过卷积层、池化层、全连接层对图片进行预处理;利用卷积层的特征稀疏进行提取,输入的每批次样本图片数据被转换为稀疏特征,输出图片的大小可以通过公式得出:

式中y为输出图片的分辨率,x为输入图片的分辨率,k为卷积核的大小,Stride为步长;

经过卷积层的卷积操作的数据均进行批量归一化和线性修正单元的激活,如下公式:

式中,x

图片通过池化层,在池化层对卷积层传输来的特征图片的不同位置的特征进行聚合统计,实现图片的特征从高层次到低层次的表达;

图片最终通过全连接层,图片数据经过softmax分类器,将每行的最大值对应的one-hot矩阵作为训练的分类结果;

最后对ResNet模型进行训练,卷积层会提取每批次样本图像数据的特征,并且逐层计算图像数据的稀疏特征,并把相应的参数值记录下来,把ResNet模型最底层提取的稀疏特征输入到logist层,统计样本的分类值,批量数据训练的模式増加了ResNet模型的鲁棒性,减少过拟合。

4)将准备好的待检测测试集经过静态分析,再进行模糊测试,最终转化成图片,将转化好的图片放入最优ResNet模型,最优ResNet模型对转化好的图片进行分析并处理,输出分析结果是否为庞氏合约。

实施例2

对应实施例1的基于模糊测试的庞氏合约检测方法,本实施例2提供一种基于模糊测试的庞氏合约检测系统,包含采集模块、静态分析模块、建立数据模型模块、检测模块;

采集模块用以从Github数据库、SWC数据库中收集现有公开且人工审计过的庞氏合约和非庞氏的智能合约,在Etherscan平台上任意选取一个时间段内已经标记的庞氏合约和非庞氏的智能合约进行采集,将采集到的已经标记的庞氏合约和非庞氏的智能合约作为输入集;

静态分析模块用以进行静态分析,使用静态分析工具扫描输入集,再使用配置过参数的模糊测试工具进行模糊测试,获取交易资金流向并整理成矩阵,进一步转化成图片;

使用静态分析工具扫描输入集,检查模糊测试工具的配置选项,以YAML文件的形式对模糊测试工具进行检查配置,再使用配置过参数的模糊测试工具进行模糊测试,模糊测试工具进行参数配置后,进入初始运行阶段,形成运行事务序列的语料库,为初始语料库,初始运行阶段完毕后,模糊测试工具进入循环运行阶段,循环运行阶段运行完毕后,形成新语料库,将新语料库的数据进行整理,以矩阵的形式进行储存,最终将矩阵转化为图片格式,该循环运行阶段包含覆盖单元、产生新语料库单元、报告单元:

覆盖单元用以在模糊测试工具允许使用的内核数的范围内,生成一组新的配置文件即YAML格式的文件,新的配置文件在每组进程中都将起始语料库中原有的运行事务序列进行覆盖与替代,产生新覆盖的所有运行事务序列;

产生新语料库单元用以从循环运行阶段中收集所产生的新覆盖的所有运行事务序列,并将新覆盖的所有运行事务序列添加入语料库中,产生新语料库;

报告单元用以若发现新语料库和/或新的运行事务序列失败,则进行报告;

其中,将新语料库的数据进行整理,以矩阵的形式进行储存,该矩阵的形成如下:

每份输入集建立一个方阵,该方阵的大小取决于模糊测试的次数,若输入集的模糊次数为n,则该方阵的大小为(n+2)

建立数据模型模块用以建立ResNet模型,对图片进行预处理,并使用ResNet算法对图片中的交易特征进行自动提取,该交易特征包含每一次产生交易后资金的流向、每个账户获得的资金数目、最终呈现庞氏骗局经典的金字塔资金分布特征,同时,为了解决二分类的问题,通过采用Softmax函数将线性模型输出的实数域映射到[0,1]表示概率分布的有效实数空间,在此过程中模型自动存储各神经元之间的互连权值,并通过优化算法随时对这些数据进行优化改进,对ResNet模型进行训练,最终得到最优ResNet模型;

建立ResNet模型,对图片进行预处理,使用ResNet算法对图片中的交易特征进行自动提取,并对ResNet模型进行训练,该ResNet模型包含超参数的设置及模型数据的输入;

超参数的设置包含设置批量训练的大小、学习速率的大小、分类数目、权值衰减率、学习到的目标;将学习到的目标的函数设置为:

式中,x表示图片中的交易特征的输入,

模型数据的输入包含特征集的选择、样本选取、生成TFRecords样本数据集,特征集的选择用以针对待分类的图片,提取图片不同维度的特征来构成特征集,使得特征集的维度更大;样本选取用以选取样本点并提取样本点的M维特征,每个样本的特征是一个大小为M×L的矩阵;生成TFRecords样本数据集用以将不同图片的交易特征拆分为训练样本集和测试样本集,并且把训练样本集和测试样本集全部都转换成二进制文件,再根据文件夹名称添加样本标签,转换得到的TFRecords文件作为ResNet模型训练的数据输入;

建立ResNet模型,对图片进行预处理,该ResNet模型的设置还包含模型初始化,模型初始化包括归一化输入数据、数据降采样、特征图像尺寸减半时、滤波器个数加倍步骤;同时对图片进行预处理,经过卷积层、池化层、全连接层对图片进行预处理;利用卷积层的特征稀疏进行提取,输入的每批次样本图片数据被转换为稀疏特征,输出图片的大小可以通过公式得出:

式中y为输出图片的分辨率,x为输入图片的分辨率,k为卷积核的大小,Stride为步长;

经过卷积层的卷积操作的数据均进行批量归一化和线性修正单元的激活,如下公式:

式中,x

图片通过池化层,在池化层对卷积层传输来的特征图片的不同位置的特征进行聚合统计,实现图片的特征从高层次到低层次的表达;

图片最终通过全连接层,图片数据经过softmax分类器,将每行的最大值对应的one-hot矩阵作为训练的分类结果;

最后对ResNet模型进行训练,卷积层会提取每批次样本图像数据的特征,并且逐层计算图像数据的稀疏特征,并把相应的参数值记录下来,把ResNet模型最底层提取的稀疏特征输入到logist层,统计样本的分类值,批量数据训练的模式増加了ResNet模型的鲁棒性,减少过拟合。

检测模块用以将准备好的待检测测试集经过静态分析,再进行模糊测试,最终转化成图片,将转化好的图片放入最优ResNet模型,最优ResNet模型对转化好的图片进行分析并处理,输出分析结果是否为庞氏合约。

通过使用模糊测试的方式,解决现有智能合约交易数据不足的问题,将交易资金流向转化为图片进行保存,构建ResNet模型并加入ResNet算法动态获取图片的交易特征,对ResNet模型进行训练获取最优ResNet模型,实现针对新的智能合约,在未发生损失的情况下鉴别出此智能合约是否为庞氏合约。

技术分类

06120114717594