一种基于交易和LSTM的恶意智能合约监测方法技术

技术编号:38607325 阅读:13 留言:0更新日期:2023-08-26 23:38
本发明专利技术实施例公开了一种基于交易和LSTM的恶意智能合约监测方法,属于区块链安全监测技术领域,解决现有方法在监测效率方面的不足,以及无法在线对智能合约持续监测的问题。本发明专利技术基于智能合约的交易数据实现对恶意智能合约的监测,与其他监测方法相比,本发明专利技术不需要智能合约源代码和字节码可实现对恶意智能合约的监测,并且通过持续采集智能合约后续的交易数据,能够持续地对智能合约行为进行监测,提高了适用范围和实用性。提高了适用范围和实用性。

【技术实现步骤摘要】
一种基于交易和LSTM的恶意智能合约监测方法


[0001]本专利技术涉及区块链安全监测
,具体涉及一种基于交易和LSTM的恶意智能合约监测方法。

技术介绍

[0002]智能合约简化和加速了区块链在各行各业的应用,但智能合约本身也是一种运行在区块链计算环境中的程序,所以也存在安全问题。一些恶意智能合约被蓄意开发出来进行攻击、破坏、欺诈等,这严重威胁着区块链的安全稳定,并会造成用户实质的经济损失,也不符合国家对区块链发展应用的期望。
[0003]因此,有必要对运行中的智能合约安全性进行持续地监测。目前针对智能合约安全分析和检测的方法,主要是基于是基于智能合约源代码或字节码(二进制代码)实现的,这些方法一般先通过在公链(如Etheruem)上收集大量的源码或字节码数据,然后结合机器学习或神经网络进行模型训练,再用训练好的模型去对检测的智能合约进行分类。这类方法在检测的准确性上取得了一定的效果,但也存在两个明显的缺陷:(1)收集智能合约的源码或字节码并不容易,需要大量的人工工作,并且已公开源码的智能合约占比不高;(2)这类方法只能离线地分析智能合约安全性,无法及时监测智能合约的恶意行为。

技术实现思路

[0004]本专利技术实施例的目的在于提供一种基于交易和LSTM的恶意智能合约监测方法,用以解决现有方法在检测效率方面的不足,以及无法在线对智能合约持续监测的问题。
[0005]为实现上述目的,本专利技术实施例提供一种基于交易和LSTM的恶意智能合约监测方法:一种基于交易和LSTM的恶意智能合约监测方法,所述的方法依次包括如下步骤:步骤1:采集交易数据并进行预处理;步骤2:对所述采集的交易数据数据进行切片,根据数据切片生成数据集;步骤3:根据所述生成的数据集构建模型并进行训练;步骤4:部署所述训练后的模型实现监测;将训练好的模型部署;进一步的,所述采集交易数据并进行预处理包括:对区块链公链的开源客户端进行插桩改造,使得客户端在同步公链数据时,额外保存交易的历史数据;利用改造的客户端收集公链上的智能合约数据以及相关的交易数据,其中,所述交易数据包括外部交易和内部交易;将采集到智能合约数据和交易数据进行预处理。
[0006]进一步的,所述对所述采集的交易数据数据进行切片,根据数据切片生成数据集包括:应用设计好的数据切片算法对预处理的数据进行切片,数据切片算法概括为:设定固定的时间步长ΔT,对预处理后的数据集D中每一个合约分别进行切片,按照每ΔT获取一个数据分片;若合约中t<ΔT,则用0补齐,获得数据分片(1,ΔT, f, label),其中1表示该合约只包含了1个分片;若合约中t>ΔT,则按照每ΔT获取一个数据分片(x,ΔT, f, label),其中x表示该合约包含了x个分片;将所有分片合并成一个数据集,表示为TD=(X,ΔT, f, label);最终形成训练模型所用的数据集。
[0007]进一步的,所述根据所述生成的数据集构建模型并进行训练包括:根据实际应用需求选取合适的模型进行训练,将所述生成的数据集按照3:1:1的比例分割为训练数据集、验证数据集和测试数据集;在分割数据集的过程中按照随机抽取的方式,防止过拟合,其中,所述训练数据集用于训练模型,所述验证数据集用于在训练过程中对模型参数进行调整和优化,所述测试数据集用于检验模型的有效性;设置LSTM模型训练参数,并采用所述生成的数据集输入模型中进行训练,输出训练好的模型。
[0008]进一步的,所述部署所述训练后的模型实现监测包括:采集器持续对公链上的交易进行采集,并以固定格式保存入缓存池;当缓存池中的交易数据满足条件时,生成一个数据分片送入部署的模型进行检测,若结果异常则发起告警,实现对恶意智能合约的持续监测。
附图说明
[0009]为了更清楚地说明本专利技术的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
[0010]本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本专利技术可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本专利技术所能产生的功效及所能达成的目的下,均应仍落在本专利技术所揭示的
技术实现思路
得能涵盖的范围内。
[0011]图1为本专利技术实施例提供的流程示意图。
具体实施方式
[0012]以下由特定的具体实施例说明本专利技术的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本专利技术的其他优点及功效,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0013]实施例1
为使本专利技术的上述目的、特征和优点能够更加简明易懂,下面结合附图和具体实施方式对本专利技术进行进一步的说明。
[0014]图1为本专利技术的基于交易和LSTM的恶意智能合约监测方法的流程示意图,从图1可以看出本专利技术的流程。
[0015]步骤1:采集交易数据并进行预处理。
[0016]步骤1.1:通过对区块链公链的开源客户端(例如以太坊全节点钱包)进行插桩改造,使得客户端在同步公链数据时,额外保存交易的历史数据;步骤1.2:利用改造的客户端收集公链上的智能合约数据以及相关的交易数据,其中,所述交易数据包括外部交易和内部交易;步骤1.3:将采集到智能合约和交易数据进行预处理,一个智能合约及其交易数据用 (t, f)表示,其中t表示该智能合约的交易数据一共有t个时间点,f表示将采取f个特征对该智能合约进行表征;步骤1.4:确定采用特征的数量f,并统一对所有交易数据进行处理,最后用(n, t, f, label)表示,其中n表示第n个智能合约,表示该智能合约的标记(标记数据来源于网络公开数据),即对于全部智能合约表示为D={(n, t, f, label) | n, t, f∈Z*, label∈bool};步骤2:对所述采集的交易数据数据进行切片,根据数据切片生成数据集。
[0017]步骤2.1:应用设计好的数据切片算法对D进行切片,最终形成训练用模型所的数据集;步骤2.2:设定固定的时间步长ΔT,对D中每一个合约分别进行切片,按照每ΔT获取一个数据分片;步骤2.3:若合约中t<ΔT,则用0补齐,获得数据分片(1,ΔT, f, label),其中1表示该合约只包含了1个分片;步骤2.4:若合约中t>ΔT,则按照每ΔT获取一个数据分片(x,ΔT, f, label),其中x表示该合约包含了x个分片;步骤2.5:将所有分片合并成一个数据集,表示为TD=(X,ΔT, f, label);步骤3:根据所述生成的数据集构建模型并进行训练。
[0018]步骤3.1:根据实际应用需求选取合适的模型本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于交易和LSTM的恶意智能合约监测方法,其特征在于,所述的方法依次包括如下步骤:步骤1:采集交易数据并进行预处理;步骤2:对所述采集的交易数据数据进行切片,根据数据切片生成数据集;步骤3:根据所述生成的数据集构建模型并进行训练;步骤4:部署所述训练后的模型实现监测。2.如权利要求1所述的方法,其特征在于,所述采集交易数据并进行预处理包括:对区块链公链的开源客户端进行插桩改造,使得客户端在同步公链数据时,额外保存交易的历史数据;利用改造的客户端收集公链上的智能合约数据以及相关的交易数据,其中,所述交易数据包括外部交易和内部交易;将采集到智能合约数据和交易数据进行预处理。3.如权利要求1所述的方法,其特征在于,所述对所述采集的交易数据数据进行切片,根据数据切片生成数据集包括:应用设计好的数据切片算法对预处理的数据进行切片,数据切片算法概括为:设定固定的时间步长ΔT,对预处理后的数据集D中每一个合约分别进行切片,按照每ΔT获取一个数据分片;若合约中t<ΔT,则用0补齐,获得数据分片(1,ΔT, f, label),其中1表示该合约只包含了1个分片;若合约中...

【专利技术属性】
技术研发人员:胡腾路鹏刘小垒孟凡治楼芳殷明勇周椿入王刚张华刘东
申请(专利权)人:中国工程物理研究院计算机应用研究所
类型:发明
国别省市:

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

1