CN115391541A - 智能合约代码自动审查方法、存储介质和电子设备 - Google Patents
智能合约代码自动审查方法、存储介质和电子设备 Download PDFInfo
- Publication number
- CN115391541A CN115391541A CN202211084662.2A CN202211084662A CN115391541A CN 115391541 A CN115391541 A CN 115391541A CN 202211084662 A CN202211084662 A CN 202211084662A CN 115391541 A CN115391541 A CN 115391541A
- Authority
- CN
- China
- Prior art keywords
- code
- intelligent contract
- model
- contract code
- gram
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Strategic Management (AREA)
- Human Resources & Organizations (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Entrepreneurship & Innovation (AREA)
- General Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Marketing (AREA)
- Mathematical Physics (AREA)
- Economics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种智能合约代码自动审查方法、存储介质和电子设备,该方法包括以下步骤:获取多项不同类型的智能合约代码,并对获取的多项不同类型的智能合约代码进行分类和标注;对获取的智能合约代码进行分片,并对分片后的代码片段进行标准化处理;对标准化处理后的代码片段进行向量化,使其转换为训练模型可读取的数据;选择基础自然语言模型作为训练模型,调整参数对基础自然语言模型进行训练,得到代码检测模型;将向量化处理后的代码片段输入至代码检测模型,输出训练结果。通过上述方案能够基于训练模型对智能合约代码自动进行审计,降低合约审计成本、提升审计效率。
Description
技术领域
本发明涉及区块链技术领域,具体为一种智能合约代码自动审查方法、存储介质和电子设备。
背景技术
智能合约是存储在区块链上的程序,在满足预先确定的条件时会自动运行这些程序。它们通常用于自动执行协议,以便所有参与者都可以立即确定结果,而无需任何中间人参与,节省交易时间。它们还可以自动完成工作流程,在满足条件时触发下一个操作。
随着区块链技术的发展,越来越多的智能合约代码被部署在区块链上用于满足不同的功能。但有缺陷的智能合约代码往往会给用户带来不必要的损失,因此在智能合约部署之前,需要对智能合约进行安全审计。而目前安全审计的方法依然以人工为主,人工审计的方式需要花费较多的人力物力,无法满足快速扩张的业务需要。
发明内容
为此,需要提供一种智能合约代码自动审查的技术方案,用以解决现有的智能合约代码采用人工审查费时费力、效率低下的问题。
为实现上述目的,在第一方面,本发明提供了一种智能合约代码自动审查方法,所述方法包括以下步骤:
S1:获取多项不同类型的智能合约代码,并对获取的多项不同类型的智能合约代码进行分类和标注;
S2:对获取的智能合约代码进行分片,并对分片后的代码片段进行标准化处理;
S3:对标准化处理后的代码片段进行向量化,使其转换为训练模型可读取的数据;
S4:选择基础自然语言模型作为训练模型,调整参数对所述基础自然语言模型进行训练,得到代码检测模型;
S5:将向量化处理后的代码片段输入至所述代码检测模型,输出训练结果。
在一些实施例中,所述智能合约代码包括智能法律合约代码、DAO合约代码、应用逻辑合约代码、以及包含有多种不同类型恶意代码的智能合约代码中的任一项或多项。
在一些实施例中,所述对分片后的代码片段进行标准化处理包括:
提取分片后的代码片段的主观特征和/或客观特征;
所述主观特征和/或客观特征用于表示不同类型的智能合约代码的特征属性;所述特征属性包括代码片段对应的变量数量、代码行数、平均每个函数数量、空字符以及空格的数量、最大变量长度、注释数量、字符操作函数数量、执行类函数调用次数、系统函数调用数量、函数参数的最大长度、加解密函数调用数量中的任一项或多项。
在一些实施例中,所述方法包括:
通过统计分析智能合约代码集,将各项智能合约代码都满足的分析公共条件作为特征维度。
在一些实施例中,对标准化处理后的代码片段进行向量化包括:
在标准化处理后的代码片段中,以每个关键词作为一个特征向量维度,通过将关键词两两组合,得到一个Gram组合;
根据N-Gram语言模型计算各个Gram组合的概率,作为新的特征向量维度。
在一些实施例中,对标准化处理后的代码片段进行向量化还包括:
引入注意力机制进行训练,采用1-Gram、2-Gram、3-Gram加强数据覆盖,并使用决策树模型进行最后的结果输出。
在一些实施例中,所述方法还包括:
S6:根据步骤S5的训练结果对代码检测模型的各项参数进行调整。
在一些实施例中,所述方法还包括:
当判定输入至所述代码检测模型的代码片段为包含恶意代码的智能合约代码时,发出提示信息。
在第二方面,本发明提供了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被执行时实现如本发明第一方面所述的方法。
在第三方面,本发明还提供了一种电子设备,包括:
存储介质,为如本发明第二方面所述的存储介质;
处理器,与所述存储介质电连接,用于执行所述存储介质存储的计算机程序以实现如本发明第一方面所述的方法。
区别于现有技术,本发明具有以下特点:
本发明提供了一种智能合约代码自动审查方法、存储介质和电子设备,该方法包括以下步骤:获取多项不同类型的智能合约代码,并对获取的多项不同类型的智能合约代码进行分类和标注;对获取的智能合约代码进行分片,并对分片后的代码片段进行标准化处理;对标准化处理后的代码片段进行向量化,使其转换为训练模型可读取的数据;选择基础自然语言模型作为训练模型,调整参数对基础自然语言模型进行训练,得到代码检测模型;将向量化处理后的代码片段输入至代码检测模型,输出训练结果。通过上述方案能够基于训练模型对智能合约代码自动进行审计,降低合约审计成本、提升审计效率。
附图说明
图1为本发明第一种实施方式涉及的智能合约代码自动审查方法的流程图;
图2为本发明第二种实施方式涉及的智能合约代码自动审查方法的流程图;
图3为本发明第三种实施方式涉及的智能合约代码自动审查方法的流程图;
图4为本发明一实施方式涉及的电子设备的示意图。
具体实施方式
为详细说明本申请可能的应用场景,技术原理,可实施的具体方案,能实现目的与效果等,以下结合所列举的具体实施例并配合附图详予说明。本文所记载的实施例仅用于更加清楚地说明本申请的技术方案,因此只作为示例,而不能以此来限制本申请的保护范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中各个位置出现的“实施例”一词并不一定指代相同的实施例,亦不特别限定其与其它实施例之间的独立性或关联性。原则上,在本申请中,只要不存在技术矛盾或冲突,各实施例中所提到的各项技术特征均可以以任意方式进行组合,以形成相应的可实施的技术方案。
除非另有定义,本文所使用的技术术语的含义与本申请所属技术领域的技术人员通常理解的含义相同;本文中对相关术语的使用只是为了描述具体的实施例,而不是旨在限制本申请。
在本申请的描述中,用语“和/或”是一种用于描述对象之间逻辑关系的表述,表示可以存在三种关系,例如A和/或B,表示:存在A,存在B,以及同时存在A和B这三种情况。另外,本文中字符“/”一般表示前后关联对象是一种“或”的逻辑关系。
在本申请中,诸如“第一”和“第二”之类的用语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何实际的数量、主次或顺序等关系。
在没有更多限制的情况下,在本申请中,语句中所使用的“包括”、“包含”、“具有”或者其他类似的表述,意在涵盖非排他性的包含,这些表述并不排除在包括要素的过程、方法或者产品中还可以存在另外的要素,从而使得包括一系列要素的过程、方法或者产品中不仅可以包括那些限定的要素,而且还可以包括没有明确列出的其他要素,或者还包括为这种过程、方法或者产品所固有的要素。
与《审查指南》中的理解相同,在本申请中,“大于”、“小于”、“超过”等表述理解为不包括本数;“以上”、“以下”、“以内”等表述理解为包括本数。此外,在本申请实施例的描述中“多个”的含义是两个以上(包括两个),与之类似的与“多”相关的表述亦做此类理解,例如“多组”、“多次”等,除非另有明确具体的限定。
如图1所示,在第一方面,本发明提供了一种智能合约代码自动审查方法,所述方法包括以下步骤:
S1:获取多项不同类型的智能合约代码,并对获取的多项不同类型的智能合约代码进行分类和标注;
S2:对获取的智能合约代码进行分片,并对分片后的代码片段进行标准化处理;
S3:对标准化处理后的代码片段进行向量化,使其转换为训练模型可读取的数据;
S4:选择基础自然语言模型作为训练模型,调整参数对所述基础自然语言模型进行训练,得到代码检测模型;
S5:将向量化处理后的代码片段输入至所述代码检测模型,输出训练结果。
在本实施方式中,步骤S1中对获取的多项不同类型的智能合约代码进行分类和标注是指将智能合约代码按照类型进行分类后,通过标注对类别作进一步区分。步骤S2中标准化处理是指将智能合约代码格式转换为符合预定规范的计算机程序。
在本实施方式中,所述智能合约代码包括智能法律合约代码、DAO合约代码、应用逻辑合约代码、以及包含有多种不同类型恶意代码的智能合约代码中的任一项或多项。通过提取不同类型的智能合约代码的特征输入到训练模型进行训练,使得训练完成的模型一旦检测到包含恶意代码的智能合约代码,就可以及时自动发现,从而完成安全审计。
在本实施方式中,,所述对分片后的代码片段进行标准化处理包括:提取分片后的代码片段的主观特征和/或客观特征;
所述主观特征和/或客观特征用于表示不同类型的智能合约代码的特征属性。
所述特征属性包括代码片段对应的变量数量、代码行数、平均每个函数数量、空字符以及空格的数量、最大变量长度、注释数量、字符操作函数数量、执行类函数调用次数、系统函数调用数量、函数参数的最大长度、加解密函数调用数量中的任一项或多项。
进一步地,所述方法包括:通过统计分析智能合约代码集,将各项智能合约代码都满足的分析公共条件作为特征属性。通过提取各项智能合约代码都满足的分析公共条件作为特征属性,能够方便后续训练模型对于各项智能合约代码的训练计算。
如图2所示,在某些实施例中,对标准化处理后的代码片段进行向量化包括:
首先进入步骤S201在标准化处理后的代码片段中,以每个关键词作为一个特征向量维度,通过将关键词两两组合,得到一个Gram组合;
而后进入步骤S202根据N-Gram语言模型计算各个Gram组合的概率,作为新的特征向量维度。
优选的,本申请以N-Gram模型为基础进行向量特征化,N-Gram模型的基本思想是将文本(如智能合约代码片段)里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。每一个字节片段称为gram,而后对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。N-Gram模型包括二元的Bi-Gram模型和三元的Tri-Gram模型。
在一些场景下由于语料数据集不是很多,为了提取更多的特征,这个时候可以考虑采用N-Gram,以Bi-Gram模型为例,在原始文本中,以每个关键词作为一个特征,通过将关键词两两组合,得到一个Bi-Gram组合,再根据N-Gram语言模型,计算各个Bi-Gram组合的概率,作为新的特征向量维度。
为了提升用N-Gram的泛化能力,提升其对智能合约代码的识别度,针对智能合约代码稀疏简洁的特性,在本实施方式中,对标准化处理后的代码片段进行向量化还包括:引入注意力机制进行训练,采用1-Gram、2-Gram、3-Gram加强数据覆盖,并使用决策树模型进行最后的结果输出。
在某些实施例中,所述方法还包括:S6:根据步骤S5的训练结果对代码检测模型的各项参数进行调整。具体的,可以将特征向量化的代码数据作为模型输入,运行训练过程代码,经过多轮迭代生成一个可部署的检测算法模型。而后根据系统硬件开发算法模型调度系统,使用者只需要输入相应的智能合约代码,结合独创的合约代码预分析程序,检测系统就可以返回模型的判断结果,为代码安全审计人员提供参考。
进一步地,所述方法还包括:当判定输入至所述代码检测模型的代码片段为包含恶意代码的智能合约代码时,发出提示信息。代码安全审计人员可以根据信息提示及时对包含恶意代码的智能合约代码进行处理。提升信息可以是语音、弹窗、振动等提示信息。
如图3所示,本申请提供的智能合约代码自动审查方法,首先收集不同类型的智能合约代码,而后对数据进行标注、标准化处理、向量化处理后,将数据输入至自然语言模型中进行训练,并在训练过程中不断根据训练结果的好坏对训练参数进行优化,而后部署训练完成的模型。当接收到待审计的智能合约代码后,训练完成的模型就可以对输入的待审计的智能合约代码进行自动审查,从而极大提升了审查效率。与现有技术相比,本申请在对一般代码检测和分类的基础上,拓展了语言模型的应用领域,同时增加了对智能合约代码进行检测的能力。
在第二方面,本发明还提供了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被执行时实现如本发明第一方面所述的方法。
在第三方面,如图4所示,本发明还提供了一种电子设备10,包括存储介质102和处理器101,存储介质102为如第二方面所述的存储介质;处理器101与所述存储介质102电连接,用于执行所述存储介质存储的计算机程序以实现如第一方面所述的方法。
优选的,电子设备可以为计算机设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等。存储介质包括但不限于:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。处理器包括但不限于CPU(中央处理器)、GPU(图像处理器)、MCU(微处理器)等。
尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。
Claims (10)
1.一种智能合约代码自动审查方法,其特征在于,所述方法包括以下步骤:
S1:获取多项不同类型的智能合约代码,并对获取的多项不同类型的智能合约代码进行分类和标注;
S2:对获取的智能合约代码进行分片,并对分片后的代码片段进行标准化处理;
S3:对标准化处理后的代码片段进行向量化,使其转换为训练模型可读取的数据;
S4:选择基础自然语言模型作为训练模型,调整参数对所述基础自然语言模型进行训练,得到代码检测模型;
S5:将向量化处理后的代码片段输入至所述代码检测模型,输出训练结果。
2.如权利要求1所述的智能合约代码自动审查方法,其特征在于,所述智能合约代码包括智能法律合约代码、DAO合约代码、应用逻辑合约代码、以及包含有多种不同类型恶意代码的智能合约代码中的任一项或多项。
3.如权利要求1所述的智能合约代码自动审查方法,其特征在于,所述对分片后的代码片段进行标准化处理包括:
提取分片后的代码片段的主观特征和/或客观特征;
所述主观特征和/或客观特征用于表示不同类型的智能合约代码的特征属性;所述特征属性包括代码片段对应的变量数量、代码行数、平均每个函数数量、空字符以及空格的数量、最大变量长度、注释数量、字符操作函数数量、执行类函数调用次数、系统函数调用数量、函数参数的最大长度、加解密函数调用数量中的任一项或多项。
4.如权利要求3所述的智能合约代码自动审查方法,其特征在于,所述方法包括:
通过统计分析智能合约代码集,将各项智能合约代码都满足的分析公共条件作为特征维度。
5.如权利要求1所述的智能合约代码自动审查方法,其特征在于,对标准化处理后的代码片段进行向量化包括:
在标准化处理后的代码片段中,以每个关键词作为一个特征向量维度,通过将关键词两两组合,得到一个Gram组合;
根据N-Gram语言模型计算各个Gram组合的概率,作为新的特征向量维度。
6.如权利要求5所述的智能合约代码自动审查方法,其特征在于,对标准化处理后的代码片段进行向量化还包括:
引入注意力机制进行训练,采用1-Gram、2-Gram、3-Gram加强数据覆盖,并使用决策树模型进行最后的结果输出。
7.如权利要求1所述的智能合约代码自动审查方法,其特征在于,所述方法还包括:
S6:根据步骤S5的训练结果对代码检测模型的各项参数进行调整。
8.如权利要求1所述的智能合约代码自动审查方法,其特征在于,所述方法还包括:
当判定输入至所述代码检测模型的代码片段为包含恶意代码的智能合约代码时,发出提示信息。
9.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,所述计算机程序被执行时实现如权利要求1至8任一项所述的方法。
10.一种电子设备,其特征在于,包括:
存储介质,为如权利要求9所述的存储介质;
处理器,与所述存储介质电连接,用于执行所述存储介质存储的计算机程序以实现如权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211084662.2A CN115391541A (zh) | 2022-09-06 | 2022-09-06 | 智能合约代码自动审查方法、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211084662.2A CN115391541A (zh) | 2022-09-06 | 2022-09-06 | 智能合约代码自动审查方法、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115391541A true CN115391541A (zh) | 2022-11-25 |
Family
ID=84123850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211084662.2A Pending CN115391541A (zh) | 2022-09-06 | 2022-09-06 | 智能合约代码自动审查方法、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115391541A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116611074A (zh) * | 2023-07-17 | 2023-08-18 | 北京奇虎科技有限公司 | 安全信息审查方法、设备、存储介质及装置 |
-
2022
- 2022-09-06 CN CN202211084662.2A patent/CN115391541A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116611074A (zh) * | 2023-07-17 | 2023-08-18 | 北京奇虎科技有限公司 | 安全信息审查方法、设备、存储介质及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109872162B (zh) | 一种处理用户投诉信息的风控分类识别方法及系统 | |
US11544459B2 (en) | Method and apparatus for determining feature words and server | |
WO2020005731A1 (en) | Text entity detection and recognition from images | |
CN111444723A (zh) | 信息抽取模型训练方法、装置、计算机设备和存储介质 | |
CN111177367B (zh) | 案件分类方法、分类模型训练方法及相关产品 | |
WO2016177069A1 (zh) | 一种管理方法、装置、垃圾短信监控系统及计算机存储介质 | |
CN113254643B (zh) | 文本分类方法、装置、电子设备和 | |
CN110580308A (zh) | 信息审核方法及装置、电子设备、存储介质 | |
CN111695337A (zh) | 智能面试中专业术语的提取方法、装置、设备及介质 | |
CN112116436A (zh) | 一种智能推荐方法、装置、计算机设备及可读存储介质 | |
CN113934848B (zh) | 一种数据分类方法、装置和电子设备 | |
CN111931491A (zh) | 领域词典构建方法及装置 | |
US11934556B2 (en) | Identifying sensitive content in electronic files | |
CN115391541A (zh) | 智能合约代码自动审查方法、存储介质和电子设备 | |
CN115098440A (zh) | 电子档案查询方法、装置、存储介质和设备 | |
CN114722199A (zh) | 基于通话录音的风险识别方法、装置、计算机设备及介质 | |
CN110705282A (zh) | 关键词提取方法、装置、存储介质及电子设备 | |
CN110750619A (zh) | 聊天记录关键词的提取方法、装置、计算机设备及存储介质 | |
CN110972086A (zh) | 短信息处理方法、装置、电子设备及计算机可读存储介质 | |
CN115374793B (zh) | 基于服务场景识别的语音数据处理方法及相关装置 | |
CN114266255B (zh) | 基于聚类模型的语料分类方法、装置、设备及存储介质 | |
CN113095073B (zh) | 语料标签生成方法、装置、计算机设备和存储介质 | |
CN113326536A (zh) | 应用程序的合规性判别方法和装置 | |
CN112417886A (zh) | 意图实体信息抽取方法、装置、计算机设备及存储介质 | |
CN113283232A (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 |