掌桥专利:专业的专利平台
掌桥专利
首页

一种基于Transformer的对比多视图下庞氏骗局检测方法

文献发布时间:2024-04-18 20:01:30


一种基于Transformer的对比多视图下庞氏骗局检测方法

技术领域

本发明涉及计算机-视图检测技术,具体是一种基于Transformer的对比多视图下庞氏骗局检测方法。

背景技术

智能合约是一段可以实现特定功能的代码,它是匿名的参与者进行价值转移的协议,当满足协议预设条件的时候,就会自动触发执行,智能合约一旦执行便无法更改永不失效,既无法人工终止,也不依赖于任何第三方机构。这使得很多投资者认为:一个持续运行的且能够不断获得收益的智能合约项目,不存在类似庞氏骗局的风险。实则不然,许多庞氏骗局都是在智能合约的掩护下进行伪装,让投资者损失了数百万美元。因此,检测以太坊上的庞氏骗局是一项紧迫的任务。

在以太坊中拥有的账户类型包括对外拥有的账户和合同账户。骗子的行为通常体现在外部拥有的账户和相关交易。因此,Bartoletti等人根据历史交易信息提取出相应的特征来检测庞氏骗局,但是该类方法不能在发布智能合约的早期被识别,且需要大量相关账户交易特征信息进行模型的训练。智能合约中骗子常常利用智能合约的自动执行功能,发布令人信服的项目计划,让投资认为他们可以及时获得奖金,获得投资者的信任。因此,Bian等人通过分析智能合约的操作码、字节码和二进制接口(ABI)作为基本特性来检测庞氏骗局。该方法虽然可以在交易之前防止类似庞氏骗局的广泛使用。然而,在智能合约中的庞氏骗局检测仍然存在以下问题:

(1)信息丢失:如果较早的输入源代码很长的合约会导致信息在传输过程中丢失,使模型不能完全理解语义的上下文信息,因此我们需要一个能捕捉视图特征的长距离依赖关系的模型;

(2)源代码不足:在Etherscan数据集上大约只有25%的智能合约有操作码、字节码和ABI;

(3)庞氏骗局的智能合约数据获取困难:在Etherscan数据集上庞氏骗局智能合约和非庞氏骗局的智能合约比例大约在1:3,庞氏骗局标注困难,而传统的深度学习模型需要大规模的数据,才能使模型准确的识别出有问题的智能合约。

发明内容

本发明的目的是针对现有技术的不足,而提供一种基于Transformer的对比多视图下庞氏骗局检测方法。这种方法能够半监督训练,能准确识别庞氏骗局,同时检测庞氏骗局合约具有实时性。

实现本发明目的的技术方案是:

一种基于Transformer的对比多视图下庞氏骗局检测方法,所述方法为:首先采用Vision Transformer即ViT、Transformer、Bidirectional Encoder Representation fromTransformer即BERT模型学习合约代码视图特征和账户交易视图特征的特征嵌入,获得视图特征的全局结构和语义特征,捕获视图特征Token之间的远程依赖关系,然后采用对比学习的方法,将视图特征进行映射,如果视图特征都在相同的类别非庞氏骗局或者庞氏骗局,特征嵌入分别都映射附件相邻的点即欧几里德距离测量,而不同类别的视图特征映射到较远的点,具体包括如下步骤:

1)数据预处理:给定一组多视图的智能合约特征,通过在嵌入空间中将同一类别下庞氏骗局或者非庞氏骗局的视图特征聚集在一起,同时将不同类别的视图特征远离,学习不同视图特征的深度表示,每个视图的编码可以被连接以形成相同类别的完整特征表示,用I

第一:账户活跃期长、交易量大、合同余额低,因为庞氏骗局总是试图保持高的回报率的形象;

第二:极少部分的账户回报数大于投资数,因为合约创始者会对投资者的交易收取高额手续费;

第三:庞氏骗局账户的第一笔交易时间和最后一笔交易时间间隔短,因此在该数据集中每个账户共包含42个特征,其中大部分特征跟Chen和Hirshman等人提出的类似,如known rate,balance,N_investment,N_payment,difference index,paid rate,and N_maxpay等特征,完成上述数据预处理,包括:

1-1)字节码视图:从以太坊上直接获取公开的智能合约源代码,同时采用编译器编译获取字节码,智能合约的字节码视图是由一串十六进制数表示,按照字节码的排序将字节码转换成二进制数字、并将二进制数字转换成像素,生成224×224的灰度图像,这样能减少模型提取字节码视图特征的时间;

1-2)操作码视图:根据从以太坊上获得的智能合约的操作码,为每一个不同的操作码建立一个英文字典序列,字典中的英文序列与操作码一一对应,每个单词序列用[SOS]和[EOS]的Token括起来;

2)特征提取:在TranMulti-View Net中,利用Vision Transformer即ViT、Transformer、Bidirectional Encoder Representation from Transformer即BERT模型将预处理后的操作码视图、账户交易视图特征和字节码视图分别传入操作码编码器、账户交易特征编码器和字节码编码器进行编码,并进行多视图的特征映射,其中:

操作码编码器:将操作码视图传入操作码编码器中,操作码编码器采用BERT模型,BERT模型中采用的是具有8个关注头以及12层的宽度为512的Transformer模型,在Transformer模型中账户交易视图特征都会经过归一化处理,再建立Token之间具有长距离依赖关系的特征图,并线性投射到多视图的嵌入空间,在操作码编码器的Transformer中,叠加采用Token Embeddings和Position Embeddings,Token Embeddings采用词嵌入模型,Token Embeddings是将经过字典处理后的单词序列进行词嵌入学习,每个序列中的词即Tokens将转换为固定维度的词向量,Positional Embeddings表示句子中单词的位置信息,从而学习操作码视图的文本结构信息,另外,在操作码编码器中对操作码视图增加Mask自注意力机制,从而增强模型的建模能力,并辅助BERT提取视图中的关键特征;

字节码编码器:将字节码视图传入字节码编码器进行线性映射,在字节码编码器中采用ViT模型,在ViT模型中采用和BERT模型相同的Transformer参数,在Transformer模型接受的1D序列的嵌入输入,处理2维的字节码图像采用Patch Embedding将图像x∈R

账户交易特征编码器:对账户交易特征信息编码时,采用Transformer模型,该模型的Transformer参数和ViT中的Transformer参数一样,另外没有在账户编码器中加入Position Embedding,因为输入的账户交易特征只有45个维度加入Position Embedding是没有意义的;

Transformer:若智能合约中存在源码偏长,则可能导致在模型特征提取过程中特征信息丢失的情况,使模型不能完全理解语义的上下文信息,因此,在TranMulti-View Net采用Transformer,Transformer以并行的方式处理输入的数据,并且有效地解决长时依赖问题,显著减少训练和预测时间,Transformer已经在多个领域展现了在数据处理方面的显著优势,如除雨、目标识别等;Transformer模型由Position Embedding模块、多头注意力机制和前馈网络组成,在多头主力机制中自注意力机制占据主要作用,自注意力机制通过K、Q、V向量来学习特征信息,其中K和V向量记录已经学到的信息,并通过查询Q来得到注意力权重,自注意力机制输出向量的计算方式如公式(1)所示:

其中利用K、Q进行视图特征之间的相似度计算,并获得相似度权重矩阵,V表示对相似度权重矩阵进行缩放调节,k表示维度,控制内积不至于太大,softmax函数是对相似度权重进行归一化,归一化的权重和相应的V进行加权求和得到注意力输出,自注意力机制可以“动态”地生成不同连接的权重,从而可以处理视图特征的长距离依赖关系,多头注意力机制是将k个自注意力机制进行组合,每个自注意力模块都关注相同的K、Q、V,每个模块对应最终输出序列的子空间,并且输出序列互相独立,多头注意力机制模块能同时关注表征子空间的不同位置的不同信息,多头注意力机制计算方式如公式(2)、公式(3)所示:

Head

MutiHead(Q,K,V)=concat(head1,…,head

其中k表示有k组K、Q、V向量,k表示K、Q、V的权重参数,每组k都不相同,concat表示将自注意力机制的结果连接起来,连接起来的权重乘上一个权重向量W

前馈网络:Transformer中的前馈网络是由1个Multilayer Perceptron即MLP层、GRU层和1个Relu激活函数组成,其中GRU可以使模型更容易学习到视图特征的长依赖;

3)对比学习:定义对比学习损失函数,对比学习损失函数可以衡量同一类别的多视图特征之间的相似性和不同类别的多视图特征之间的差异性,采用对比学习损失函数对模型进行训练,使模型能够从多视图特征中学习到判别庞氏骗局的特征,将同一类别的视图分布与相同的特征空间合并到模型最后一层,然后接入全连接层,再利用余弦相似度处理后的视图特征进行预测,最后得到庞氏骗局的分类结果,具体地:

针对多视图特征,将同一种类别下的视图特征的特征表达在同一空间,这样在缺少其中任意一种视图的情况下,模型也能很好地进行庞氏骗局的预测,模型加入对比学习的方式学习多视图特征即账户交易视图特征、操作码视图特征和字节码视图特征,在确保拥有一种或者几种视图的情况下,都能预测同一类别下的庞氏骗局,确保表达的语义信息的一致性,利用对比学习的技术,可以缩小表达的语义信息的差异,通过加入对比学习训练模型,从而达到使多视图特征分布在同一特征空间,用I表示字节码视图,T表示操作码视图,J表示账户交易视图特征,分别提取视图特征如下所示:

I

T

J

I

T

J

其中I

其中sim(u,v)=u

其中α∈[0,1]表示当庞氏骗局合约较少,α的数值越大,庞氏骗局合约贡献的损失值会越大,γ表示调节因子降低非庞氏骗局的权重,集中训练庞氏骗局样本,p∈[0,1]表示预测样本的类别概率,y表示样本为庞氏骗局和非庞氏骗局的样本标签,若y=1,则表示庞氏骗局样本;若y=0,则表示非庞氏骗局样本,最终,本模型的损失函数如公式(13)所示:

loss=η*loss

在公式(13)中采用半监督训练时,W

4)模型评估:模型评估指标选取为了方便本技术方案的模型与其它模型对庞氏骗局进行检测识别的性能比较,查准率Precision、查全率Recall和F-score 3个指标对模型的性能进行度量,3个指标的具体定义如下:

其中TP表示实际为正样本、且被判别为正样本的样本数量,FP表示实际为负样本,但被判别为正样本的样本数量,FN表示实际为正样本,但被判别为负样本的样本数量。

本技术方案采用基于Transformer的多视图下对比学习方法,首先采用VisionTransformer(ViT)、Transformer、Bidirectional Encoder Representation fromTransformer(BERT)模型学习合约代码视图特征和账户交易视图特征的特征嵌入,获得视图特征的全局结构和语义特征,捕获视图特征Token之间的远程依赖关系,然后采用对比学习的方法,将视图特征进行映射,如果视图特征都在相同的类别(非庞氏骗局或者庞氏骗局),特征嵌入分别都映射附件相邻的点(欧几里德距离测量),而不同类别的视图特征映射到较远的点。

本技术方案的优点是:

1)通过ViT、BERT和Transformer模型相结合提供一种新的模型TranMulti-ViewNet来检测庞氏骗局:在ViT模型将合约代码视图特征中的字节码进行编码,在BERT模型中,将操作码视图特征进行编码,Transformer将账户交易视图特征进行编码,ViT模型、BERT模型和Transformer模型编码的多视图特征可以捕获视图特征Token标记之间的长期依赖关系,加深了对庞氏骗局语义信息的理解;

2)提供一种半监督学习进行模型的训练方式:该方式主要采用了对比学习的方式,将同一类别的多视图特征在投影在相近的特征值空间,利用对比学习能使模型提取到更好的多种视图融合特征,加强模型对语义信息的理解;

3)模型可以检测出合约代码隐藏的庞氏骗局:本技术方案的模型可以从合约代码视图特征和账户交易视图特征提取特征进行预测,即使合约代码视图特征和账户交易视图特征其中有一个是被有意隐藏的,也能检测出智能合约中的庞氏骗局。

这种方法能够半监督训练,能准确识别庞氏骗局,同时检测庞氏骗局合约具有实时性。

附图说明

图1为实施例中的多视图特征表示学习示意图;

图2为实施例中的基于TranMulti-View Net的庞氏骗局检测方法的示意图;

图3为实施例中不同视图下模型检测庞氏骗局合约的时间示意图;

图4为实施例中不同视图下的庞氏骗局的智能合约和非庞氏骗局的智能合约特征的分布示意图。

具体实施方式

下面结合附图和实施例对本发明的内容作进一步的阐述,但不是对本发明的限定。

实施例:

参照图1,一种基于Transformer的对比多视图下庞氏骗局检测方法,所述方法为:首先采用Vision Transformer即ViT、Transformer、Bidirectional EncoderRepresentation from Transformer即BERT模型学习合约代码视图特征和账户交易视图特征的特征嵌入,获得视图特征的全局结构和语义特征,捕获视图特征Token之间的远程依赖关系,然后采用对比学习的方法,将视图特征进行映射,如果视图特征都在相同的类别非庞氏骗局或者庞氏骗局,特征嵌入分别都映射附件相邻的点即欧几里德距离测量,而不同类别的视图特征映射到较远的点,如图2所示,具体包括如下步骤:

1)数据预处理:给定一组多视图的智能合约特征,通过在嵌入空间中将同一类别下庞氏骗局或者非庞氏骗局的视图特征聚集在一起,同时将不同类别的视图特征远离,学习不同视图特征的深度表示,每个视图的编码可以被连接以形成相同类别的完整特征表示,用I

第一:账户活跃期长、交易量大、合同余额低,因为庞氏骗局总是试图保持高的回报率的形象;

第二:极少部分的账户回报数大于投资数,因为合约创始者会对投资者的交易收取高额手续费;

第三:庞氏骗局账户的第一笔交易时间和最后一笔交易时间间隔短,因此在该数据集中每个账户共包含42个特征,其中大部分特征跟Chen和Hirshman等人提出的类似,如known rate,balance,N_investment,N_payment,difference index,paid rate,and N_maxpay等特征,完成上述数据预处理,包括:

1-1)字节码视图:从以太坊上直接获取公开的智能合约源代码,同时采用编译器编译获取字节码,智能合约的字节码视图是由一串十六进制数表示,按照字节码的排序将字节码转换成二进制数字、并将二进制数字转换成像素,生成224×224的灰度图像,这样能减少模型提取字节码视图特征的时间;

1-2)操作码视图:根据从以太坊上获得的智能合约的操作码,为每一个不同的操作码建立一个英文字典序列,字典中的英文序列与操作码一一对应,每个单词序列用[SOS]和[EOS]的Token括起来;

2)特征提取:在TranMulti-View Net中,利用Vision Transformer即ViT、Transformer、Bidirectional Encoder Representation from Transformer即BERT模型将预处理后的操作码视图、账户交易视图特征和字节码视图分别传入操作码编码器、账户交易特征编码器和字节码编码器进行编码,并进行多视图的特征映射,其中:

操作码编码器:将操作码视图传入操作码编码器中,操作码编码器采用BERT模型,BERT模型中采用的是具有8个关注头以及12层的宽度为512的Transformer模型,在Transformer模型中账户交易视图特征都会经过归一化处理,再建立Token之间具有长距离依赖关系的特征图,并线性投射到多视图的嵌入空间,在操作码编码器的Transformer中,叠加采用Token Embeddings和Position Embeddings,Token Embeddings采用词嵌入模型,Token Embeddings是将经过字典处理后的单词序列进行词嵌入学习,每个序列中的词即Tokens将转换为固定维度的词向量,Positional Embeddings表示句子中单词的位置信息,从而学习操作码视图的文本结构信息,另外,在操作码编码器中对操作码视图增加Mask自注意力机制,从而增强模型的建模能力,并辅助BERT提取视图中的关键特征;

字节码编码器:将字节码视图传入字节码编码器进行线性映射,在字节码编码器中采用ViT模型,在ViT模型中采用和BERT模型相同的Transformer参数,在Transformer模型接受的1D序列的嵌入输入,处理2维的字节码图像采用Patch Embedding将图像x∈R

账户交易特征编码器:对账户交易特征信息编码时,采用Transformer模型,该模型的Transformer参数和ViT中的Transformer参数一样,另外没有在账户编码器中加入Position Embedding,因为输入的账户交易特征只有45个维度加入Position Embedding是没有意义的;

Transformer:若智能合约中存在源码偏长,则可能导致在模型特征提取过程中特征信息丢失的情况,使模型不能完全理解语义的上下文信息,因此,在TranMulti-View Net采用Transformer,Transformer以并行的方式处理输入的数据,并且有效地解决长时依赖问题,显著减少训练和预测时间,Transformer已经在多个领域展现了在数据处理方面的显著优势,如除雨、目标识别等;Transformer模型由Position Embedding模块、多头注意力机制和前馈网络组成,在多头主力机制中自注意力机制占据主要作用,自注意力机制通过K、Q、V向量来学习特征信息,其中K和V向量记录已经学到的信息,并通过查询Q来得到注意力权重,自注意力机制输出向量的计算方式如公式(1)所示:

其中利用K、Q进行视图特征之间的相似度计算,并获得相似度权重矩阵,V表示对相似度权重矩阵进行缩放调节,k表示维度,控制内积不至于太大,softmax函数是对相似度权重进行归一化,归一化的权重和相应的V进行加权求和得到注意力输出,自注意力机制可以“动态”地生成不同连接的权重,从而可以处理视图特征的长距离依赖关系,多头注意力机制是将k个自注意力机制进行组合,每个自注意力模块都关注相同的K、Q、V,每个模块对应最终输出序列的子空间,并且输出序列互相独立,多头注意力机制模块能同时关注表征子空间的不同位置的不同信息,多头注意力机制计算方式如公式(2)、公式(3)所示:

Head

MutiHead(Q,K,V)=concat(head

其中k表示有k组K、Q、V向量,k表示K、Q、V的权重参数,每组k都不相同,concat表示将自注意力机制的结果连接起来,连接起来的权重乘上一个权重向量W

前馈网络:Transformer中的前馈网络是由1个Multilayer Perceptron即MLP层、GRU层和1个Relu激活函数组成,其中GRU可以使模型更容易学习到视图特征的长依赖;

3)对比学习:定义对比学习损失函数,对比学习损失函数可以衡量同一类别的多视图特征之间的相似性和不同类别的多视图特征之间的差异性,采用对比学习损失函数对模型进行训练,使模型能够从多视图特征中学习到判别庞氏骗局的特征,将同一类别的视图分布与相同的特征空间合并到模型最后一层,然后接入全连接层,再利用余弦相似度处理后的视图特征进行预测,最后得到庞氏骗局的分类结果,具体地:

针对多视图特征,将同一种类别下的视图特征的特征表达在同一空间,这样在缺少其中任意一种视图的情况下,模型也能很好地进行庞氏骗局的预测,模型加入对比学习的方式学习多视图特征即账户交易视图特征、操作码视图特征和字节码视图特征,在确保拥有一种或者几种视图的情况下,都能预测同一类别下的庞氏骗局,确保表达的语义信息的一致性,利用对比学习的技术,可以缩小表达的语义信息的差异,通过加入对比学习训练模型,从而达到使多视图特征分布在同一特征空间,用I表示字节码视图,T表示操作码视图,J表示账户交易视图特征,分别提取视图特征如下所示:

I

T

J

I

T

J

其中I

其中sim(u,v)=u

其中α∈[0,1]表示当庞氏骗局合约较少,α的数值越大,庞氏骗局合约贡献的损失值会越大,γ表示调节因子降低非庞氏骗局的权重,集中训练庞氏骗局样本,p∈[0,1]表示预测样本的类别概率,y表示样本为庞氏骗局和非庞氏骗局的样本标签,若y=1,则表示庞氏骗局样本;若y=0,则表示非庞氏骗局样本,最终,本模型的损失函数如公式(13)所示:

loss=η*loss

在公式(13)中采用半监督训练时,W

4)模型评估:模型评估指标选取为了方便本技术方案的模型与其它模型对庞氏骗局进行检测识别的性能比较,查准率Precision、查全率Recall和F-score 3个指标对模型的性能进行度量,3个指标的具体定义如下:

其中TP表示实际为正样本、且被判别为正样本的样本数量,FP表示实际为负样本,但被判别为正样本的样本数量,FN表示实际为正样本,但被判别为负样本的样本数量。

实验结果表明,本例方法采用TranMulti-View Net模型获得了很好的预测庞氏骗局检测结果,Precision得分为98%,为了证明TranMulti-View Net添加的模块的有效性,通过表1分析了TranMulti-View Net中不同模块对它的影响,从表1第1行、第2行和第3行可以看出,本例方法在TranMulti-View Net模型的操作码编码器、账户交易特征编码器和字节码编码器中加入Transformer模块,使模型达到了很好的识别效果,说明Transformer能使模型捕获更多Token之间的远程依赖关系,从表1的第4行可以看出,本例方法将账户交易视图特征、操作码视图特征和字节码视图特征进行特征融合,TranMulti-View Net模型的Precision、Recall和F-score分别达到了95%,94%和94%,相对于单视图检测有着较好的提升效果,说明提供的视图越多,TranMulti-View Net模型的识别效果越好,在表1的第5行中,由于庞氏骗局合约数量不足,导致分类误差较大,从而影响本例方法模型的检测效果,因此,本例方法在TranMulti-View Net模型中加入了Focal Loss,然后,本例方法发现相对于CrossEntropy Loss,Recall和F-score的值分别提高了1%,说明Focal Loss对数据不平衡问题有一定的改善作用,但是Foca Loss提升效果不明显,是因为本例方法加入了多视图融合特征的方法,使视图特征可以相互学习特征信息,一定程度上减轻了数据不均衡问题;

最后本例方法将对比学习加入进了TranMulti-View Net模型中,使本例方法的方法能够半监督训练,发现本例方法的识别庞氏骗局的准确率达到了最高,几乎可以完全识别出庞氏骗局,说明TranMulti-View Net模型学习的效果,不仅取决于跨视图对比学习公共特征,还受益于视图间的特征空间信息共享,总之,TranMulti-View Net在召回率和F-score方面达了最优,受益于多个方面,这些方面的改进可能为智能合约的庞氏骗局提供新的思路,表1中不同模块在TranMulti-View Net模型中的表现,最佳的结果加粗显示:

表1

对比学习的性能分析:为了探究对比学习对模型学习的多视图特征有效性,将本例方法模型最后一层的全连接去掉,用Kmeans算法对特征层直接进行聚类分析,如表2所示,发现在Kmeans算法聚类下,加入了对比损失的模型能够在Kmeans算法获得更高的Precision,说明对比学习能够使同一类别的的多视图特征距离更近,不同类别的多视图特征让其距离更远,表2中采用Kmeans进行聚类后的结果(去掉了TranMulti-View Net中最后一层的全连接层),最佳的结果加粗显示:

表2

不同模块的时间消耗:为了探究实验的效率,分别计算了在TranMulti-View Net模型中操作码视图、字节码视图、账户交易视图特征和多视图检测的时间消耗,如图3所示,从图3可以看出TranMulti-View Net模型检测庞氏骗局的时间只有58ms,TranMulti-ViewNet模型利用多视图检测的时间相比于单视图检测时间消耗增加不多,进一步证明了本例方法检测庞氏骗局合约具有实时性;

特征可解释性分析:为了对模型提取的不同视图特征进行清晰的分析,采用TSNE技术对特征进行了降维以及特征可视化分析,图4是通过计算得到的庞氏骗局的智能合约和非庞氏骗局的智能合约的特征散点图,从图4可以看出,不论是单视图特征或者是多视图特征,庞氏骗局合约和非庞氏骗局合约的视图特征都具有规律性,从它们的视图特征可以看出它们的特征间隔有规律,如图4中(a)图所示,从字节码视图特征分布的角度来看,影响庞氏骗局合约图像分类结果的特征主要集中在右上侧和左下侧区域,且右上侧整体呈零星分布趋势,

如图4中(b)图、图4中(c)图所示,操作码视图特征分布和账户交易视图特征分布存在明显不同,可以看出账户交易视图特征和操作码的视图特征对庞氏骗局智能合约与非庞氏骗局智能合约的检测在逻辑上有明显的区别,另外,在账户视图特征分布中发现,庞氏骗局的智能合约和非庞氏骗局的智能合约的特征分布存在一部分重叠,说明只使用单一的账户视图检测并不能很好的检测出庞氏骗局智能合约;

如图4中(d)图所示,采用基于TranMulti-View Net模型学习多视图特征分布(并没有采用对比学习),发现分布的特征主要在左下区域和右区域,说明模型能利用多视图特征更好的使模型做出决策;

如图4中(e)图所示,将使用了半监督方法,增加了对比损失,发现多视图特征分布在左下区域和右区域,模型在同一类别下学习到的多视图特征分布几乎相同,模型更容易学习到的庞氏骗局智能合约特征和非庞氏骗局智能合约特征分布的区别。

技术分类

06120116561902