CN117992060A - 基于深度学习的智能合约状态缺陷检测方法及系统 - Google Patents
基于深度学习的智能合约状态缺陷检测方法及系统 Download PDFInfo
- Publication number
- CN117992060A CN117992060A CN202410093751.6A CN202410093751A CN117992060A CN 117992060 A CN117992060 A CN 117992060A CN 202410093751 A CN202410093751 A CN 202410093751A CN 117992060 A CN117992060 A CN 117992060A
- Authority
- CN
- China
- Prior art keywords
- graph
- dependency
- intelligent contract
- node
- abstract syntax
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000007547 defect Effects 0.000 title claims abstract description 69
- 238000001514 detection method Methods 0.000 title claims abstract description 41
- 238000013135 deep learning Methods 0.000 title claims abstract description 34
- 238000000034 method Methods 0.000 claims abstract description 47
- 239000013598 vector Substances 0.000 claims abstract description 39
- 238000012545 processing Methods 0.000 claims abstract description 32
- 238000000547 structure data Methods 0.000 claims abstract description 32
- 238000005457 optimization Methods 0.000 claims abstract description 24
- 238000005516 engineering process Methods 0.000 claims abstract description 11
- 230000006870 function Effects 0.000 claims description 51
- 238000005096 rolling process Methods 0.000 claims description 30
- 230000014509 gene expression Effects 0.000 claims description 25
- 230000008569 process Effects 0.000 claims description 25
- 238000010586 diagram Methods 0.000 claims description 16
- 230000001419 dependent effect Effects 0.000 claims description 11
- 239000011159 matrix material Substances 0.000 claims description 9
- 238000010606 normalization Methods 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 claims description 5
- 239000012634 fragment Substances 0.000 claims description 4
- 238000004590 computer program Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/042—Knowledge-based neural networks; Logical representations of neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种基于深度学习的智能合约状态缺陷检测方法及系统。所述方法包括:从去中心化交易所DApp中确定若干智能合约,并将对应的Solidity智能合约源代码进行编译,生成抽象语法树;从抽象语法树中确定与智能合约状态对应的依赖特征;遍历抽象语法树,将各个智能合约转换为图,根据依赖特征进行图优化处理;使用词向量技术将优化后的图和依赖特征标准化,得到图结构数据;将图结构数据输入至图卷积网络中,输出智能合约状态缺陷预测结果。通过充分学习和理解智能合约中的复杂模式和特征,以及学习图结构数据的深度特征和模式,可以准确地分析和预测智能合约的状态缺陷,且具有很强的泛化能力,可应用于不同的智能合约。
Description
技术领域
本发明涉及信息安全技术领域,特别是涉及一种基于深度学习的智能合约状态缺陷检测方法及系统。
背景技术
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,是一种自动执行合同条款的计算机程序,在区块链技术的基础上运行,能够在满足预定条件时自动执行特定的操作,如转移资产或记录信息。智能合约虽然具备了自动执行和透明化的优点,但也面临着一些关键性的挑战。一旦智能合约部署到区块链上,任何存在的代码错误或漏洞都无法被修复,这可能让恶意用户有机可乘,引发资金损失。现有技术中,智能合约的安全性检查通常依赖于传统的程序分析方法和手工审计,比如静态分析工具和形式化验证工具,尽管这些工具对于识别智能合约中的一些已知缺陷类型如重入攻击、整数溢出等问题很有效,但在处理状态缺陷方面仍有局限性,主要包括对复杂状态逻辑的检测能力有限、受限于规则库和模式匹配。
因此,传统的智能合约安全性检查存在检测能力有限、误报率较高的问题。
发明内容
基于此,为了解决上述技术问题,提供一种基于深度学习的智能合约状态缺陷检测方法及系统,可以提高智能合约状态缺陷的检测准确性。
一种基于深度学习的智能合约状态缺陷检测方法,所述方法包括:
从去中心化交易所DApp中确定若干智能合约,并将各个所述智能合约对应的Solidity智能合约源代码进行编译,生成抽象语法树;
从所述抽象语法树中确定与智能合约状态对应的依赖特征;所述依赖特征包括声明依赖、表达式依赖、控制依赖、数据依赖、函数依赖;
遍历所述抽象语法树,将各个所述智能合约转换为图,根据所述依赖特征进行图优化处理;
使用词向量技术将优化后的图和依赖特征标准化,得到图结构数据;
将所述图结构数据输入至图卷积网络中,输出智能合约状态缺陷预测结果。
在其中一个实施例中,将各个所述智能合约对应的Solidity智能合约源代码进行编译,生成抽象语法树,包括:
通过solcx工具对Solidity智能合约源代码进行编译,得到抽象语法树。
在其中一个实施例中,所述方法还包括:
确定智能合约状态缺陷代码的语法特征,并用数据结构表示所述语法特征;
从所述抽象语法树中确定与智能合约状态对应的依赖特征,包括:
从所述抽象语法树中,根据所述数据结构提取出与所述语法特征匹配的源代码片段;
将所述源代码片段作为与智能合约状态对应的依赖特征;
其中,所述依赖特征包括节点特征、边特征。
在其中一个实施例中,所述依赖特征中的节点特征包括所述声明依赖、所述表达式依赖、所述控制依赖、所述数据依赖、所述函数依赖;其中,所述声明依赖包括变量和常量声明节点、函数和方法声明节点;所述表达式依赖,包括语法和表达式节点;所述控制依赖,包括控制依赖节点;所述数据依赖,包括数据依赖节点;所述函数依赖,包括函数依赖节点。
在其中一个实施例中,遍历所述抽象语法树,将各个所述智能合约转换为图,包括:
从所述抽象语法树的根节点开始,逐步遍历每个子节点,并为遍历过程中的各个树节点分别创建对应的图节点;
确定所述抽象语法树中的父子关系;
根据所述父子关系,在各个所述图节点中添加边以连接节点,直到遍历完成,生成图。
在其中一个实施例中,根据所述依赖特征进行图优化处理,包括:
确定预定义标签集合,通过深度遍历对图中的节点、边进行优化处理,移除所述图中不在所述预定义标签集合中的节点和边。
在其中一个实施例中,所述使用词向量技术将优化后的图和依赖特征标准化,得到图结构数据,包括:
使用词向量技术将优化后的图和依赖特征,从文本数据转换为向量格式,得到优化后的图中每个节点的表示向量;
对各个所述表示向量进行规范化处理,得到图结构数据。
在其中一个实施例中,将所述图结构数据输入至图卷积网络中,输出智能合约状态缺陷预测结果,包括:
将所述图结构数据输入至图卷积网络中,通过所述图卷积网络迭代传递节点特征学习,并使用softmax函数对所述图卷积网络中最后一层的节点特征和权重矩阵进行乘法运算,输出智能合约状态缺陷预测结果。
在其中一个实施例中,所述方法还包括:
在所述图卷积网络中,采用注意力机制动态计算节点间的权重;采用反向传播算法集合优化器更新所述图卷积网络中的模型参数;使用交叉熵损失函数来衡量预测输出与实际输出之间的差异,使用损失函数对所述图卷积网络进行优化。
一种基于深度学习的智能合约状态缺陷检测系统,所述系统包括:
编译模块,用于从去中心化交易所DApp中确定若干智能合约,并将各个所述智能合约对应的Solidity智能合约源代码进行编译,生成抽象语法树;
依赖特征确定模块,用于从所述抽象语法树中确定与智能合约状态对应的依赖特征;所述依赖特征包括声明依赖、表达式依赖、控制依赖、数据依赖、函数依赖;
图优化处理模块,用于遍历所述抽象语法树,将各个所述智能合约转换为图,根据所述依赖特征进行图优化处理;
标准化处理模块,用于使用词向量技术将优化后的图和依赖特征标准化,得到图结构数据;
预测模块,用于将所述图结构数据输入至图卷积网络中,输出智能合约状态缺陷预测结果。
上述基于深度学习的智能合约状态缺陷检测方法及系统,通过编译Solidity智能合约源代码生成抽象语法树,确定依赖特征后通过遍历抽象语法树的方式进行图优化以及标准化处理,充分学习和理解智能合约中的复杂模式和特征,以及学习图结构数据的深度特征和模式,可以准确地分析和预测智能合约的状态缺陷,且具有很强的泛化能力,可以应用于不同类型或规模的智能合约。
附图说明
图1为一个实施例中基于深度学习的智能合约状态缺陷检测方法的应用环境图;
图2为一个实施例中基于深度学习的智能合约状态缺陷检测方法的流程示意图;
图3为一个实施例中抽象语法树依赖示意图;
图4为一个实施例中依赖特征提取示意图;
图5为一个实施例中图结构处理示意图;
图6为一个实施例中图卷积网络的处理示意图;
图7为一个实施例中基于深度学习的智能合约状态缺陷检测系统的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的基于深度学习的智能合约状态缺陷检测方法,可以应用于如图1所示的应用环境中。如图1所示,该应用环境包括计算机设备110。计算机设备110可以从去中心化交易所DApp中确定若干智能合约,并将各个智能合约对应的Solidity智能合约源代码进行编译,生成抽象语法树;计算机设备110可以从抽象语法树中确定与智能合约状态对应的依赖特征;依赖特征包括声明依赖、表达式依赖、控制依赖、数据依赖、函数依赖;计算机设备110可以遍历抽象语法树,将各个智能合约转换为图,根据依赖特征进行图优化处理;计算机设备110可以使用词向量技术将优化后的图和依赖特征标准化,得到图结构数据;计算机设备110可以将图结构数据输入至图卷积网络中,输出智能合约状态缺陷预测结果。其中,计算机设备110可以但不限于是各种个人计算机、笔记本电脑、智能手机、机器人、平板电脑等设备。
在一个实施例中,如图2所示,提供了一种基于深度学习的智能合约状态缺陷检测方法,包括以下步骤:
步骤202,从去中心化交易所DApp中确定若干智能合约,并将各个智能合约对应的Solidity智能合约源代码进行编译,生成抽象语法树。
在本实施例中,针对去中心化交易所DApp中智能合约的状态缺陷进行检测,从去中心化交易所DApp中确定若干智能合约,可以实现多合约的状态缺陷检测。
计算机设备可以将Solidity智能合约源代码进行编译生成一个完整的抽象语法树。
步骤204,从抽象语法树中确定与智能合约状态对应的依赖特征;依赖特征包括声明依赖、表达式依赖、控制依赖、数据依赖、函数依赖。
计算机设备可以抽象语法树中提取出五种与状态相关的依赖特征。
其中,与智能合约状态对应的依赖特征可以用于表示能够区分智能合约是否存在状态缺陷的特征,主要包括声明依赖、表达式依赖、控制依赖、数据依赖、函数依赖。其中,声明依赖中,变量和常量声明节点可以表示代码中的输入、输出和状态变量,而函数和方法声明节点可以表示智能合约的功能和操作;表达式依赖中,语法和表达式节点封装了程序逻辑和计算;控制依赖性中,控制依赖节点定义了程序的执行流程,这些操作在状态管理和状态变化中扮演着重要的角色;数据依赖指的是某些程序部分对其他部分的状态或输出的依赖;函数依赖指的是一个函数的行为可能取决于其他函数,主要关注的是函数之间的关系以及其他函数如何影响一个函数的行为。
步骤206,遍历抽象语法树,将各个智能合约转换为图,根据依赖特征进行图优化处理。
步骤208,使用词向量技术将优化后的图和依赖特征标准化,得到图结构数据。
计算机设备可以遍历抽象语法树将智能合约转换为图,然后根据提取的关键特征进行图优化,最后使用词向量技术将优化后的图和特征标准化。
步骤210,将图结构数据输入至图卷积网络中,输出智能合约状态缺陷预测结果。
计算机设备可以利用图卷积网络来处理、学习和识别潜在的模式和特性,将图结构数据输入到图卷积网络后,可以通过图卷积网络进行分析和预测,从而输出智能合约状态缺陷预测结果。
在本实施例中,通过编译Solidity智能合约源代码生成抽象语法树,确定依赖特征后通过遍历抽象语法树的方式进行图优化以及标准化处理,充分学习和理解智能合约中的复杂模式和特征,以及学习图结构数据的深度特征和模式,可以准确地分析和预测智能合约的状态缺陷,且具有很强的泛化能力,可以应用于不同类型或规模的智能合约。
在一个实施例中,提供的一种基于深度学习的智能合约状态缺陷检测方法还可以包括生成抽象语法树的过程,具体过程包括:通过solcx工具对Solidity智能合约源代码进行编译,得到抽象语法树。
计算机设备可以使用solcx工具将Solidity智能合约源代码进行编译,从而为后续提供输入数据。
其中,编译的结果是一个完整的抽象语法树,抽象语法树是源代码的树形表示,其中树的根节点代表整个智能合约或函数。使用抽象语法树的优势在于,它可以有效地封装程序元素之间的语义关系,从而更好地理解和操作程序逻辑。
如图3所示,抽象语法树可以展示树中的节点类型及其在源代码中的对应部分,如函数调用、赋值语句和控制依赖语句。此外,树的深度代表代码的复杂性,而树的分支数量代表代码中的决策点数量。
抽象语法树的深度代表代码的复杂性,而树的分支数量代表代码中的决策点数量。因此,可以通过遍历抽象语法树来提取关键特性,如控制依赖、数据依赖和函数依赖,并为不同的程序元素分配不同的角色,以构建合约图。通过构建合约图,可以通过理解和分析节点之间的连接方式,更准确地识别可能存在缺陷的节点。
在一个实施例中,提供的一种基于深度学习的智能合约状态缺陷检测方法还可以包括确定依赖特征的过程,具体过程包括:确定智能合约状态缺陷代码的语法特征,并用数据结构表示语法特征;从抽象语法树中,根据数据结构提取出与语法特征匹配的源代码片段;将源代码片段作为与智能合约状态对应的依赖特征;其中,依赖特征包括节点特征、边特征。
其中,从抽象语法树中提取出五种与状态相关的依赖特征,包括声明、表达式、控制、数据和函数依赖。如图4所示,这些特征有助于识别可能存在的状态缺陷,主要包括节点特征和边特征。
节点特征对于准确表示图至关重要,并且在缺陷检测任务中,不同类型的节点的重要性各不相同。具体的,提取的五种依赖特征中,声明依赖:变量和常量声明节点可以表示代码中的输入、输出和状态变量,而函数和方法声明节点可以表示智能合约的功能和操作;表达式依赖:语法和表达式节点封装了程序逻辑和计算;控制依赖性:控制依赖节点定义了程序的执行流程,这些操作在状态管理和状态变化中通常与缺陷检测任务高度相关;数据依赖性指的是某些程序部分对其他部分的状态或输出的依赖;函数依赖性指的是一个函数的行为可能取决于其他函数,主要关注的是函数之间的关系以及其他函数如何影响一个函数的行为。
在本实施例中,除了提取节点特征外,还保留了节点属性。节点属性可以定义为一个元组(Nid,Nn,Nt,Nv),其中Nid表示语法树中节点的唯一id,Nn表示节点的名称,Nt表示节点的类型,Nv表示节点可能存在的值。这些节点属性提供了数据的直接表示,便于高效操作并确保不变性。节点特征对于准确表示图结构至关重要,并且在缺陷检测任务中,不同类型的节点的重要性各不相同
边特征,根据形成有向边来描述潜在路径,边特征可以表示为(Es,Ee,Et),其中,Es和Ee分别代表其起始和结束节点,Et代表边的类型,这种构造方法简洁地封装了关键信息,便于操作和分析。
节点特征、边特征的提取是通过遍历抽象语法树并分析其节点和边来完成的,通过创建集合的方式来定义特征,有助于分析在执行缺陷检测任务时的关键节点。在完成特征提取后,可以将这些特征用于后续的图优化和缺陷检测步骤。
在一个实施例中,依赖特征中的节点特征包括声明依赖、表达式依赖、控制依赖、数据依赖、函数依赖;其中,声明依赖包括变量和常量声明节点、函数和方法声明节点;表达式依赖,包括语法和表达式节点;控制依赖,包括控制依赖节点;数据依赖,包括数据依赖节点;函数依赖,包括函数依赖节点。
在一个实施例中,提供的一种基于深度学习的智能合约状态缺陷检测方法还可以包括遍历抽象语法树的过程,具体过程包括:从抽象语法树的根节点开始,逐步遍历每个子节点,并为遍历过程中的各个树节点分别创建对应的图节点;确定抽象语法树中的父子关系;根据父子关系,在各个图节点中添加边以连接节点,直到遍历完成,生成图。
具体的,在本实施例中,在构建图时,从抽象语法树的根节点开始进行深度优先遍历。每次遍历到一个树节点时,在图中创建一个新节点。然后根据抽象语法树中的父子关系,从当前节点添加边到其子节点。这个过程递归进行,直到遍历完整个抽象语法树。构建图可以方便地可视化各种合约组件之间的关系,为合约的功能提供一个全局视角。
在一个实施例中,提供的一种基于深度学习的智能合约状态缺陷检测方法还可以包括进行图优化的过程,具体过程包括:确定预定义标签集合,通过深度遍历对图中的节点、边进行优化处理,移除图中不在预定义标签集合中的节点和边。
如图5所示,在本实施例中,可以通过排除不符合预定义依赖标签集的节点和边来简化每个图,以提升处理效率。具体的,在本实施例中,可以移除不包含在预定义标签集合中的节点,从而得到一个更简洁的节点集;接着,计算机设备可以在这个简洁的节点集上进行深度优先遍历,定义父子关系并丢弃不符合条件的节点;对于每个节点,如果其标签不在预定义标签集中并且其父节点的标签在预定义标签集中,就移除它与父节点之间的边;如果一个节点有一个子节点,就丢弃这个节点和它与父节点以及子节点之间的边,然后将子节点的父节点设置为当前节点的父节点,完成图优化处理。
在一个实施例中,提供的一种基于深度学习的智能合约状态缺陷检测方法还可以包括使用词向量技术进行处理的过程,具体过程包括:使用词向量技术将优化后的图和依赖特征,从文本数据转换为向量格式,得到优化后的图中每个节点的表示向量;对各个表示向量进行规范化处理,得到图结构数据。
在本实施例中,采用的词向量技术可以是Word2Vec,Word2Vec是一种神经网络语言模型,可以通过学习词语之间的语义关系将文本数据转换为向量格式。计算机设备可以将每个图转换为邻接矩阵和字典,节点属性标签作为特征向量。
如图5所示,通过使用word2idx字典和一个嵌入矩阵将节点标签映射到特征向量。每个节点的向量表示是这个节点标签在嵌入矩阵中的映射,一个图的拓扑结构用邻接矩阵表示。对于每个节点,可以构建一个邻接字典来表示其直接相邻的节点,在节点表示学习中,目标是得到每个节点的表示向量,通过非线性变换将每个节点的特征向量映射到表示空间,从而完成图嵌入处理。
计算机设备可以将修剪后的节点和边集合形成优化图,然后进行规范化,每个节点的属性与一个特征向量相关联,并进一步处理为规范化向量。如图5所示,规范化的数据包括边列表、图ID列表、节点标签和特征,以及图标签;节点间的关系在边列表中得以保留;每个节点的图ID存储在列表中;节点标签、特征和图标签在相应的列表中保留;邻接矩阵和字典封装了图的连接。
在一个实施例中,提供的一种基于深度学习的智能合约状态缺陷检测方法还可以包括图卷积网络处理的过程,具体过程包括:将图结构数据输入至图卷积网络中,通过图卷积网络迭代传递节点特征学习,并使用softmax函数对图卷积网络中最后一层的节点特征和权重矩阵进行乘法运算,输出智能合约状态缺陷预测结果。
图卷积网络不仅可以处理节点属性信息,还可以处理节点之间的连接。在本实施例中,如图6所示,图卷积网络将节点属性与拓扑结构信息集成,捕获智能合约中的恶意行为和模式。具体的,计算机设备可以将规范化的边列表、图ID列表、节点标签和特征,以及图标签数据作为输入,图卷积网络通过迭代地传递节点特征来学习并生成节点的向量表示,采用了注意力机制来动态计算节点间的权重;为了提高模型的性能,可以使用反向传播算法和优化器来更新模型的参数;对于二分类问题,使用交叉熵损失函数来衡量预测输出和实际标签之间的差异,通过最小化这个损失函数来优化模型。
也就是说,在一个实施例中,在图卷积网络中,采用注意力机制动态计算节点间的权重;采用反向传播算法集合优化器更新图卷积网络中的模型参数;使用交叉熵损失函数来衡量预测输出与实际输出之间的差异,使用损失函数对图卷积网络进行优化。
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种基于深度学习的智能合约状态缺陷检测系统,包括:编译模块710、依赖特征确定模块720、图优化处理模块730、标准化处理模块740和预测模块750,其中:
编译模块710,用于从去中心化交易所DApp中确定若干智能合约,并将各个智能合约对应的Solidity智能合约源代码进行编译,生成抽象语法树;
依赖特征确定模块720,用于从抽象语法树中确定与智能合约状态对应的依赖特征;依赖特征包括声明依赖、表达式依赖、控制依赖、数据依赖、函数依赖;
图优化处理模块730,用于遍历抽象语法树,将各个智能合约转换为图,根据依赖特征进行图优化处理;
标准化处理模块740,用于使用词向量技术将优化后的图和依赖特征标准化,得到图结构数据;
预测模块750,用于将图结构数据输入至图卷积网络中,输出智能合约状态缺陷预测结果。
在一个实施例中,编译模块710还用于通过solcx工具对Solidity智能合约源代码进行编译,得到抽象语法树。
在一个实施例中,依赖特征确定模块720还用于确定智能合约状态缺陷代码的语法特征,并用数据结构表示语法特征;从抽象语法树中,根据数据结构提取出与语法特征匹配的源代码片段;将源代码片段作为与智能合约状态对应的依赖特征;其中,依赖特征包括节点特征、边特征。
在一个实施例中,依赖特征中的节点特征包括声明依赖、表达式依赖、控制依赖、数据依赖、函数依赖;其中,声明依赖包括变量和常量声明节点、函数和方法声明节点;表达式依赖,包括语法和表达式节点;控制依赖,包括控制依赖节点;数据依赖,包括数据依赖节点;函数依赖,包括函数依赖节点。
在一个实施例中,图优化处理模块730还用于从抽象语法树的根节点开始,逐步遍历每个子节点,并为遍历过程中的各个树节点分别创建对应的图节点;确定抽象语法树中的父子关系;根据父子关系,在各个图节点中添加边以连接节点,直到遍历完成,生成图。
在一个实施例中,图优化处理模块730还用于确定预定义标签集合,通过深度遍历对图中的节点、边进行优化处理,移除图中不在预定义标签集合中的节点和边。
在一个实施例中,标准化处理模块740还用于使用词向量技术将优化后的图和依赖特征,从文本数据转换为向量格式,得到优化后的图中每个节点的表示向量;对各个表示向量进行规范化处理,得到图结构数据。
在一个实施例中,预测模块750还用于将图结构数据输入至图卷积网络中,通过图卷积网络迭代传递节点特征学习,并使用softmax函数对图卷积网络中最后一层的节点特征和权重矩阵进行乘法运算,输出智能合约状态缺陷预测结果。
在一个实施例中,预测模块750还用于在图卷积网络中采用注意力机制动态计算节点间的权重;采用反向传播算法集合优化器更新图卷积网络中的模型参数;使用交叉熵损失函数来衡量预测输出与实际输出之间的差异,使用损失函数对图卷积网络进行优化。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于深度学习的智能合约状态缺陷检测方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现基于深度学习的智能合约状态缺陷检测方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现基于深度学习的智能合约状态缺陷检测方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于深度学习的智能合约状态缺陷检测方法,其特征在于,所述方法包括:
从去中心化交易所DApp中确定若干智能合约,并将各个所述智能合约对应的Solidity智能合约源代码进行编译,生成抽象语法树;
从所述抽象语法树中确定与智能合约状态对应的依赖特征;所述依赖特征包括声明依赖、表达式依赖、控制依赖、数据依赖、函数依赖;
遍历所述抽象语法树,将各个所述智能合约转换为图,根据所述依赖特征进行图优化处理;
使用词向量技术将优化后的图和依赖特征标准化,得到图结构数据;
将所述图结构数据输入至图卷积网络中,输出智能合约状态缺陷预测结果。
2.根据权利要求1所述的基于深度学习的智能合约状态缺陷检测方法,其特征在于,将各个所述智能合约对应的Solidity智能合约源代码进行编译,生成抽象语法树,包括:
通过solcx工具对Solidity智能合约源代码进行编译,得到抽象语法树。
3.根据权利要求1所述的基于深度学习的智能合约状态缺陷检测方法,其特征在于,所述方法还包括:
确定智能合约状态缺陷代码的语法特征,并用数据结构表示所述语法特征;
从所述抽象语法树中确定与智能合约状态对应的依赖特征,包括:
从所述抽象语法树中,根据所述数据结构提取出与所述语法特征匹配的源代码片段;
将所述源代码片段作为与智能合约状态对应的依赖特征;
其中,所述依赖特征包括节点特征、边特征。
4.根据权利要求3所述的基于深度学习的智能合约状态缺陷检测方法,其特征在于,所述依赖特征中的节点特征包括所述声明依赖、所述表达式依赖、所述控制依赖、所述数据依赖、所述函数依赖;其中,所述声明依赖包括变量和常量声明节点、函数和方法声明节点;所述表达式依赖,包括语法和表达式节点;所述控制依赖,包括控制依赖节点;所述数据依赖,包括数据依赖节点;所述函数依赖,包括函数依赖节点。
5.根据权利要求3所述的基于深度学习的智能合约状态缺陷检测方法,其特征在于,遍历所述抽象语法树,将各个所述智能合约转换为图,包括:
从所述抽象语法树的根节点开始,逐步遍历每个子节点,并为遍历过程中的各个树节点分别创建对应的图节点;
确定所述抽象语法树中的父子关系;
根据所述父子关系,在各个所述图节点中添加边以连接节点,直到遍历完成,生成图。
6.根据权利要求5所述的基于深度学习的智能合约状态缺陷检测方法,其特征在于,根据所述依赖特征进行图优化处理,包括:
确定预定义标签集合,通过深度遍历对图中的节点、边进行优化处理,移除所述图中不在所述预定义标签集合中的节点和边。
7.根据权利要求1所述的基于深度学习的智能合约状态缺陷检测方法,其特征在于,所述使用词向量技术将优化后的图和依赖特征标准化,得到图结构数据,包括:
使用词向量技术将优化后的图和依赖特征,从文本数据转换为向量格式,得到优化后的图中每个节点的表示向量;
对各个所述表示向量进行规范化处理,得到图结构数据。
8.根据权利要求1所述的基于深度学习的智能合约状态缺陷检测方法,其特征在于,将所述图结构数据输入至图卷积网络中,输出智能合约状态缺陷预测结果,包括:
将所述图结构数据输入至图卷积网络中,通过所述图卷积网络迭代传递节点特征学习,并使用softmax函数对所述图卷积网络中最后一层的节点特征和权重矩阵进行乘法运算,输出智能合约状态缺陷预测结果。
9.根据权利要求8所述的基于深度学习的智能合约状态缺陷检测方法,其特征在于,所述方法还包括:
在所述图卷积网络中,采用注意力机制动态计算节点间的权重;采用反向传播算法集合优化器更新所述图卷积网络中的模型参数;使用交叉熵损失函数来衡量预测输出与实际输出之间的差异,使用损失函数对所述图卷积网络进行优化。
10.一种基于深度学习的智能合约状态缺陷检测系统,其特征在于,所述系统包括:
编译模块,用于从去中心化交易所DApp中确定若干智能合约,并将各个所述智能合约对应的Solidity智能合约源代码进行编译,生成抽象语法树;
依赖特征确定模块,用于从所述抽象语法树中确定与智能合约状态对应的依赖特征;所述依赖特征包括声明依赖、表达式依赖、控制依赖、数据依赖、函数依赖;
图优化处理模块,用于遍历所述抽象语法树,将各个所述智能合约转换为图,根据所述依赖特征进行图优化处理;
标准化处理模块,用于使用词向量技术将优化后的图和依赖特征标准化,得到图结构数据;
预测模块,用于将所述图结构数据输入至图卷积网络中,输出智能合约状态缺陷预测结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410093751.6A CN117992060A (zh) | 2024-01-23 | 2024-01-23 | 基于深度学习的智能合约状态缺陷检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410093751.6A CN117992060A (zh) | 2024-01-23 | 2024-01-23 | 基于深度学习的智能合约状态缺陷检测方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117992060A true CN117992060A (zh) | 2024-05-07 |
Family
ID=90901969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410093751.6A Pending CN117992060A (zh) | 2024-01-23 | 2024-01-23 | 基于深度学习的智能合约状态缺陷检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117992060A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360915A (zh) * | 2021-06-09 | 2021-09-07 | 扬州大学 | 基于源代码图表示学习的智能合约多漏洞检测方法及系统 |
CN114547611A (zh) * | 2022-02-18 | 2022-05-27 | 扬州大学 | 一种基于多模态特征的智能合约庞氏骗局检测方法及系统 |
CN116089957A (zh) * | 2022-12-29 | 2023-05-09 | 河南大学 | 一种基于语法和语义特征融合的智能合约漏洞检测方法及装置 |
CN116643989A (zh) * | 2023-06-02 | 2023-08-25 | 湖州师范学院 | 一种采用图结构进行深层语义理解的缺陷预测方法 |
-
2024
- 2024-01-23 CN CN202410093751.6A patent/CN117992060A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360915A (zh) * | 2021-06-09 | 2021-09-07 | 扬州大学 | 基于源代码图表示学习的智能合约多漏洞检测方法及系统 |
CN114547611A (zh) * | 2022-02-18 | 2022-05-27 | 扬州大学 | 一种基于多模态特征的智能合约庞氏骗局检测方法及系统 |
CN116089957A (zh) * | 2022-12-29 | 2023-05-09 | 河南大学 | 一种基于语法和语义特征融合的智能合约漏洞检测方法及装置 |
CN116643989A (zh) * | 2023-06-02 | 2023-08-25 | 湖州师范学院 | 一种采用图结构进行深层语义理解的缺陷预测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109426722B (zh) | Sql注入缺陷检测方法、系统、设备及存储介质 | |
CN111639344B (zh) | 一种基于神经网络的漏洞检测方法及装置 | |
CN102339252A (zh) | 基于xml中间模型以及缺陷模式匹配的静态检测系统 | |
CN112989363B (zh) | 漏洞定位方法、装置、电子设备和存储介质 | |
CN117215935A (zh) | 一种基于多维度代码联合图表示的软件缺陷预测方法 | |
JP4951416B2 (ja) | プログラム検証方法、プログラム検証装置 | |
CN117113347A (zh) | 一种大规模代码数据特征提取方法及系统 | |
Megha et al. | Method to resolve software product line errors | |
CN117972732B (zh) | 基于多特征融合的智能合约漏洞检测方法及系统 | |
CN110347588B (zh) | 软件验证方法、装置、计算机设备和存储介质 | |
Saheb Nasagh et al. | A fuzzy genetic automatic refactoring approach to improve software maintainability and flexibility | |
Zhen et al. | DA-GNN: A smart contract vulnerability detection method based on Dual Attention Graph Neural Network | |
CN117725592A (zh) | 一种基于有向图注意力网络的智能合约漏洞检测方法 | |
WO2024049796A1 (en) | Systems and methods for legacy mbse diagram data importation using element specific ml models and schema templates | |
CN116702157A (zh) | 一种基于神经网络的智能合约漏洞检测方法 | |
CN116089289A (zh) | 一种基于多源异构数据的系统检测方法及装置 | |
CN117992060A (zh) | 基于深度学习的智能合约状态缺陷检测方法及系统 | |
Lin et al. | The impact of requirements changes on specifications and state machines | |
CN116628695A (zh) | 基于多任务学习的漏洞挖掘方法及装置 | |
CN118171291B (zh) | 代码漏洞检测大模型构建方法、装置和电子设备 | |
Yousofvand et al. | Automatic program bug fixing by focusing on finding the shortest sequence of changes | |
CN117556425B (zh) | 基于图神经网络的智能合约漏洞检测方法、系统和设备 | |
Lam | A Framework-Driven Comparison of Automata-Based Tools for Identifying Business Rule Conflicts | |
CN117473871B (zh) | 一种基于CATIA Magic的形式化系统建模方法 | |
CN115391780B (zh) | 应用代码的安全加固方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |