首页 / 专利库 / 银行与财务事项 / 智能合约 / 一种基于前馈神经网络的智能合约自动分类方法

一种基于前馈神经网络智能合约自动分类方法

阅读:117发布:2021-12-26

专利汇可以提供一种基于前馈神经网络智能合约自动分类方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于 前馈神经网络 的 智能合约 自动分类方法,能够实现机器对智能合约代码的自动分类;与当前传统的智能合约人工分类相比,本发明既节省了时间和经济成本,又能够胜任海量合约无法人工分类的任务。本发明采用前馈神经网络的训练方式可以在已贴标智能合约集合更新时,使用更新后的合约集合重新训练以使该自动分类器能够适应新的变化。,下面是一种基于前馈神经网络智能合约自动分类方法专利的具体信息内容。

1.一种基于前馈神经网络智能合约自动分类方法,包括如下步骤:
(1)获取一定数量的智能合约代码,并人工标记这些智能合约代码的类别;
(2)对所述智能合约代码进行预处理;
(3)提取智能合约代码的代码语义向量和交易信息向量,并将两者组合作为特征向量
(4)以智能合约代码的特征向量作为输入,人工标记的类别作为输出,通过前馈神经网络训练得到关于智能合约代码的分类器;
(5)对于未知类别的智能合约代码,根据步骤(3)提取得到其特征向量并输入至所述分类器中,从而输出得到该智能合约代码的类别。
2.根据权利要求1所述的智能合约自动分类方法,其特征在于:所述步骤(2)中对智能合约代码进行预处理的具体方法为:对于任一智能合约代码A,若其智能合约调用了另一个智能合约的函数,则将被调用的函数代码扩充到智能合约代码A中调用该函数的相应位置
对于递归调用,同样采用上述方式处理。
3.根据权利要求1所述的智能合约自动分类方法,其特征在于:所述步骤(3)中提取智能合约代码的代码语义向量,具体过程为:首先,将智能合约代码完全展开后即对应得到了一个词序列;然后,利用词嵌入模型将该词序列中的每一个词对应映射成一个词嵌入向量;
最后,将词序列中所有词对应的词嵌入向量输入LSTM模型中,LSTM模型将这些词嵌入向量映射成一个代码语义向量,即智能合约代码的代码语义向量。
4.根据权利要求1所述的智能合约自动分类方法,其特征在于:所述步骤(3)中提取智能合约代码的交易信息向量,即提取与智能合约代码相关的账号状态信息,包括账号的余额、关联交易总数量、PageRank值以及创建者的Nonce,从而组合成所述交易信息向量。
5.根据权利要求1所述的智能合约自动分类方法,其特征在于:所述步骤(4)中的前馈神经网络由输入层隐藏层输出层组成;其中,智能合约代码的特征向量[V,T]作为输入层,隐藏层的输出x表达如下:
x=α(Wh[V,T]+bh)
其中:Wh为隐藏层的权值系数矩阵,V和T分别为智能合约代码的代码语义向量和交易信息向量,bh为隐藏层的偏置系数矩阵,α()为激活函数;
对于前馈神经网络的输出层,在得到其输出y后,将输出y通过归一化计算后得到一个关于类标签的概率分布向量,其中的第j个元素值pj即为智能合约代码属于第j类别的概率值,具体表达式如下:

其中:θj对应为第j类别的权重向量,T表示转置,j为自然数且1≤j≤k,k为智能合约代码的类别总数。
6.根据权利要求5所述的智能合约自动分类方法,其特征在于:所述激活函数α()采用ReLu函数。
7.根据权利要求5所述的智能合约自动分类方法,其特征在于:所述步骤(5)中将未知类别的智能合约代码的特征向量输入至分类器中,输出得到对应的概率分布向量,取其中对应概率值最大的类别作为该智能合约代码的类别。

说明书全文

一种基于前馈神经网络智能合约自动分类方法

技术领域

[0001] 本发明属于链技术领域,具体涉及一种基于前馈神经网络的智能合约自动分类方法。

背景技术

[0002] 作为区块链技术支撑的应用之一,区块链智能合约允许用户在区块链上实现个性化的代码逻辑从而使得区块链技术更加的简单易用。然而,随着以太坊Ethereum等智能合约平台的迅速发展,区块链上智能合约代码数量快速增加。如今,大型的智能合约平台中均已积累了数以十万计的智能合约,且数量仍在指数增长。
[0003] 当前,对于智能合约代码的管理与组织,因缺乏自动化分类工具,仍采用人工分类的方法进行分别类。但是,当前十万级并不断增长的智能合约数量已经使得人工地对众多的智能合约分门别类耗时耗。未来,当智能合约数量超过百万,人工贴标甚至变得不再可能。

发明内容

[0004] 为高效管理和有效组织海量的智能合约代码,解决对海量智能合约人工分类面临的时间和经济成本过高的问题,本发明提供一种基于前馈神经网络的智能合约自动分类方法,能够实现计算机对智能合约代码的自动分类。
[0005] 一种基于前馈神经网络的智能合约自动分类方法,包括如下步骤:
[0006] (1)获取一定数量的智能合约代码,并人工标记这些智能合约代码的类别;
[0007] (2)对所述智能合约代码进行预处理;
[0008] (3)提取智能合约代码的代码语义向量和交易信息向量,并将两者组合作为特征向量
[0009] (4)以智能合约代码的特征向量作为输入,人工标记的类别作为输出,通过前馈神经网络训练得到关于智能合约代码的分类器;
[0010] (5)对于未知类别的智能合约代码,根据步骤(3)提取得到其特征向量并输入至所述分类器中,从而输出得到该智能合约代码的类别。
[0011] 所述步骤(2)中对智能合约代码进行预处理的具体方法为:对于任一智能合约代码A,若其智能合约调用了另一个智能合约的函数,则将被调用的函数代码扩充到智能合约代码A中调用该函数的相应位置;对于递归调用,同样采用上述方式处理。
[0012] 所述步骤(3)中提取智能合约代码的代码语义向量,具体过程为:首先,将智能合约代码完全展开后即对应得到了一个词序列;然后,利用词嵌入模型将该词序列中的每一个词对应映射成一个词嵌入向量;最后,将词序列中所有词对应的词嵌入向量输入LSTM(Long Short-Term Memory,长短时记忆)模型中,LSTM模型将这些词嵌入向量映射成一个代码语义向量,即智能合约代码的代码语义向量。
[0013] 所述步骤(3)中提取智能合约代码的交易信息向量,即提取与智能合约代码相关的账号状态信息,包括账号的余额、关联交易总数量、PageRank值以及创建者的Nonce等,从而组合成所述交易信息向量。
[0014] 所述步骤(4)中的前馈神经网络由输入层隐藏层输出层组成;其中,智能合约代码的特征向量[V,T]作为输入层,隐藏层的输出x表达如下:
[0015] x=α(Wh[V,T]+bh)
[0016] 其中:Wh为隐藏层的权值系数矩阵,V和T分别为智能合约代码的代码语义向量和交易信息向量,bh为隐藏层的偏置系数矩阵,α()为激活函数;
[0017] 对于前馈神经网络的输出层,在得到其输出y后,将输出y通过归一化计算后得到一个关于类标签的概率分布向量,其中的第j个元素值pj即为智能合约代码属于第j类别的概率值,具体表达式如下:
[0018]
[0019] 其中:θj对应为第j类别的权重向量,T表示转置,j为自然数且1≤j≤k,k为智能合约代码的类别总数。
[0020] 所述激活函数α()可采用sigmoid函数、tanh函数或ReLu(Rectified Linear Units)函数;由于ReLU的性能被证明优于其他两种,故优选采用ReLU作为激活函数。
[0021] 所述步骤(5)中将未知类别的智能合约代码的特征向量输入至分类器中,输出得到对应的概率分布向量,取其中对应概率值最大的类别作为该智能合约代码的类别。
[0022] 本发明的有益技术效果如下:
[0023] (1)本发明首次提出基于前馈神经网络的智能合约自动分类方法,能够实现机器对智能合约代码的自动分类;与当前传统的智能合约人工分类相比,本发明既节省了时间和经济成本,又能够胜任海量合约无法人工分类的任务。
[0024] (2)本发明采用前馈神经网络的训练方式可以在已贴标智能合约集合更新时,使用更新后的合约集合重新训练以使该自动分类器能够适应新的变化。附图说明
[0025] 图1为本发明智能合约代码自动分类方法的架构示意图。

具体实施方式

[0026] 为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
[0027] 对于以太坊上的海量智能合约,本发明基于前馈神经网络的智能合约自动分类方法,包括如下步骤:
[0028] 1.根据对当前智能合约平台中大量智能合约的分析,将智能合约划分成9个类:金融类(保险、融资、投资等)、物联网类、游戏类、彩票类、工具类、娱乐类、货币类、信息管理类和其他类。
[0029] 2.使用前馈神经网络和已贴标的智能合约代码集合训练智能合约的分类器,训练过程依照如下步骤3至步骤7所述。
[0030] 3.对于输入的一段智能合约代码A,如果该智能合约调用了另一个智能合约的函数,我们将被调用的函数代码扩充到A中调用该函数的相应位置;对于递归调用,也采用同样的方式处理。
[0031] 4.对于输入的一段智能合约代码A,将其中调用的函数都展开成完整的函数代码,每一份完全展开后的智能合约代码可视为一个词的序列{w1,w2,…,wn},将展开后的代码输入到图1中的词嵌入层,词嵌入层将每一个词wi映射成一个词嵌入向量。
[0032] 5.然后将这些词嵌入向量顺序输入长短时记忆模型(图1中的LSTM层)中,长短时记忆模型将这些向量映射成一个代码语义向量。长短时记忆模型在自然语言处理领域应用广泛,可以很好的处理变长的输入,比如句子。同时,长短时记忆模型已被证明可以捕获输入的长时记忆,因此可以用来发现输入的内部结构和依赖关系。
[0033] 6.提取与输入的智能合约代码A相关的账号状态信息,主要包括账号的余额、关联交易总数量、PageRank值、创建者的Nonce等,组合成交易信息向量。
[0034] 7.将第5步得到的代码语义向量V和第6步提取出的交易信息向量T组合连接,将组合连接后的向量(V,T)作为前馈神经网络的输入,该合约对应的已贴标好的分类类别作为输出。依此,n个已贴标的智能合约对应n个输入输出对,使用这些输入输出对进行前馈神经网络的训练,前馈神经网络包含三层:输入层,隐含层和输出层,具体训练过程如下:
[0035] 组合后的向量(V,T)作为前馈神经网络的输入层,如图1中前馈神经网络层所示,智能合约对应的已贴标好的分类类别作为输出。本实施方式使用118027份以太坊的智能合约(人工贴标)对前馈神经网络进行训练,获得神经网络中的所有参数的合适取值。
[0036] 对于隐含层:在给定输入(V,T)后,隐含层进行了如下转换:
[0037] α(Wh·(V,T)+bh)
[0038] 其中:Wh为隐含层的权值系数矩阵,α为激活函数,bh为偏置系数矩阵。为了让神经网络学习到一个非线性的决策边界,激活函数的选择有sigmoid、tanh、ReLU(定义为max(0,x))。因为ReLU的性能被证明优于另外两种,故本实施方式选择ReLU作为激活函数。在输入层和输出层之间设置的这个隐含层使得模型具有非线性的分类能力。
[0039] 对于输出层:在得到隐含层的输出后,将该输出传到一个softmax层中进行运算处理;对softmax层的输出x计算得到一个关于类标签的概率分布:
[0040]
[0041] 其中:θk是第k类的权重向量,除以分母是为了进行归一化处理,以获得类标签Cj的概率值。
[0042] 8.使用第7步已训练好的智能合约自动分类器,输入未知类别的一段智能合约代码的向量(V,T),前馈神经网络的SoftMax层输出该未知类别智能合约的类别标签概率大小,选择其中具有最大概率的类标签作为该智能合约代码的类标签。
[0043] 步骤3至步骤7的训练过程可以在已贴标智能合约集合更新时,使用更新后的合约集合重新训练以使该自动分类器能够及时捕捉新的变化。
[0044] 上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈