基于跨模态预训练模型的智能合约相似性检测方法

未命名 10-28 阅读:168 评论:0


1.本发明属于区块链智能合约安全检测技术领域,尤其涉及基于跨模态预训练模型的智能合约相似性检测方法。


背景技术:

2.随着区块链技术的快速发展,智能合约被广泛应用于数字支付、金融资产、互联网、供应链等领域。近年来,以太坊中智能合约数量不断增多,带来巨大经济利益的同时也潜藏着高危的安全风险。由于智能合约的开源性,代码克隆成为合约开发中的最常见现象。虽然合约克隆提高了区块链应用开发效率,但也产生了严重的负面影响,包括代码库冗余和合约漏洞风险传播等。因此,智能合约的安全性研究尤为重要,其相似性检测技术的突破,有助于应对合约克隆带来的各种危害(安全漏洞、恶意代码),确保数字资产的安全可信。
3.目前代码的相似性检测集中于传统程序语言,智能合约的语义相似性检测仍面临挑战。面向源码层面,现有检测技术针对文本相似性取得了不错的检测效果,但是面对更高抽象层次的语义相似检测的挑战,如何有效地挖掘合约源码的深层语义信息成为智能合约源码相似性检测亟待解决的问题。随着深度学习和自然语言处理技术的发展,利用神经网络模型学习程序的特征表示,已应用于诸多代码相似性检测任务,然而面向区块链智能合约的跨模态语义相似性研究尚处于起步阶段。
4.在此背景下,本发明拟使用一种基于跨模态预训练模型进行相似性检测,特别地,运用掩码多模态注意力机制mma(masked multimodal attention);通过注释模态的信息来帮助合约模态调整合约的权重。提出一种跨模态预训练模型(bert)的相似性检测方案。


技术实现要素:

5.为解决上述智能合约相似性检测技术手段单一技术问题,本发明提供了一种基于跨模态预训练模型的智能合约相似性检测方案;通过多模态合约语义信息的融合训练过程,以期获得更全面的智能合约的相似性特征;该技术通过对源码的语义注释与cfg(控制流程图)模态进行交互,通过反编译字节码生成控制流图,并经由跨模态预训练模型将cfg图特征转换为向量表示,结合源码中注释信息,利用神经网络捕获语义信息和程序范围内的控制流信息,从而实现高精度智能合约语义相似性检测。
6.为实现上述目的本发明提出了基于跨模态预训练模型的智能合约相似性检测方法,包括:
7.构建智能合约的控制流图;
8.提取所述智能合约中的注释信息,将所述控制流图与所述注释信息进行对应,获取对应图;
9.将所述对应图中的信息输入预设的跨模态预训练模型,获取合约的特征表示向量;
10.基于所述特征表示向量,通过阈值进行合约相似性的判定。
11.可选地,构建所述控制流图包括:
12.获取所述智能合约源码的汇编指令;
13.将所述汇编指令转换为预设元素,基于所述预设元素,生成所述控制流图;其中,所述预设元素包括:block集和edge集,所述block集为图中节点指令的集合,所述edge集为边的起始点、终点和类型的结合。
14.可选地,获取所述智能合约源码的汇编指令包括:
15.对所述智能合约源码进行编译,获取字节码文件;
16.对所述字节码文件进行反编译,生成所述汇编指令。
17.可选地,所述对应图中的信息包括:图的信息、block的指令集合、边的属性、时序信息、合约的注释信息和函数名称;其中所述图的信息包括:起始点、边类型和终止点。
18.可选地,预设的所述跨模态预训练模型包括:cfg事件序列和函数对齐的注释特征;
19.将所述对应图中的信息输入预设的所述跨模态预训练模型包括
20.将所述对应图中的信息进行事件生成;
21.将生成的事件序列,通过所述跨模态预训练模型的最后一个编码器层的输出作为合约特征;
22.将所述合约特征进行一维卷积处理后,再进行扩展处理;
23.将扩展后的特征输入掩码多模态注意力机制,通过结合不同模态下的合约表现来调整合约的权重;
24.在所述掩码多模态注意力机制的输出和所述合约特征上,采用一个残余连接,保持数据的原始结构,在通过一个线性层和一个归一化层后,获得最后一个线性层的输出,即所述特征表示向量。
25.可选地,通过阈值进行合约相似性的判定包括:
26.通过映射函数,将所述特征表示向量映射在[0,1]内,通过阈值进行合约相似性的判定。
[0027]
可选地,将所述对应图中的信息进行事件生成包括:
[0028]
利用输入数据中边的时序关系将节点之间的信息更新生成事件;其中每个事件都有四个特征:源节点v
l
、目标节点vj、事件类型e
ij
、以及时序信息t
ij

[0029]
通过事件的时间顺序来构造事件,将所述源节点v
l
、目标节点vj、事件类型e
ij
、以及时序信息t
ij
通过预设连接进行建模,生成事件的编码之后,并按照时间顺序获取一系列有时间戳的事件;
[0030]
所述预设连接为:
[0031][0032]
其中,||代表拼接操作,与分别表示节点v
l
和节点vj在时间为n时表示的隐藏状态,表示连接每对节点边代表的隐藏状态,表示时序信息的隐藏状态,表
示节点之间构成的事件。
[0033]
可选地,所述掩码多模态注意力机制的输出为:
[0034]
x
att
=w
mvm
[0035]
其中,x
att
表示注意力矩阵,即掩码多模态注意力机制的输出,vm表示跨模态预训练模型的最后一层编码器的输出,wm表示多模态注意力矩阵;
[0036]
所述多模态注意力矩阵wm为:
[0037]
wm=softmax(wf+m)
[0038]
其中,wf表示加权融合注意力矩阵,m表示掩码矩阵;
[0039]
所述加权融合注意力矩阵wf为:
[0040]
wf=ws*αs+wn*βn+b
[0041]
其中,ws和wn表示合约和注释模态的权重区别,b表示偏差,αs表示合约注意力矩阵,βn表示注释注意力矩阵。
[0042]
可选地,所述一维卷积处理为:
[0043][0044]
其中,k
{t,a}
表示合约和注释的卷积核大小,xn表示注释特征,xs表示合约特征,表示经过一维卷积后的合约特征,表示经过一维卷积后的注释特征,conv1d表示一维卷积神经网络;
[0045]
所述扩展处理为:
[0046][0047][0048]
其中,表示扩展后的合约特征,表示扩展后的注释特征。
[0049]
与现有技术相比,本发明具有如下优点和技术效果:
[0050]
本发明提出了跨模态预训练模型的智能合约相似性检测方法。首先,跨模态预训练模型bert使用cfg图信息以及注释信息进行训练,通过使用掩盖语言建模(mask language model,mlm)能够使得模型编码得到的结果同时包含上下文的语境信息,可以有效的将cfg图中的信息与注释信息进行表征。其次,利用掩码多模态注意力机制mma(masked multimodal attention)帮助合约模态调整合约的权重,设计多模态隐形对齐的方法,获取合约源码的通用语义表征。最后,利用双模态预训练输出的通用合约语义表征融入合约源码表示中,提高智能合约源码的相似性检测能力。
附图说明
[0051]
构成本技术的一部分的附图用来提供对本技术的进一步理解,本技术的示意性实
施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
[0052]
图1为本发明实施例的智能合约数据处理流程示意图;
[0053]
图2为本发明实施例的cfg与注释对应图;
[0054]
图3为本发明实施例的cfg事件生成图;
[0055]
图4为本发明实施例的跨模态预训练模型bert框架图。
具体实施方式
[0056]
需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
[0057]
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0058]
本实施例的目的是这样实现的:首先需要反编译字节码文件,经过反编译的字节码会生成evm指令(即opcode)及相应的参数。根据反编译后的evm指令利用octopus工具构建控制流图cfg(control flow graph)。其次,将每个合约中的注释信息进行提取,将cfg图与其合约注释信息以函数级为单位进行对应。针对cfg图与注释信息使用跨模态预训练模型bert进行训练,将cfg图表征信息与注释信息作为输入,通过跨模态bert的编码器将两者特征转化为向量表示。利用掩码多模态注意力机制mma(masked multimodal attention)帮助合约模态调整合约的权重,获取合约的语义特征。最终,将合约语义特征进行向量表示,通过映射函数将计算值映射在[0,1]之间,合约图是否存在相似性的阈值是通过对各个图向量的计算值进行判定,最终得到合约图的相似性阈值。
[0059]
基于跨模态预训练模型的智能合约相似性检测方法的全程概览包括如下步骤:
[0060]
第一,反编译及cfg构建,经过反编译的字节码会生成evm指令(即opcode)及相应的参数,之后根据反编译后的evm指令重建控制流图cfg。
[0061]
第二,提取合约中的注释,将cfg图与注释以函数为单位进行对应。
[0062]
第三,将cfg图中信息以及合约注释信息,输入至跨模态预训练模型中,经过模型的处理得到合约的特征表示向量。
[0063]
第四,通过映射函数,将合约语义特征向量映射在[0,1]内,通过阈值进行合约相似性的判定。
[0064]
本实施例提出的基于跨模态预训练模型的智能合约相似性检测方法,具体包括如下步骤:
[0065]
数据处理流程
[0066]
对智能合约源码通过使用solc工具进行编译,得到字节码文件。将字节码转换成cfg图需要两步:反编译生成汇编指令和使用汇编指令构建cfg,通过反编译字节码,才能解析evm指令及其参数。反编译和构建cfg使用了octopus这个工具,octopus第一步会将字节码先转换成汇编指令集,第二步将汇编指令集转换成cfg图需要的元素,block集和edge集,然后生成了cfg文件。block集是图中节点指令的集合,edge集除了表明这条边的起始点和终点,还包括边的类型。边的类型包括以下五类:unconditional、conditional_true、conditional_false、fallthrough和call。如图1所示,展示了智能合约的数据处理流程。
[0067]
针对智能合约的源码注释信息,通过脚本方式将合约中相应的注释信息进行提取,与通过octopus构建的cfg图进行对应,形式如图2所示为cfg图与注释对应图。将cfg图中信息与注释信息进行提取,导出所需要的数据如表1所示,graph代表图的信息,其参数分别为起始点、边类型、终止点;instruction是block的指令集合;attribute代表了边的类型;time代表时序信息,comment代表合约的注释信息,function_name代表函数名称。
[0068]
表1:数据集参数说明
[0069][0070][0071]
跨模态预训练模型bert
[0072]
通过融合源码控制流程图与合约注释的多模态预训练模型,获取合约源码的深层语义信息;设计基于掩码多模态注意力机制的多模态隐形对齐方法,获取合约源码的通用语义表征;构建基于深度图学习的合约语义相似性检测模型,利用双模态预训练模型输出的通用合约语义表征融入合约源码表示中,提高智能合约源码的相似性检测能力。其中跨模态预训练模型包括:编码器层,通过两个编码器分别对应源码以及注释将其进行编码。一维卷积层,利用一维卷积层将注释特征与源码特征控制在相同尺寸。掩码多模态注意力机制通过结合不同模态下的合约来调整合约权重,采用残差连接保持数据的原始结构。一个线性层和一个归一化层得到一个线性层输出。
[0073]
1.cfg图生成事件
[0074]
针对cfg图模态,由于其图结构不适用于bert模型输入端口,故提出将cfg图进行事件生成,如图3所示。在事件生成阶段,利用输入数据中边的时序关系将节点之间的信息更新生成事件;其中每个事件都有四个特征:源节点v
l
、目标节点vj、事件类型e
ij
、以及时序信息t
ij
。对于时序信息的隐藏状态计算公式如下:
[0075][0076]
这里f代表时间向量的维数,f是第f维数。采用time2vec对时间进行编码记为t2v,t2v以时间向量的第一维为线性时间表示,其他为周期非线性表示。ωf和是可学习的线性参数。通过事件的时间顺序来构造事件,给定源节点v
l
、目标节点vj、事件类型e
ij
、以及时序信息t
ij
通过连接以下四个特征进行建模,计算公式如下:
[0077]
[0078]
其中||代表拼接操作,与分别表示节点v
l
和节点vj在时间为n时表示的隐藏状态,而表示连接每对节点边代表的隐藏状态。在先后生成事件的编码之后,按照时间顺序得到一系列有时间戳的事件。
[0079]
2.合约源码多模态预训练问题定义
[0080]
给定一个cfg图事件序列g=[g1,g2,

,gn],其中n是序列长度。由于bert模型的嵌入层会在输入序列前附加一个特殊的分类嵌入([cls]),在结尾有分隔符([sep])所以最后一个编码器层的输出为长度为n+2的序列,表示为:
[0081]
xs=[e[
cls
],e1,e2,

,en,e
[sep]
]
ꢀꢀꢀꢀꢀꢀ
(3)
[0082]
为了与合约模式保持一致,我们在函数对齐注释特征之前附加一个零向量,与分隔符注释特征表示为:
[0083]
xn=[a
[cls]
,a1,a2,

,an,a
[sep]
]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0084]
其中a
[cls]
是一个零向量,方法的目标是利用xs和xn之间的相互作用来调整每个合约,以便更好地微调预训练bert模型,提高相似性分析性能。
[0085]
3.掩码多模态注意力机制
[0086]
作为跨模态bert的核心,掩码多模态注意力机制mma(masked multimodal attention)是为了利用注释模态的信息来帮助合约模态调整合约的权重,并对预训练的bert模型进行微调。首先,评估每个合约的权重,在合约模态下,查询q和关键字k被定义为:
[0087][0088]
其中是合约的比例特征。注释的查询qn和关键字kn被定义为被定义为其中是缩放后的函数对齐注释特征。合约注意力矩阵αs和注释注意力矩阵βn的定义为:
[0089]
αs=relu(q
sknt
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0090]
βn=relu(q
nknt
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
[0091]
为了通过合约和注释之间的互动调整每个单词的权重,对合约注意力矩阵αs和注释注意力矩阵βn进行加权求和,得到加权融合注意力矩阵:
[0092]
wf=ws*αs+wn*βn+b
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
[0093]
其中ws和wn表示合约和注释模态的权重区别,b表示偏差。为了减少填充对序列的影响,引入一个掩码矩阵m,它使用0表示样本位置,使用-∞表示填充的位置(在softmax功能后,填充矩阵的注意力值将更改为0)。多模态注意力矩阵wm定义为:
[0094]
wm=softmax(wf+m)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)
[0095]
得到多模态注意力矩阵后,将wm乘以bert最后一层编码器的输出vm,其定义为vm=xs,得到注意力矩阵x
att

[0096]
x
att
=w
mvm
ꢀꢀꢀꢀꢀꢀꢀ
(10)
[0097]
4.合约源码多模态预训练模型
[0098]
如图4所示,输入跨模态bert模型由两部分组成:cfg事件序列和函数对齐的注释特征。首先,事件序列将通过预训练的bert模型最后一个编码器层的输出作为合约特征。由于函数对齐注释特征xa的维度明显小于合约特征xs,采用一维卷积层将其控制在相同的尺
寸:
[0099][0100]
其中k
{t,a}
代表合约和注释的卷积核大小。因为xs的维度明显高于xn,在训练过程中,的值会越来越大并大于为了防止点积变大,将softmax函数推向极小的梯度区域,我们将合约特征扩展为注释特征扩展为
[0101][0102][0103]
在得到和后,为了使合约和注释信息充分交互,将它们输入到mma(masked multimodal attention)中。该注意力机制可以通过结合不同模态下的合约表现来调整合约的权重。在得到mma的输出结果x
att
后,在xs和x
att
上采用一个残余连接,以保持数据的原始结构。然后通过一个线性层和一个归一化层,最终得到最后一个线性层的输出y1=[l
[cls]
,l1,l2,

,ln,l
n+1
]。因为第一个符号l
[cls]
的表示式根据其他的符号信息学习的,将其作为聚合表示并将其输入到映射函数,生成最终检测结果。
[0104]
以上,仅为本技术较佳的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应该以权利要求的保护范围为准。

技术特征:
1.基于跨模态预训练模型的智能合约相似性检测方法,其特征在于,包括:构建智能合约的控制流图;提取所述智能合约中的注释信息,将所述控制流图与所述注释信息进行对应,获取对应图;将所述对应图中的信息输入预设的跨模态预训练模型,获取合约的特征表示向量;基于所述特征表示向量,通过阈值进行合约相似性的判定。2.根据权利要求1所述的基于跨模态预训练模型的智能合约相似性检测方法,其特征在于,构建所述控制流图包括:获取所述智能合约源码的汇编指令;将所述汇编指令转换为预设元素,基于所述预设元素,生成所述控制流图;其中,所述预设元素包括:block集和edge集,所述block集为图中节点指令的集合,所述edge集为边的起始点、终点和类型的结合。3.根据权利要求2所述的基于跨模态预训练模型的智能合约相似性检测方法,其特征在于,获取所述智能合约源码的汇编指令包括:对所述智能合约源码进行编译,获取字节码文件;对所述字节码文件进行反编译,生成所述汇编指令。4.根据权利要求1所述的基于跨模态预训练模型的智能合约相似性检测方法,其特征在于,所述对应图中的信息包括:图的信息、block的指令集合、边的属性、时序信息、合约的注释信息和函数名称;其中所述图的信息包括:起始点、边类型和终止点。5.根据权利要求1所述的基于跨模态预训练模型的智能合约相似性检测方法,其特征在于,预设的所述跨模态预训练模型包括:cfg事件序列和函数对齐的注释特征;将所述对应图中的信息输入预设的所述跨模态预训练模型包括:将所述对应图中的信息进行事件生成;将生成的事件序列,通过所述跨模态预训练模型的最后一个编码器层的输出作为合约特征;将所述合约特征进行一维卷积处理后,再进行扩展处理;将扩展后的特征输入掩码多模态注意力机制,通过结合不同模态下的合约表现来调整合约的权重;在所述掩码多模态注意力机制的输出和所述合约特征上,采用一个残余连接,保持数据的原始结构,在通过一个线性层和一个归一化层后,获得最后一个线性层的输出,即所述特征表示向量。6.根据权利要求1所述的基于跨模态预训练模型的智能合约相似性检测方法,其特征在于,通过阈值进行合约相似性的判定包括:通过映射函数,将所述特征表示向量映射在[0,1]内,通过阈值进行合约相似性的判定。7.根据权利要求5所述的基于跨模态预训练模型的智能合约相似性检测方法,其特征在于,将所述对应图中的信息进行事件生成包括:利用输入数据中边的时序关系将节点之间的信息更新生成事件;其中每个事件都有四个特征:源节点v
l
、目标节点v
j
、事件类型e
ij
、以及时序信息t
ij

通过事件的时间顺序来构造事件,将所述源节点v
l
、目标节点v
j
、事件类型e
ij
、以及时序信息t
ij
通过预设连接进行建模,生成事件的编码之后,并按照时间顺序获取一系列有时间戳的事件;所述预设连接为:其中,||代表拼接操作,与分别表示节点v
l
和节点v
j
在时间为n时表示的隐藏状态,表示连接每对节点边代表的隐藏状态,表示时序信息的隐藏状态,表示节点之间构成的事件。8.根据权利要求5所述的基于跨模态预训练模型的智能合约相似性检测方法,其特征在于,所述掩码多模态注意力机制的输出为:x
att
=w
mvm
其中,x
att
表示注意力矩阵,即掩码多模态注意力机制的输出,v
m
表示跨模态预训练模型的最后一层编码器的输出,w
m
表示多模态注意力矩阵;所述多模态注意力矩阵w
m
为:w
m
=softmax(w
f
+m)其中,w
f
表示加权融合注意力矩阵,m表示掩码矩阵;所述加权融合注意力矩阵w
f
为:w
f
=w
s

s
+w
n

n
+b其中,w
s
和w
n
表示合约和注释模态的权重区别,b表示偏差,α
s
表示合约注意力矩阵,β
n
表示注释注意力矩阵。9.根据权利要求5所述的基于跨模态预训练模型的智能合约相似性检测方法,其特征在于,所述一维卷积处理为:其中,k
{t,a}
表示合约和注释的卷积核大小,x
n
表示注释特征,x
s
表示合约特征,表示经过一维卷积后的合约特征,表示经过一维卷积后的注释特征,conv1d表示一维卷积神经网络;所述扩展处理为:所述扩展处理为:
其中,表示扩展后的合约特征,表示扩展后的注释特征。

技术总结
本发明提出基于跨模态预训练模型的智能合约相似性检测方法,包括:构建智能合约的控制流图;提取所述智能合约中的注释信息,将所述控制流图与所述注释信息进行对应,获取对应图;将所述对应图中的信息输入预设的跨模态预训练模型,获取合约的特征表示向量;基于所述特征表示向量,通过阈值进行合约相似性的判定。本发明能实现高精度智能合约语义相似性检测。测。测。


技术研发人员:庄园 樊泽楷 刘昊洋 王诚 段毅航 蔡成涛 王巍 李承国 王小芳 杨明刚 陈征平 陈志远 李晋 曹雪 冯晓宁 付岩 关键 兰海燕 李智慧 刘海波
受保护的技术使用者:哈尔滨工程大学三亚南海创新发展基地 海南俊码数据研究院有限公司
技术研发日:2023.08.22
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐