CN117473170A - 基于代码表征的智能合约模版推荐方法、装置及电子设备 - Google Patents
基于代码表征的智能合约模版推荐方法、装置及电子设备 Download PDFInfo
- Publication number
- CN117473170A CN117473170A CN202311822325.3A CN202311822325A CN117473170A CN 117473170 A CN117473170 A CN 117473170A CN 202311822325 A CN202311822325 A CN 202311822325A CN 117473170 A CN117473170 A CN 117473170A
- Authority
- CN
- China
- Prior art keywords
- contract
- intelligent contract
- code
- feature
- template
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 99
- 238000012512 characterization method Methods 0.000 title claims abstract description 44
- 238000004458 analytical method Methods 0.000 claims abstract description 49
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 39
- 238000000605 extraction Methods 0.000 claims abstract description 28
- 238000007781 pre-processing Methods 0.000 claims abstract description 21
- 238000004364 calculation method Methods 0.000 claims abstract description 15
- 238000005192 partition Methods 0.000 claims abstract description 11
- 239000013598 vector Substances 0.000 claims description 24
- 230000006870 function Effects 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 14
- 238000010606 normalization Methods 0.000 claims description 13
- 230000001131 transforming effect Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 8
- 238000011156 evaluation Methods 0.000 claims description 7
- 230000004913 activation Effects 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 5
- 230000009466 transformation Effects 0.000 claims description 4
- 238000011176 pooling Methods 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 10
- 238000011161 development Methods 0.000 description 9
- 230000018109 developmental process Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 238000010276 construction Methods 0.000 description 8
- 238000005520 cutting process Methods 0.000 description 8
- 238000012549 training Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 239000000306 component Substances 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 238000013145 classification model Methods 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 230000008034 disappearance Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000011049 filling Methods 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003339 best practice Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- 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
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/216—Parsing using statistical methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- 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/045—Combinations of networks
- G06N3/0455—Auto-encoder networks; Encoder-decoder 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]
-
- 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/08—Learning methods
- G06N3/091—Active 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/048—Activation functions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Databases & Information Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种基于代码表征的智能合约模版推荐方法、装置及电子设备,其中,方法包括:收集以太坊的智能合约代码并进行数据预处理,生成待编码数据;基于特征编码器对待编码数据进行编码,得到合约代码特征;基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出合约代码特征中各特征划分的标量值,基于归一化指数函数Softmax对合约代码特征中各特征划分的标量值进行变换并输出分析结果。基于分析结果构建智能合约模板库,通过相似度计算为推荐用户提供智能合约模版。本发明基于代码表征的方式用于区块链智能合约代码的特征提取任务中,根据智能合约代码的特性构建合约特征解码器,提升了系统的整体性能。
Description
技术领域
本公开涉及智能合约技术,尤其是一种基于代码表征的智能合约模版推荐方法、装置、电子设备及存储介质。
背景技术
智能合约是一种基于区块链技术的自动化合约,它可以在没有中间人的情况下,执行双方间的交易或协议。智能合约作为区块链技术中四大核心技术之一,可以应用于各种场景,如金融服务、物流、医疗保健、房地产等领域,使得各种交易和协议变得更加高效、便捷和安全。随着区块链技术的不断发展,截至2021年9月底,以太坊网络上已经部署了超过2000万个智能合约。智能合约的分析和模版推荐可以帮助用户更好地了解智能合约的应用领域和特点,从而更好地选择适合自己需求的智能合约模版。
现有技术的一种区块链智能合约模版的处理方法中,根据已存储的智能合约模块信息训练基于k邻近KNN算法分类模型,以得到KNN算法所需的最优邻近距离值,将新智能合约信息输入至训练完成的分类模型,以预测新智能合约模版的类别,同时使用PageRank算法确定新智能合约模版类别,以确定该所属类别的最优智能合约模版,以降低人工成本。
当前智能合约模版推荐主要存在两点不足,其中第一点是对新兴合约类型的适应性差,即现有方法通常是建立在预定义的合约类别上,对新兴的合约类型可能无法进行准确特征提取,由于智能合约领域不断演进和创新,现有方法可能无法及时适应新合约类型的分类需求。第二点是当前智能合约分析模型无法处理语义相似但结构不同的合约,即当前传统的基于规则或基于机器学习的方法往往只考虑语法结构,而忽略了合约的语义信息,这将导致一些语义相似但结构不同的合约被错误的分类为不同的类别,同时当前的代码特征提取方法无法实现较长片段的特征提取,从而影响最终合约模版库的自动化构建。
因此,需要一种或多种方法解决上述问题。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供基于代码表征的智能合约模版推荐方法、装置、电子设备及存储介质,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。
根据本公开的一个方面,提供基于代码表征的智能合约模版推荐方法,包括:
收集以太坊的智能合约代码,并对所述智能合约代码进行数据预处理,生成待编码数据;
基于特征编码器对所述待编码数据进行编码,得到合约代码特征,在所述合约代码特征中构建用于解码器分析所使用的Token标记;
基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值,基于归一化指数函数Softmax对所述合约代码特征中各特征划分的标量值进行变换并输出所述合约代码特征中各特征划分的分析结果;
基于所述合约代码特征中各特征划分的分析结果构建智能合约模板库,通过相似度计算为推荐用户提供智能合约模版。
在本公开的一种示例性实施例中,所述对所述智能合约代码进行数据预处理包括:
去除所述智能合约代码中标点符号和常用词;
将去除标点符号和常用词的所述智能合约代码投入嵌入层进行包含合约代码位置编码信息的待编码数据;
通过通道将所述待编码数据拼接转换为基于特征编码器的参数形式。
在本公开的一种示例性实施例中,基于特征编码器对所述待编码数据进行编码,得到合约代码特征,还包括:
基于特征编码器对所述待编码数据基于自注意力层捕捉输入序列内部的依赖关系和建立上下文之间的联系;
基于全连接层对输入序列的特征进行线性变化的映射和变换,引入非线性激活函数,对输入序列实现非线性处理;
基于残差连接和归一化对所述自注意力层、全连接层进行优化,实现对所述待编码数据进行编码,得到合约代码特征。
在本公开的一种示例性实施例中,基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值还包括:
基于卷积神经网络CNN对编码器得到的合约代码特征进行分析,确定卷积核的数量;
基于所述数量的卷积核,通过全局最大池化提取出所述合约代码特征中各特征划分的标量值。
在本公开的一种示例性实施例中,所述方法还包括:
基于预设智能合约表征提取模型评估指标对所述合约代码特征中各特征划分的标量值进行变换生成的结果进行评估,得到所述合约代码特征中各特征划分的分析结果。
在本公开的一种示例性实施例中,基于所述合约代码特征中各特征划分的分析结果构建智能合约模板库,还包括:
基于所述合约代码特征中各特征划分的分析结果创建与智能合约类别对应的数量的模版库;
基于智能合约代码的类别对智能合约代码收集到与所述智能合约代码相应的模块库中,建立代码与类别的映射关系;
设定各模板库标签、描述元数据,并定期对所述模板库进行维护。
在本公开的一种示例性实施例中,为推荐用户提供智能合约模版还包括:
基于合约方向按照类别进行检索结果为推荐用户提供智能合约模版;
根据合约代码计算合约向量,基于所述合约向量与智能合约模版的匹配相似度为推荐用户提供智能合约模版。
在本公开的一个方面,提供基于代码表征的智能合约模版推荐装置,包括:
合约收集模块,用于收集以太坊的智能合约代码,并对所述智能合约代码进行数据预处理,生成待编码数据;
特征编码模块,用于基于特征编码器对所述待编码数据进行编码,得到合约代码特征,在所述合约代码特征中构建用于解码器分析所使用的Token标记;
特征解码模块,用于基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值,基于归一化指数函数Softmax对所述合约代码特征中各特征划分的标量值进行变换并输出所述合约代码特征中各特征划分的分析结果;
模版库推荐模块,用于基于所述合约代码特征中各特征划分的分析结果构建智能合约模板库,通过相似度计算为推荐用户提供智能合约模版。
在本公开的一个方面,提供一种电子设备,包括:
处理器;以及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现根据上述任意一项所述的方法。
在本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据上述任意一项所述的方法。
基于本公开实施例,收集以太坊的智能合约代码并进行数据预处理,生成待编码数据;基于特征编码器对所述待编码数据进行编码,得到合约代码特征;基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值,基于归一化指数函数Softmax对所述合约代码特征中各特征划分的标量值进行变换并输出分析结果。基于所述分析结果构建智能合约模板库,通过相似度计算为推荐用户提供智能合约模版。本公开实施例基于代码表征的方式用于区块链智能合约代码的特征提取任务中,并根据智能合约代码的特性构建一种基于CNN的合约特征解码器,进一步提升了系统的整体性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1为本公开方法一个实施例基于代码表征的智能合约模版推荐方法的流程图;
图2为本公开方法一个实施例基于代码表征的智能合约模版推荐方法的整体架构图;
图3为本公开方法一个实施例基于代码表征的智能合约模版推荐方法的逻辑流程图;
图4为本公开方法一个实施例基于代码表征的智能合约模版推荐方法的合约预处理流程图;
图5为本公开方法一个实施例基于代码表征的智能合约模版推荐方法的自注意力层结构图;
图6为本公开方法一个实施例基于代码表征的智能合约模版推荐方法的特征解码器整体架构图;
图7为本公开方法一个实施例基于代码表征的智能合约模版推荐方法的合约模板库统计结果示意图;
图8为本公开方法一个实施例基于代码表征的智能合约模版推荐方法的合约模板推荐整体架构图;
图9为本公开方法一个实施例基于代码表征的智能合约模版推荐装置的结构框图;
图10为本公开方法一个实施例的电子设备的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有所述特定细节中的一个或更多,或者可以采用其它的方法、组元、材料、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个软件硬化的模块中实现这些功能实体或功能实体的一部分,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
图1为本公开方法一个实施例基于代码表征的智能合约模版推荐方法的流程图。参考图1中所示,该基于代码表征的智能合约模版推荐方法可以包括以下步骤:
步骤S110,收集以太坊的智能合约代码,并对所述智能合约代码进行数据预处理,生成待编码数据;
步骤S120,基于特征编码器对所述待编码数据进行编码,得到合约代码特征,在所述合约代码特征中构建用于解码器分析所使用的Token标记;
步骤S130,基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值,基于归一化指数函数Softmax对所述合约代码特征中各特征划分的标量值进行变换并输出所述合约代码特征中各特征划分的分析结果;
步骤S140,基于所述合约代码特征中各特征划分的分析结果构建智能合约模板库,通过相似度计算为推荐用户提供智能合约模版。
基于本公开实施例,收集以太坊的智能合约代码并进行数据预处理,生成待编码数据;基于特征编码器对所述待编码数据进行编码,得到合约代码特征;基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值,基于归一化指数函数Softmax对所述合约代码特征中各特征划分的标量值进行变换并输出分析结果。基于所述分析结果构建智能合约模板库,通过相似度计算为推荐用户提供智能合约模版。本公开实施例基于代码表征的方式用于区块链智能合约代码的特征提取任务中,并根据智能合约代码的特性构建一种基于CNN的合约特征解码器,进一步提升了系统的整体性能。
下面,对本公开实施例中基于代码表征的智能合约模版推荐方法进行进一步的说明。
实施例一:
在步骤S110中,可以收集以太坊的智能合约代码,并对所述智能合约代码进行数据预处理,生成待编码数据。
在本示例的一些可选实施例中,所述对所述智能合约代码进行数据预处理包括:
去除所述智能合约代码中标点符号和常用词;
将去除标点符号和常用词的所述智能合约代码投入嵌入层进行包含合约代码位置编码信息的待编码数据;
通过通道将所述待编码数据拼接转换为基于特征编码器的参数形式。
在步骤S120中,可以基于特征编码器对所述待编码数据进行编码,得到合约代码特征,在所述合约代码特征中构建用于解码器分析所使用的Token标记。
在本示例的一些可选实施例中,基于特征编码器对所述待编码数据进行编码,得到合约代码特征,还包括:
基于特征编码器对所述待编码数据基于自注意力层捕捉输入序列内部的依赖关系和建立上下文之间的联系;
基于全连接层对输入序列的特征进行线性变化的映射和变换,引入非线性激活函数,对输入序列实现非线性处理;
基于残差连接和归一化对所述自注意力层、全连接层进行优化,实现对所述待编码数据进行编码,得到合约代码特征。
在步骤S130中,可以基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值,基于归一化指数函数Softmax对所述合约代码特征中各特征划分的标量值进行变换并输出所述合约代码特征中各特征划分的分析结果。
在本示例的一些可选实施例中,基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值还包括:
基于卷积神经网络CNN对编码器得到的合约代码特征进行分析,确定卷积核的数量;
基于所述数量的卷积核,通过全局最大池化提取出所述合约代码特征中各特征划分的标量值。
在本示例的一些可选实施例中,所述方法还包括:
基于预设智能合约表征提取模型评估指标对所述合约代码特征中各特征划分的标量值进行变换生成的结果进行评估,得到所述合约代码特征中各特征划分的分析结果。
在步骤S140中,可以基于所述合约代码特征中各特征划分的分析结果构建智能合约模板库,通过相似度计算为推荐用户提供智能合约模版。
在本示例的一些可选实施例中,基于所述合约代码特征中各特征划分的分析结果构建智能合约模板库,还包括:
基于所述合约代码特征中各特征划分的分析结果创建与智能合约类别对应的数量的模版库;
基于智能合约代码的类别对智能合约代码收集到与所述智能合约代码相应的模块库中,建立代码与类别的映射关系;
设定各模板库标签、描述元数据,并定期对所述模板库进行维护。
在本示例的一些可选实施例中,为推荐用户提供智能合约模版还包括:
基于合约方向按照类别进行检索结果为推荐用户提供智能合约模版;
根据合约代码计算合约向量,基于所述合约向量与智能合约模版的匹配相似度为推荐用户提供智能合约模版。
在本示例的一些可选实施例中,传统的智能合约特征提取方法主要基于RNN、LSTM和注意力机制,本发明将基于代码表征的方式用于区块链智能合约代码的特征提取任务中,并根据智能合约代码的特性构建一种基于CNN的合约特征解码器,进一步提升该方案的整体性能;与传统的智能合约模版推荐方法相比,本发明提出了一种智能的且可靠的合约模版推荐方法,即根据所述合约代码表征提取模型结果,构建智能合约模版库,为开发者提供一种持续优化的智能合约模板推荐方法,有效降低智能合约开发者门槛,推动更多人参与到智能合约开发的领域中来。
实施例二:
在本示例的一些可选实施例中,如图2所示,本发明揭示了一种基于代码表征的智能合约模版推荐方法,旨通过深度学习模型的搭建,实现对智能合约的语意理解和模式的识别,并根据结果构建持续优化的智能合约模版库,通过所述模板库的推荐可以提高合约的开发效率和质量。该方案整体可分为四个部分,其中第一部分对收集的以太坊智能合约代码进行预处理操作,主要包括去除源代码中部分标点符号和常用词(例如版本信息等),将处理后的合约代码投入嵌入层进行特征编码,其中包含合约代码位置编码信息,最后通过通道拼接转换为特征编码器所能接收的参数形式;第二部分为编码部分,本方案使用12层的特征编码器进行编码,同时每个特征编码器中使用12头自注意力机制,通过特征编码器中的注意力机制可以有效对合约代码全局信息进行感知,并使用特殊标记的方式来构建用于解码器分析时所使用的Token标记;第三部分为解码部分,本发明使用CNN对编码器得到的合约代码特征进行分析,并根据最终分析结果使用固定数量的卷积核,通过全局最大池化提取出每种特征划分的标量值,最终通过Softmax对用于合约特征分析的标量值进行变换并输出各类别所对应的分析结果。第四部分根据合约分析结果构建智能合约模板库,通过相似度计算等,为用户提供智能合约模版推荐功能。
基于代码表征的智能合约模版推荐方法实现流程如下,如图3所示,本发明主要分为四部分,分别为数据收集、模型搭建、模型训练、搭建智能合约模板库和合约模版推荐。数据收集主要包括智能合约代码和描述数据,并对数据进行预处理,包括代码的词法分析、语法分析和语义分析等;模型搭建部分主要包括所述智能合约代码表征提取模型的搭建,其包括嵌入层、特征编码器和特征解码器三部分构成;模型训练过程主要包括将预处理后的智能合约数据作为训练集,将合约代码和描述输入到所述智能合约代码表征提取模型中,并在训练过程中使用交叉熵损失函数进行特征提取的优化,以调整模型参数提高合约代码特征提取的准确性;智能合约模版库主要包括上述模型分析结果以及每种类别合约对应的特征属性,对于待推荐的智能合约,计算其与各个模版的相似度,选取相似度最高的模版进行推荐。整体利用测试集来评估模版库构建的准确性,主要使用准确性、召回率和F1分数等指标,以确保所述推荐方法的性能和鲁棒性。
在本示例的一些可选实施例中,代码表征提取模型的搭建包括:
所述合约代码表征提取模型主要由合约预处理、合约特征编码器和合约特征解码器三部分构成,在合约编码器部分同时使用多头注意力机制,使编码部分具备了深入理解智能合约语义的能力,并能应对不断变化的智能合约特征,在合约解码器部分使用多层卷积神经网络配合全局最大池化的方法实现对编码器特征的解码,实现了逐层提取更加抽象和高级特征表示的能力,从而更好的捕捉智能合约代码中的语义和结构信息,为后续模板库的搭建提供有效数据来源。接下来将对上述合约代码表征提取模型展开详细描述。
在本示例的一些可选实施例中,如图4所示,合约预处理包括三步。分别为合约代码分词处理、合约代码词嵌入和合约代码位置嵌入,接下来展开详细描述。
Step1:分词处理部分通过WordPiece对代码进行分词,可以有效的去除代码噪音,同时将合约代码转换为编码器能接受的输入方式。其流程主要包括去除合约代码片段中注释、标点符号等无关信息以及代码的归一化处理;接着统计智能合约代码数据集中每个字符或字词的出现频率,生成词频统计表;然后根据词频统计表迭代训练WordPiece,在迭代过程中根据词频统计表和切割规则计算每个切割点的得分,并选择得分最高的切割点进行切割,重复迭代上述过程直到达到预设的词表大小或切割得分不再增加为止;最后使用上述训练好的WordPiece对智能合约代码进行分词操作,即遍历智能合约代码的每个字符,然后根据词表和切割规则将代码切成子词序列,如果某个子词在词表中不存在,将其拆分为更小的子词,直到所有子词都在词表中存在。
Step2:为合约代码词嵌入层,将预处理后的智能合约代码转换为Token进行标记化,通常标记化过程中将代码字符串分割成词汇表中的单词、标点符号或其他符号。接着将标记化后的代码转换为TokenIDs,使得每个Token标记都对应词汇表中的唯一标识符,可以通过查找词汇表中每个Token的标识符来实现。同时在Token首部加入CLS特殊Token标记,以作为一个拥有合约代码全局特征的合约聚合序列表示,该Token标记在经过编码器编码后,直接用于模型后续合约解码器的输入。如果编码后的Token序列长度小于最大代码长度,则使用填充标记将其填充至相同长度,如果编码后的Token序列长度超过最大代码长度,则根据设定策略对其进行截断,确保序列长度一致。
Step3:考虑合约代码位置信息的影响,本方案搭建合约代码位置嵌入层,该层通常使用正余弦位置编码方式,对合约代码位置信息进行嵌入,由于位置嵌入和词嵌入维度相同,因此最终对两者编码在通道维度上进行叠加。具体实现过程为首先确定输入序列的最大长度,然后创建一个位置编码矩阵,大小为(L,d),其中L是最大序列长度,d是隐藏层维度。其中位置编码矩阵每个位置都对应一个d维向量,以表示该位置的位置编码。同时对于合约位置编码矩阵中的每个位置,根据其在序列中的位置信息计算位置编码向量,其中位置编码公式如下:
偶数位编码:
PE(pos,2i)= sin(pos/100002i/dmodel)(1)
奇数位编码:
PE(pos,2i+1)= cos(pos/100002i/dmodel)(2)
其中公式中的pos表示位置,i表示位置编码的维度索引,dmodel是隐藏层维度。最后将计算得到的位置编码向量按元素加到输入序列的嵌入向量上,即将位置编码向量与输入序列的嵌入向量相加,以在嵌入层融合合约代码的位置信息和语义信息。通过以上合约预处理可以将位置编码将位置信息编码到输入序列的嵌入表示中,这样后续模型在处理序列时会同时考虑代码的位置信息和语义信息,从而更好地捕捉序列中的结构和顺序关系。其中所述位置编码使得后续模型能够处理不同位置的代码片段,并在训练过程中学习到它们的相对位置关系。
在本示例的一些可选实施例中,特征编码器包括:
编码器部分主要实现对输入Token(合约代码预处理后的向量表示)的特征编码,由于Transformer中的编码器具有强大的特征提取能力,因此本发明在编码部分结合了Transformer和自注意力机制实现对输入特征进行编码,同时连续使用12个编码块进行叠加。所述合约特征编码器能够自动学习智能合约代码中的特征表示,并通过自注意力机制捕捉不同代码片段之间的依赖关系,从而模型可以深入理解代码的结构、语义和上下文信息。同时考虑智能合约通常包含大量的代码,为了让编码器能有效处理长文本序列,本方案使用多头的自注意力机制,以提高编码器的泛化能力和效率。整体编码过程主要分为三步,分别为自注意力层、全连接层和残差/归一化功能,接下来将对上述三部分展开详细描述。
第一部分为自注意力层,该层是所述特征编码器的核心组成部分,用于捕捉输入序列内部的依赖关系和建立上下文之间的联系。自注意力层在智能合约代码特征提取过程中提供了特征交互、上下文关联和长距离依赖等功能,其中特征交互旨自注意力机制能够对输入序列中的每个位置与其他位置进行交互,便于捕捉序列内部的依赖关系和语义信息,通过计算位置之间的相对权重,从而对不同位置的代码特征进行加权组合;上下文关联旨其能够对每个位置与其他位置的代码相关性进行建模,从而将全局上下文信息纳入考虑,其中每个位置都可以利用其他位置的特征进行编码,从而获取全局视野和上下文依赖;长距离依赖是由于自注意力机制能够通过位置之间的相对权重来建模依赖关系,它具有处理长距离依赖的能力。综上所述,自注意力层使得模型能够捕捉到输入序列中较远位置的语义联系,从而更好地理解序列中的结构和语义。
如图5所示为所述自注意力层结构图,通过计算注意力分数来确定每个位置与其他位置的交互权重,注意力分数由输入序列中的特征向量计算得到,通常使用点积的计算方式。其中通过每个Token的Q向量与其余合约代码Token的K向量之间计算距离,并作为权重与V向量相乘,通过Softmax作为当前编码器的输出,同时结合合约代码的复杂性,为了增加模型的表示能力通常使用多个独立的自注意力头,以便于每个注意力头都学习不同的权重和表示,本发明使用12头注意力,即在计算向量距离前进行12次投影,分别寻找不同投影下代码之间的特征,最终再次通过投影即线性变换进行注意力模块在通道维度上的合并。其中所述自注意力层注意力分数计算公式如下,其中Q,K,V分别代表query、key和value三个投影后的向量,dk表示key的维度:
(3)
第二部分为全连接层,其主要功能用于对输入序列的特征进行映射和变换,以提取更高级别的代码特征表示,同时全连接层可以通过使用具有较少输出维度的权重矩阵来实现特征压缩和维度约简,有助于减少模型的参数数量和计算复杂度,并且全连接层通常在线性变化后引入非线性激活函数,非线性激活函数能够实现非线性关系,达到增强模型对复杂特征的建模能力。本发明考虑合约代码的特性,使用两层全连接来对自注意力层得到的编码特征进行组合,其中本发明使用的全连接层计算公式如下:
Zi= g(hi) = W(2)σ(W(1)hi)(4)
Zj= g(Zi) = W(4)σ(W(3)Zi)(5)
其中σ为ReLu激活函数,使用全连接层可以有效的捕获合约代码的全局特征,为模型后续解码器提供有效特征。
第三部分为残差连接和归一化,以上两种优化方式(即残差和归一化)作用于每一层全连接层和自注意力层的网络前,用于提升模型训练稳定性、减轻梯度消失问题以及促进信息流动。对于深层的神经网络模型使用残差网络通过学习网络残差值可以有效避免网络的退化问题,它是一种将输入直接添加到层输出的技术,其目的是保留输入的原始信息,防止梯度消失和信息丢失,并帮助模型更好地优化。其次随着网络深度的增加,输入数据的特征分布将不断发生变化,归一化技术可以保证网络特征分布的稳定性,使用归一化时考虑到合约代码间存在时序问题,因此对于有序的序列特征使用层归一化的方式进行处理。层归一化旨将每个位置的代码特征向量沿该特征维度进行归一化操作,即对每个位置的特征进行平均值和方差的归一化操作,有助于减少合约代码特征的尺度差异,提高模型的鲁棒性和训练速度。
在本示例的一些可选实施例中,特征解码器包括:
在上述编码器中模型能够学习到合约代码的语义和结构特征,并将其作为输入提供给所述解码部分,本发明中解码部分提出了一种两层卷积神经网络的组合方式,实验证明该方式可以更好的表征代码的关键信息。考虑卷积神经网络主要通过卷积操作提取局部特征,捕捉代码中的模式、结构和重要片段,同时卷积神经网络中权重参数是共享的,意味着解码模型可以使用相同的权重来处理不同位置代码片段的特征,可以有效减少参数数量提高模型的效率和泛化能力,并从不同尺度上感知合约代码的特征,进一步提升模型性能。
所述特征解码器获取编码器中编码层对特殊位Token的编码结果,作为该部分解码模型的输入,同时最后使用多个卷积核并使用全局最大池化的方法,获取了多个标量特征,每个标量特征分别代表以下多种合约类别,如金融类、游戏类、保险类、房地产类、物流类等,并使用Softmax对结果进行处理,将结果映射到0,1之间,为后续智能合约模板库的生成提供有力支撑。解码模型架构如图6所示。
其中本发明设计的解码部分每个卷积层使用32个卷积核。为了确保可以提取足够的特征,并且在模型的分类层的顶部使用全局最大池化方法,该池化方法不采取窗口的形式输出每个特征图的最大值,而是通过全局最大池化获得每个特征图中的最大值,然后将该最大值组合成特征向量并发送到模型的最终分类层,使用该池化方法可以将代码中最具代表性和重要性的特征保留下来,同时忽略其他次要的特征,并且该方法不考虑特征在空间上的位置信息,使得模型在处理具有不同位置和尺寸的输入时具有空间不变性,即在整个体征图上使得模型对输入中的细微变化不敏感,让其具有一定的鲁棒性和稳定性,并对输入数据中的噪声或干扰具有一定的容忍度。所述解码器使用具体参数如表1所示:
表1 特征解码器参数列表
综上所述,特征解码器在提取合约代码中最显著特征的同时具有空间不变性、降低维度和提高模型的鲁棒性等方面的优势,有助于提高模型的特征表示能力和对合约代码分析的性能,为后续的智能合约模板库提供更有代表性和区分度的合约特征信息。
在本示例的一些可选实施例中,模型评估及超参配置包括:
本发明最终智能合约分析结果通过ACC、RECAL、Precision和F1四个指标进行评估。其中混淆矩阵如表2所示:
表2 混淆矩阵
其中ACC主要用于描述所述代码表征提取模型的正确率,正确率越高代表模型越好;召回率主要描述合约代码被所述模型预测正确的概率,其主要由两个部分构成,一部分是TP(把正类预测为正类的概率),另一部分为FP(把正类预测为负类的概率);另一个评估指标F1的核心思想在于,在尽可能提高准确率和召回率的同时,也希望二者之间的差异足够小,以使模型结果达到平衡。四个指标计计算公式如下:
ACC = TP + TN / P + N(6)
Precision = TP / TP + FP(7)
Recall = TP / TP + FN(8)
F1= 2P * R / P + R(9)
所述智能合约表征提取模型评估指标结果如表3所示:
表3智能合约表征提取模型评估指标表
本发明所述的代码表征提取模型使用的超参数如下表4所示:
表4 代码表征提取模型使用的超参数
在本示例的一些可选实施例中,智能合约模板推荐包括:
所述一种智能的合约模板推荐方法主要根据上述智能合约代码表征提取模型的结果构建智能合约模板库。该模板库旨在为开发者提供一系列经过验证和优化的智能合约模板,以帮助他们快速获取适合的模板并加快智能合约的开发进程。开发者可以通过模板库的推荐,找到与其需求相匹配的合约模板,并将其用作合约开发起点,并结合具体的业务逻辑进行定制和扩展。可以有效避免从头开始编写合约代码,节省开发时间和精力。同时为确保模板库的持续优化和适应性,定期更新模板库并结合用户反馈机制。通过定期更新模板库可以捕捉最新的合约设计模式、最佳实践和安全漏洞修复,以保持与快速发展的区块链技术和行业标准的一致性。同时开发者的反馈和建议也被积极收集,以进一步改进和扩展模板库的内容和功能。
综上所述,通过所述一种智能的合约模版推荐方法可以提供高质量的并且持续优化的合约模板,该模板库有效降低开发的技术门槛,并推动更多人参与到智能合约开发的领域中来,接下来将对该方法展开详细描述。
在本示例的一些可选实施例中,合约模板库搭建包括:
根据上述智能合约代码表征提取模型的结果,创建相应数量的模版库或子库,每个模版库代表一个智能合约类别,然后将同一类别的智能合约代码收集到相应的模块库中,并建立代码与类别的映射关系,并且对于每个模板库,可以设定标签、描述和其他元数据,以便更好组织和管理模版。如图7所示为合约模板库旭日图方式的可视化展示,从图中可以清晰的看出模板库中主要由物联网类、数字身份类、投票类、治理类、市场类、去中心化应用类、供应链类、安全类和资金管理类合约组成,其中每个大类下包含了多个小类别,并且可以通过面积大小反映出所属类别合约模版的数量关系,为使用者提供友好的合约模版库可视化界面。
在本示例的一些可选实施例中,合约模板库维护包括:
定期更新合约的样本数据,并重新进行分类和模板库构建,这样可以跟随智能合约领域的发展和变化,保持模板库的时效性和准确性。对于新增的智能合约样本,根据其分类结果,将其加入相应模板库中,通过人工审核或智能化流程来验证和筛选模板库中的合约代码,以确保其质量和安全性。
在本示例的一些可选实施例中,合约模版推荐包括:
所述智能合约模版推荐整体架构图如图8所示。首先确定模板库的结构和存储方式,所述模板库按照合约的不同类别或功能进行存储,且每个类别包含一组相关的智能合约模版,模版中定义关键信息,如合约模版的名称、描述、代码片段和标签等,便于后续使用者的检索和推荐。接着合约编写者可以通过两种方式进行合约模版的匹配,其中第一种方式根据合约方向按照类别进行检索,合约模板库可以根据用户需求和特定条件,对检索到的模版进行过滤和排序,其中过滤可以基于一些限制条件,如合约类型、功能需求、安全性要求等;另一种匹配方式为,使用者将待完成的合约代码输入到所述合约代码提取模型中以获取合约的向量表示,通过向量表示计算与模板库中每个类别模版的相似度,相似度可以使用余弦相似度来计算,并选择相似度最高的模版作为推荐结果,最终的推荐结果同样包含合约模版的详细信息,以帮助用户做出合适选择。
需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
此外,在本示例实施例中,还提供了基于代码表征的智能合约模版推荐装置。图9为本公开方法一个实施例基于代码表征的智能合约模版推荐装置的结构框图。参照图9所示,该基于代码表征的智能合约模版推荐装置200可以包括:合约收集模块210、特征编码模块220、特征解码模块230以及模版库推荐模块240。其中:
合约收集模块210,用于收集以太坊的智能合约代码,并对所述智能合约代码进行数据预处理,生成待编码数据;
特征编码模块220,用于基于特征编码器对所述待编码数据进行编码,得到合约代码特征,在所述合约代码特征中构建用于解码器分析所使用的Token标记;
特征解码模块230,用于基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值,基于归一化指数函数Softmax对所述合约代码特征中各特征划分的标量值进行变换并输出所述合约代码特征中各特征划分的分析结果;
模版库推荐模块240,用于基于所述合约代码特征中各特征划分的分析结果构建智能合约模板库,通过相似度计算为推荐用户提供智能合约模版。
本公开实施例的基于代码表征的智能合约模版推荐装置与本公开上述基于代码表征的智能合约模版推荐方法的实施例之间相互对应,相关内容可以相互参考,此处不再赘述。本公开实施例的基于代码表征的智能合约模版推荐装置对应的有益技术效果可以参见上述对应的示例性方法部分的相应有益技术效果,此处不再赘述。
应当注意,尽管在上文详细描述中提及了基于代码表征的智能合约模版推荐装置200的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
下面,参考图10来描述根据本公开实施例的电子设备。该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。
图10图示了根据本公开实施例的电子设备的框图。
如图10所示,电子设备包括一个或多个处理器和存储器。
处理器可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
存储器可以存储一个或多个计算机程序产品,所述存储器可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序产品,处理器可以运行所述计算机程序产品,以实现上文所述的本公开的各个实施例方法以及/或者其他期望的功能。
在一个示例中,电子装置还可以包括:输入装置和输出装置,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入装置还可以包括例如键盘、鼠标等等。
该输出装置可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出装置等等。
当然,为了简化,图10中仅示出了该电子设备中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法及装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法及装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (10)
1.一种基于代码表征的智能合约模版推荐方法,其特征在于,包括:
收集以太坊的智能合约代码,并对所述智能合约代码进行数据预处理,生成待编码数据;
基于特征编码器对所述待编码数据进行编码,得到合约代码特征,在所述合约代码特征中构建用于解码器分析所使用的Token标记;
基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值,基于归一化指数函数Softmax对所述合约代码特征中各特征划分的标量值进行变换并输出所述合约代码特征中各特征划分的分析结果;
基于所述合约代码特征中各特征划分的分析结果构建智能合约模板库,通过相似度计算为推荐用户提供智能合约模版。
2.根据权利要求1所述的基于代码表征的智能合约模版推荐方法,其特征在于,所述对所述智能合约代码进行数据预处理包括:
去除所述智能合约代码中标点符号和常用词;
将去除标点符号和常用词的所述智能合约代码投入嵌入层进行包含合约代码位置编码信息的待编码数据;
通过通道将所述待编码数据拼接转换为基于特征编码器的参数形式。
3.根据权利要求2所述的基于代码表征的智能合约模版推荐方法,其特征在于,基于特征编码器对所述待编码数据进行编码,得到合约代码特征,还包括:
基于特征编码器对所述待编码数据基于自注意力层捕捉输入序列内部的依赖关系和建立上下文之间的联系;
基于全连接层对输入序列的特征进行线性变化的映射和变换,引入非线性激活函数,对输入序列实现非线性处理;
基于残差连接和归一化对所述自注意力层、全连接层进行优化,实现对所述待编码数据进行编码,得到合约代码特征。
4.根据权利要求3所述的基于代码表征的智能合约模版推荐方法,其特征在于,基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值还包括:
基于卷积神经网络CNN对编码器得到的合约代码特征进行分析,确定卷积核的数量;
基于所述数量的卷积核,通过全局最大池化提取出所述合约代码特征中各特征划分的标量值。
5.根据权利要求4所述的基于代码表征的智能合约模版推荐方法,其特征在于,所述方法还包括:
基于预设智能合约表征提取模型评估指标对所述合约代码特征中各特征划分的标量值进行变换生成的结果进行评估,得到所述合约代码特征中各特征划分的分析结果。
6.根据权利要求1所述的基于代码表征的智能合约模版推荐方法,其特征在于,基于所述合约代码特征中各特征划分的分析结果构建智能合约模板库,还包括:
基于所述合约代码特征中各特征划分的分析结果创建与智能合约类别对应的数量的模版库;
基于智能合约代码的类别对智能合约代码收集到与所述智能合约代码相应的模块库中,建立代码与类别的映射关系;
设定各模板库标签、描述元数据,并定期对所述模板库进行维护。
7.根据权利要求1所述的基于代码表征的智能合约模版推荐方法,其特征在于,为推荐用户提供智能合约模版还包括:
基于合约方向按照类别进行检索结果为推荐用户提供智能合约模版;
根据合约代码计算合约向量,基于所述合约向量与智能合约模版的匹配相似度为推荐用户提供智能合约模版。
8.一种基于代码表征的智能合约模版推荐装置,其特征在于,包括:
合约收集模块,用于收集以太坊的智能合约代码,并对所述智能合约代码进行数据预处理,生成待编码数据;
特征编码模块,用于基于特征编码器对所述待编码数据进行编码,得到合约代码特征,在所述合约代码特征中构建用于解码器分析所使用的Token标记;
特征解码模块,用于基于卷积神经网络CNN对编码器得到的合约代码特征通过全局最大池化提取出所述合约代码特征中各特征划分的标量值,基于归一化指数函数Softmax对所述合约代码特征中各特征划分的标量值进行变换并输出所述合约代码特征中各特征划分的分析结果;
模版库推荐模块,用于基于所述合约代码特征中各特征划分的分析结果构建智能合约模板库,通过相似度计算为推荐用户提供智能合约模版。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序产品;
处理器,用于执行所述存储器中存储的计算机程序产品,且所述计算机程序产品被执行时,实现上述权利要求1-7任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该计算机程序指令被处理器执行时,实现上述权利要求1-7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311822325.3A CN117473170B (zh) | 2023-12-27 | 2023-12-27 | 基于代码表征的智能合约模版推荐方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311822325.3A CN117473170B (zh) | 2023-12-27 | 2023-12-27 | 基于代码表征的智能合约模版推荐方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117473170A true CN117473170A (zh) | 2024-01-30 |
CN117473170B CN117473170B (zh) | 2024-04-09 |
Family
ID=89636548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311822325.3A Active CN117473170B (zh) | 2023-12-27 | 2023-12-27 | 基于代码表征的智能合约模版推荐方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117473170B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271646A (zh) * | 2018-09-04 | 2019-01-25 | 腾讯科技(深圳)有限公司 | 文本翻译方法、装置、可读存储介质和计算机设备 |
CN110569033A (zh) * | 2019-09-12 | 2019-12-13 | 北京工商大学 | 一种数字化交易类智能合约基础代码生成方法 |
CN113110843A (zh) * | 2021-03-05 | 2021-07-13 | 卓尔智联(武汉)研究院有限公司 | 合约生成模型训练方法、合约生成方法及电子设备 |
CN114511330A (zh) * | 2022-04-18 | 2022-05-17 | 山东省计算中心(国家超级计算济南中心) | 一种基于改进的cnn-rf的以太坊庞氏骗局检测方法及系统 |
CN114547611A (zh) * | 2022-02-18 | 2022-05-27 | 扬州大学 | 一种基于多模态特征的智能合约庞氏骗局检测方法及系统 |
KR102432891B1 (ko) * | 2021-08-31 | 2022-08-18 | 주식회사 비아엘 | 인공지능 기반 스마트 컨트랙트 레포지토리 구축 방법 및 시스템 |
CN116089957A (zh) * | 2022-12-29 | 2023-05-09 | 河南大学 | 一种基于语法和语义特征融合的智能合约漏洞检测方法及装置 |
CN116595534A (zh) * | 2023-04-10 | 2023-08-15 | 湖北大学 | 一种solidity智能合约的缺陷检测方法 |
CN116627490A (zh) * | 2023-05-24 | 2023-08-22 | 东南大学 | 一种智能合约字节码相似性检测方法 |
-
2023
- 2023-12-27 CN CN202311822325.3A patent/CN117473170B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271646A (zh) * | 2018-09-04 | 2019-01-25 | 腾讯科技(深圳)有限公司 | 文本翻译方法、装置、可读存储介质和计算机设备 |
CN110569033A (zh) * | 2019-09-12 | 2019-12-13 | 北京工商大学 | 一种数字化交易类智能合约基础代码生成方法 |
CN113110843A (zh) * | 2021-03-05 | 2021-07-13 | 卓尔智联(武汉)研究院有限公司 | 合约生成模型训练方法、合约生成方法及电子设备 |
KR102432891B1 (ko) * | 2021-08-31 | 2022-08-18 | 주식회사 비아엘 | 인공지능 기반 스마트 컨트랙트 레포지토리 구축 방법 및 시스템 |
CN114547611A (zh) * | 2022-02-18 | 2022-05-27 | 扬州大学 | 一种基于多模态特征的智能合约庞氏骗局检测方法及系统 |
CN114511330A (zh) * | 2022-04-18 | 2022-05-17 | 山东省计算中心(国家超级计算济南中心) | 一种基于改进的cnn-rf的以太坊庞氏骗局检测方法及系统 |
CN116089957A (zh) * | 2022-12-29 | 2023-05-09 | 河南大学 | 一种基于语法和语义特征融合的智能合约漏洞检测方法及装置 |
CN116595534A (zh) * | 2023-04-10 | 2023-08-15 | 湖北大学 | 一种solidity智能合约的缺陷检测方法 |
CN116627490A (zh) * | 2023-05-24 | 2023-08-22 | 东南大学 | 一种智能合约字节码相似性检测方法 |
Non-Patent Citations (1)
Title |
---|
郭军: "信息搜索与人工智能", vol. 1, 31 January 2022, 北京邮电大学出版社, pages: 86 - 89 * |
Also Published As
Publication number | Publication date |
---|---|
CN117473170B (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111310438B (zh) | 基于多粒度融合模型的中文句子语义智能匹配方法及装置 | |
CN113792818B (zh) | 意图分类方法、装置、电子设备及计算机可读存储介质 | |
CN111159407B (zh) | 训练实体识别和关系分类模型的方法、装置、设备及介质 | |
CN112733866B (zh) | 一种提高可控图像文本描述正确性的网络构建方法 | |
CN109858015B (zh) | 一种基于ctw和km算法的语义相似度计算方法及装置 | |
CN114169330A (zh) | 融合时序卷积与Transformer编码器的中文命名实体识别方法 | |
CN112306494A (zh) | 一种基于卷积和循环神经网络的代码分类及聚类方法 | |
CN113886571A (zh) | 实体识别方法、装置、电子设备及计算机可读存储介质 | |
CN116719520B (zh) | 代码生成方法及装置 | |
CN116151132A (zh) | 一种编程学习场景的智能代码补全方法、系统及储存介质 | |
CN113868432A (zh) | 一种用于钢铁制造企业的知识图谱自动构建方法和系统 | |
CN115796182A (zh) | 一种基于实体级跨模态交互的多模态命名实体识别方法 | |
CN115544303A (zh) | 用于确定视频的标签的方法、装置、设备及介质 | |
CN113656561A (zh) | 实体词识别方法、装置、设备、存储介质及程序产品 | |
CN111522963A (zh) | 一种基于公安知识图谱引擎的智能助理应用交互方法 | |
CN117473170B (zh) | 基于代码表征的智能合约模版推荐方法、装置及电子设备 | |
CN116861269A (zh) | 工程领域的多源异构数据融合及分析方法 | |
CN116663539A (zh) | 基于RoBERTa和指针网络的中文实体与关系联合抽取方法及系统 | |
CN116595979A (zh) | 一种基于标签提示的命名实体识别方法、装置及介质 | |
CN115860002A (zh) | 一种基于事件抽取的作战任务生成方法及系统 | |
CN114298052B (zh) | 一种基于概率图的实体联合标注关系抽取方法和系统 | |
CN115203206A (zh) | 数据内容搜索方法、装置、计算机设备及可读存储介质 | |
CN115017260A (zh) | 一种基于子主题建模的关键词生成方法 | |
CN115238705A (zh) | 语义解析结果重排序方法及系统 | |
CN114254622A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |