首页 > 技术文章 > 【论文翻译】Tann 2019 Towards Safer Smart Contracts: A Sequence Learning Approach to Detecting Security Threats

Y-Wen 2021-03-29 20:22 原文

摘要:

智能合约中安全漏洞的符号分析对于分析预定义的漏洞属性是有价值的。虽然一些符号工具执行复杂的分析步骤,但它们需要预定的调用深度来搜索易受攻击的执行路径,并且搜索时间随着深度的增加而增加。自2015年12月以来,以太坊等区块链上的合同数量增长了176倍。如果这些象征性的工具不能及时分析数量越来越多的合同,那么整个类别的攻击可能会造成不可挽回的损失。在本文中,我们的目标是针对新出现的威胁制定更安全的智能合约。我们提出了使用机器学习长短时记忆(LSTM)对智能合约弱点进行序列学习的方法,这使得我们能够相对快速地检测到新的攻击趋势,从而实现更安全的智能合约。我们对620000份智能合约的实验研究证明,我们的模型可以很容易地扩展以分析大量合约;也就是说,随着合约复杂性的增加,LSTM保持了接近恒定的分析时间。此外,我们的方法达到了99%的测试准确率,并正确地分析了由符号工具产生的假阳性(FP)错误。

关键词
安全威胁检测,机器学习,更安全的智能合约

1 概述

智能合约提供自动化的点对点交易,同时利用区块链提供的去中心化优势。由于智能合约能够持有每枚价值超过数百美元的虚拟硬币,它们允许通过合约逻辑自动转移货币价值或资产,同时由共识协议控制其执行的正确性[39]。区块链中自动化的加入导致了技术在金融、医疗和保险等各个领域的快速适应[53]。以太坊是最受欢迎的智能合约平台,其市值上升了210亿美元[13]。由于智能合约的完全自治性质,利用漏洞造成的损害尤其严重,因为区块链的不变性在很大程度上是不可逆转的。仅在以太坊,2016年6月,一个名为DAO(分散自治组织)的分散投资基金就有360多万以太(以太坊使用的虚拟硬币)被盗,损失高达7000万美元[25]。2017年11月,由于Parity的MultiSig钱包冻结了3亿美元[43]。这两起黑客攻击事件都是由于智能合约本身的可利用逻辑造成的,这些事件凸显了智能合约安全的强大必要性。

智能合约符号分析中使用的工具主要基于形式化的验证方法。虽然大多数分析工具都应用了动态分析来自动检测智能合约中的错误[28、35、48],但有些工具侧重于在合约的多次调用中发现漏洞[33]。Oyente就是这样一个自动错误检测器的例子。它被提议作为部署前缓解的一种形式,通过分析字节码级别的漏洞的智能合约[35]。它使用符号执行来捕获与定义的漏洞类的特征相匹配的跟踪。但是,它并不完整,因为只有在存在合同源代码的情况下才能手动确认易受攻击的标记合同。

最近,已经证明,Maian,一个精确指定和推理跟踪属性的工具,它使用过程间符号分析和具体验证来显示真实的利用[41],能够捕获许多不可靠的错误的著名例子。 使用预定义的执行跟踪漏洞直接从以太坊智能合同的字节码,Maian将脆弱合同标记为三类中的一两类-自杀、挥霍和贪婪。 Maian能够检测到不同类型的漏洞,这些漏洞只有在多次调用之后才会出现,同时在以太坊的私有分支上验证其结果。然而,其检测的准确性程度受到其调用深度的限制,其中指出,由于分析时间和搜索的穷尽性之间的权衡,可能出现的漏洞没有达到。 此外,合同的具体验证只能由Maian在分叉以太坊链中存在的标记合同上进行,也只能在现有源代码的合同上进行。

在机器学习领域,递归神经网络是非常具有表现力和强大的模型,适合于顺序数据。 长短期记忆(LSTM)模型是递归网络的一个引人注目的变体,主要用于解决语音识别[18,26]、机器翻译[16,51]和自然语言处理[24,34]等困难的顺序问题。 近年来,人们对智能合同的安全性和机器学习在计算机安全中的应用越来越感兴趣,论文涉及自动利用分析[2]、[36]猜测密码的神经网络、从字节码[32]开发的合同的利用以及常见编程陷阱的分类[4]。

在本工作中,我们引入了一个LSTM模型,用于在操作码级别上检测智能合同安全威胁。 据我们所知,这是智能契约开发检测的第一种机器学习方法。 我们研究了使用LSTM模型检测智能合同安全威胁的适用性。 随着智能合同按顺序可用,它们可以用于在每个时间点更新未来合同的LSTM模型。 由于所有智能合同中只有大约1%有可用的Solidity源代码(我们指的是Etherscan[21]),它突出了我们的LSTM学习模型作为一种智能合同安全工具的效用,它只在操作码级别上运行。

贡献。我们在这项工作中的贡献如下:
    •我们表明,我们的LSTM模型在检测智能合约安全漏洞方面能够优于符号分析工具Maian[41]。
    •我们通过实验证明,LSTM的性能随着新合同的签订而提高,并最终实现了(1)检测测试准确率 99.57%(2)86.04%的F1分数。我们表明,我们的方法检测到高达92.86%的具有挑战性的合同是Maian犯下的假阳性(FP)错误。
    •我们表明,随着智能合约复杂性的增加,LSTM只需要恒定的分析时间,可以轻松扩展以处理大量智能合约。
    •通过证明拟议的LSTM工具是符号分析工具的竞争替代品,我们为确保智能合约安全的机器学习模型的未来工作设定了基准

2 背景

2.1 智能合约

智能合约是在区块链上存储、验证和执行的自主、基于状态的可执行代码。以太坊智能合约主要用高级编程语言Solidity编写,然后编译成基于堆栈的字节码格式。智能合约由发送方以交易的形式部署在以太坊区块链上,其中一个地址作为合约的签名。每个智能合约都包含一个状态(帐户余额和私有存储)和可执行代码。一旦部署,智能合约是不可变的,不能对合约进行任何修改。但是,如果执行合同中的自杀指令,可能会导致死亡。

合同一旦部署到区块链上,就可以通过向合同地址发送交易以及输入数据和气体(“智能合同执行的燃料”)来调用。在以太坊中,gas的分配与其指令集中每条指令所需的计算量成比例[50]。这种气体在工作证明系统中用作执行合同的激励。如果在执行结束前气体不足或耗尽,则不向调用者退还气体,并且事务(包括状态)恢复。不能向已终止的合约发送或从中发送任何事务。

在以太坊中,智能合约的调用由网络中的每个完整节点执行,同时考虑区块链的当前状态和正在执行的合约的状态,以就执行的输出达成共识。然后,合同将更新合同状态,将值转移到其他合同地址,和/或执行其他合同的功能。

2.2 合约漏洞

由于智能合约的自治性和不变性,一旦对合约成功执行攻击,不在底层区块链上执行硬分叉[12],交易就不可能逆转。由于以太坊内部智能合约的分布严重偏向金融部门(主要用于资产或资金的转移)[6],过去的一些攻击已经造成数百万美元的损失。这凸显了对智能合约安全性的强烈需求。尽管已有一些关于智能合约中漏洞利用类别的研究和分析[10,28,35],但我们主要关注[41]中定义的类,这是因为它们的广泛覆盖范围和开放源码工具Maian的可用性。我们将简要回顾本文中强调的一些概念和利用类别。

智能合约的执行跟踪是在其生命周期内发生的一系列合约调用。在一系列契约调用上发生的攻击称为跟踪攻击。在[41]中,以太坊智能合约中的漏洞分为三类:自杀、挥霍和贪婪.

  • 自杀合同。可以被任意地址杀死的智能合约被归类为自杀。尽管有些契约可以选择自杀作为抵御攻击的手段,但如果实施不当,同一特性也可能允许任何其他用户选择自杀。这种情况发生在ParitySig攻击[43]期间,任意用户设法获得了一个库合同的所有权,并杀死了它,使得依赖此库的任何其他合同都无效,并有效地锁定了他们的资金。
  • 挥霍合同。归类为挥霍的智能合约是指可以将资金泄漏到任意地址的合约,这些地址要么(a)不属于合约的所有者,要么(b)没有向合约存入资金。合同通常会有内部电话将资金发送到其他合同或地址。但是,如果没有足够的机制来保护此类调用的可用性,攻击者可能会利用此调用将以太网传输到自己的帐户,从而耗尽其资金的脆弱合同。
  • 贪婪的合同。不能释放Ether的智能合约被归类为贪婪合约。在ParitySig攻击[43]之后,许多依赖图书馆合同的账户无法发放资金,导致估计损失3000万美元。在贪婪类中,易受攻击的合同被细分为两类—(a)接受以太但完全没有发送资金指令的合同,和(b)接受以太但包含发送资金指令但无法执行任务的合同。

2.3 循环神经网络

递归神经网络(RNN)是适应序列数据的强大机器学习模型。这些模型在语音识别、机器翻译和自然语言处理等困难的序列学习问题上都具有很好的学习效果。这些神经网络具有一种惊人的能力,即仅使用两个隐藏层就可以学习高精度的模型[40]。然而,标准RNN很难在实践中得到正确的训练。该模型难以管理的主要原因是它同时存在爆炸和消失梯度[7],这两个问题都是由于RNN的循环性质造成的。

虽然爆炸梯度问题相对容易通过简单地收缩梯度来解决,范数通过某个阈值,这是一种称为梯度裁剪的方法[37,44],但消失梯度问题更具挑战性。这是因为渐变消失不会导致渐变本身变小。实际上,梯度在与短期相关性相对应的方向上的分量很大,而在与长期相关性相对应的方向上的分量很小。因此,递归网络能够很容易地学习短期依赖,但不能学习长期依赖。

2.4 长短期记忆

为了解决标准RNN的消失梯度和长期依赖性问题,提出了长-短期记忆(LSTM)网络[22,27]。在LSTM中,门函数被推荐用于控制任何给定的递归单元中的信息流:输入门、遗忘门和输出门。一个输入门作为一个门卫,允许相关的信号进入隐藏的上下文。另一方面,遗忘门用于确定为当前时间步记住的先验信息量,输出门用作预测机制。通过引入这样的信息门控制,LSTM几乎总是比标准RNNs表现得更好。

RNN采用序列{x1,x2。,xT}作为输入并构造相应的隐藏状态序列(或表示){h1,h2。,hT}。在最简单的情况下,单层递归网络使用隐藏表示{h1,h2。,hT}用于估计和预测。在深度RNN中,每个隐藏层使用前一层的隐藏状态作为输入。也就是说,k∥1层中的隐藏状态被用作k层的输入。在RNNs中,每一层中的每个隐藏状态都执行基于记忆的学习,以便使用先前的输入来重视任务的相关特征。

以前的隐藏状态和当前输入被转换为新的隐藏状态,并通过引入(ht-1,xt)的循环运算符实现,例如:image

其中Wh、Wx和b是层的参数,tanh(·)表示标准双曲正切函数

LSTM体系结构专门用于处理递归操作。 在该体系结构中,引入了一个内存单元ct,如图1所示,用于内部长期存储。 我们记得,隐藏状态ht是状态在时间步长t的近似表示,ct和ht都是通过三个门函数计算的,以保留信息的长期和短期存储。 遗忘门ft通过一个元素级产品,直接将ct连接到上一个时间步骤的存储单元ct-1。 为遗忘门使用大的值将导致单元格保留其以前的几乎所有值。 此外,输入门和输出门控制内部的信息流。 每个门函数都有自己的权重矩阵和偏置向量。我们分别用下标f表示遗忘门函数,i表示输入门函数,o表示输出门函数(例如,Wxf、Whf和bf是遗忘门函数的参数)。image

序列建模中不同领域的实践者使用略有不同的LSTM变体。在这项工作中,我们遵循领先的自然语言处理研究[24]的模型,用于处理具有长程结构的复杂序列。以下是我们完整的LSTM架构的正式定义,没有窥视孔连接,
image
其中σ(·)是S形函数,tanh(·)是双曲正切函数,⊙表示元素乘积。

3 学习智能合约威胁

在本节中,我们提出了使用顺序机器学习方法对智能合约漏洞进行建模,并解释了LSTM学习模型如何处理智能合约操作码的语义表示。提出了安全威胁检测的目标、智能合约操作码序列的性质以及操作码的嵌入表示。

3.1 合约威胁分类

我们的LSTM学习模型的目标是执行两类分类,以便检测任何给定的智能合约是否包含安全威胁。在优化概念的启发下,LSTM学习的目标是最小化检测损失函数,以最大限度地提高分类精度。通过每个训练数据点提供的损失,我们理想地期望序列模型从错误中学习。学习模型的损失函数大多是特定于应用的,并且是根据它们对分类器性能的影响来选择的[3,8]。用来衡量分类模型性能的最常用的方法是交叉熵损失(对数损失)、softmax和平方损失。

在我们的例子中,我们选择了对数损失或二元交叉熵损失函数。当我们将智能合约威胁检测形式化为一个二进制分类问题时,这是首选的。让我们继续定义二元交叉熵损失函数L的推导:image

其中N是训练数据集中合同操作码的总数,x是所有训练操作码的总和,a=σ(z),其中 image是输入的加权和,y是相应的期望威胁估计。当网络改进对所有训练操作码X的期望输出y的估计时,交叉熵损失的和趋于零。这意味着,随着时间的推移,随着模型学习如何更准确地对智能合约进行分类,它将最小化输出估计a和期望输出y之间的距离。一个完美的分类器将实现精确为零的对数损失。

3.2 合约的序列模型

在本节中,我们首先介绍LSTM模型处理的以太坊操作码序列,然后使用智能合约操作码序列作为学习模型的输入,以检测安全威胁,如图2所示。
image

3.2.1以太坊操作码序列。与许多序列学习任务一样,智能合约威胁检测涉及处理序列操作码数据。更准确地说,操作码是由机器(虚拟或硅)解释的一系列数字,表示要执行的操作类型。在以太坊环境中,操作码是黄皮书[50]中规定的一系列低级人类可读指令。机器指令语言由以太坊虚拟机(EVM)处理—一种基于堆栈的体系结构,字长为256位。每个指令都定义了一个操作码(值)、名称(助记符)、δ值、α值和一个描述。对于每条指令,α值是该指令堆栈上的附加项数。类似地,δ值是该指令在堆栈上所需的项数。

为了生成有监督机器学习所需的标签,通过Maian传递字节码来处理契约,以获得漏洞分类。在此过程中,还检索到了操作码。由此产生的示例EVM操作码(LSTM模型将其作为输入)如图3所示。合同的地址与相应的有效EVM操作码和威胁分类(类别)一起保存到一个数据框中,如图4所示。
image

image

然后,我们使用这些智能合约操作码作为序列学习模型的输入。我们选择使用操作码来学习智能合约威胁是基于Windows和Android系统中久经验证的机器学习恶意软件检测能力。在恶意软件检测中,模型通常从操作码特征中学习,以获得令人印象深刻的检测精度[1,29]。这种从操作码特征中学习的方法优于传统的恶意软件检测方法,如基于特征码的检测和基于启发式的检测,甚至还提供了能够从二进制级别的现有模式中学习来分类未知威胁的额外好处[45]。在这项研究中,我们提出了一个类似的方法,将机器学习应用到以太坊智能合约的操作码中。

3.2.2用于威胁检测的操作码序列。许多具有顺序输入和/或顺序输出的任务可以用RNN建模[30]。对于我们在智能合约操作码安全威胁检测中的应用,输入由一系列操作码组成,操作码通常以连续的时间步长输入到网络中。表示操作码最直接的方法是使用一个二进制向量,其长度等于目录中每个操作码的机器指令列表的大小一个热编码,如图5所示.
image

这种简单的编码方式有很多缺点。首先,它是一种表示操作码的低效方法,因为当指令数增加时,会产生大量稀疏向量。除此之外,一个热向量不能捕获编码中操作码之间的功能相似性的任何度量。因此,我们用码向量来建模操作码。它代表了在分析单个操作码和操作码序列之间关系方面的一个重大飞跃。代码向量能够捕捉序列中潜在的关系,例如句法结构、语义和上下文的接近性。当给定一组有监督的智能合约操作码数据以使用嵌入算法初始化向量时,LSTM学习这些关系[38]。

如图6所示,嵌入是线性空间中的稠密矩阵,它实现了两个重要功能。首先,通过使用比目录小得多的嵌入,将操作码表示的维数从目录的大小降低到嵌入大小(| U |≪| D |),其中| U |和| D |分别是嵌入大小和目录大小。其次,学习代码嵌入有助于找到最佳可能的表示,并在线性空间中分组相似的操作码。
image

输出层使用输出值从0到1的logistic函数的一个特例sigmoid函数。直观地说,输出对应于每个操作码序列被分类为预测类之一的概率。

4 执行

接下来,我们将讨论如何在实践中实现LSTM检测工具。我们首先介绍用于易受攻击和非易受攻击智能合约的数据源。然后我们分析这些特征并解释我们是如何处理这些合同的。最后,我们给出了我们如何训练LSTM机器学习模型的细节。

通过从Google BigQuery[23]以太坊区块链数据集中获取920179个现有智能合约,我们对620000个合约训练并测试了拟议的LSTM模型。此数据集包括以太坊的第一个区块,直到4799998区块,这是2017年12月26日开采的最后一个区块。

4.1 数据源

我们使用了从googlebigquery下载的以太坊数据集。然后,我们使用EVM指令列表将智能合约的字节码解析为操作码[50]。

4.1.1安全或脆弱。为了获得0至4799998区块智能合同的标签,我们通过Maian工具运行了合同。总共处理了920179份合同,产生了一些标记的合同。使用Maian工具处理我们的数据集,我们收集了顺序操作码,它们是EVM执行代码列表中的指令,作为LSTM学习模型的输入。然后,我们删除了Nikolic等人[41]确定的错误标记的浪子和自杀合同(假阳性)。Nikolic等人的研究小组对鉴定假阳性的实验的简要概述如下:

•通过运行标记的合同以及Maian在以太坊的私有分支上生成的调用序列,对挥霍和自杀合同进行了具体验证,有效地确保了漏洞的可再现性。不可利用但被Maian标记的合同被归类为假阳性。

对于分类为贪婪的合同(回顾第2.2节),通过向标记的合同发送gas并确保合同中不存在允许gs转出的指令,对贪婪合同的(a)类采用类似程序进行具体验证。对于(b)类,如果存在允许Ether转出的指令,则对具有可用源代码的合同进行手动分析,其中没有一个被确定为真阳性。

由于没有数据可用于错误标记的贪婪合同,我们假设贪婪合同(b)类中的所有合同为假阳性,并根据Nikolic等人[41]中的研究结果将其从我们的数据集中删除。在清理和处理我们的数据之后,我们报告不同契约的数量,通过比较契约操作码来计算。考虑到有大量标记的合同,我们继续检查是否有重复的合同。我们发现8640个不同的合同被标记为自杀(1207),挥霍(1461),贪婪(5801),以及自杀和挥霍(171)。
image
表1是使用Maian工具处理的数据摘要。先前报告的970898份合同[41]与我们处理的920179份合同之间的50719份合同差异是由于空合同造成的。此外,我们认为,自上次于2018年3月报告数字以来,Maian工具的版本更新导致了这种差异

利用这个数据集,我们训练并测试了8640个有标记合同和416944个无标记合同的LSTM学习模型,从中删除了无效的操作码指令和重复。虽然Maian将易受攻击的智能合约分为三类,但我们将这些漏洞视为一类易受攻击。在这个两类设置中,在category字段(图4)中标记为“0”的每个协定都表示它不易受攻击。否则,易受攻击的合同将标记为“1”。

我们选择使用整个以太坊区块链数据集的这一特定子集执行此安全漏洞检测任务,因为智能合约数据的公开可用性已被象征性地分析[41],并作为我们模型的基线。

4.1.2操作码特性。如上文第2.1节所述,以太坊智能合约是驻留在以太坊区块链中的一系列低级EVM代码。EVM代码,也被称为字节码,是合同的十六进制表示形式,只有EVM才能理解。因此,我们使用一种高级语言-Solidity来有效地编写智能合约。为了部署一个智能合约,我们使用一个编译器编译稳定的代码,它将把我们的源代码翻译成字节码。然后我们将字节码转换成操作码,一种类似于任何自然语言的可读格式。

在以太坊黄皮书[50]的附录中,它包含了EVM字节码及其对应的操作码的完整列表。字节码到操作码反汇编程序1可用于以太坊区块链上的任何智能合约,以获取操作码。以太坊黄皮书中定义了一个包含150条智能控制操作码执行指令的固定目录。由于在机器学习中,与大多数语言序列任务相比,150是一个相对较小的数字,因此所有独特的指令都包含在学习中。

EVM操作码是一条机器语言指令,指定要执行的操作,它反映了每个智能合约的逻辑。在以前的工作中,操作码已经成功地用于分析智能合约的各种潜在问题[9,15]。因此,我们期望从操作码中提取的一系列特征中学习能够检测出潜在的智能合约漏洞。

4.1.3结构特性。图7显示了我们考虑的智能合同长度的一些有趣的特征。具体来说,每个契约包含的操作码长度直方图的范围为2∈53936。从大约90万个智能合约的原始数据集来看,操作码长度统计的模式、中位数和平均值分别为1541.0、1040.0和1479.3。对于不易受攻击的合同,统计数据与总体统计数据非常接近,因为原始数据集中大约99%是由这些合同组成的。
image
图7:原始数据集智能合同操作码长度的直方图。 大多数智能合约包含少于1500个操作码。

另一方面,脆弱合约的统计数据与非脆弱合约有显著差异。据报道,脆弱合同的模式为434.0,中位数为818.0,平均数为2648.6。因此,我们决定将LSTM操作码输入的最大长度设置为1600。这是一个足以涵盖大多数智能合约的设计选择,因为1600比整个人口的模式长度要高。此外,由于1600比易受攻击合同集的模式和中位数长度都大得多,因此大多数易受攻击合同都会被检测到。

4.2 数据处理

虽然我们收集了一个中等规模的训练集,但它是高度不平衡的。这是一个关于分类问题的问题,在分类问题中,类的代表性不相等,一个类的数量比其他类的数量大得多。根据原始数据集的分布,99.03%的合同被Maian标记为不易受攻击,而只有0.97%的合同是贪婪、自杀和/或挥霍的。为了处理不平衡集,我们将所有易受攻击的合同分组在一起,在一个类中检索8640个样本,而不在任何易受攻击的类别中分类的样本被分组到另一个类中。因此,样本被标记为两个类之一,易受攻击或不易受攻击。

接下来,我们对数据集进行重采样,以实现均衡分布,其中一半的契约来自非脆弱类,另一半来自脆弱类。我们从非易受攻击的类集中随机抽取契约,并创建等量的合成易受攻击样本。使用一种流行的方法对少数类进行过采样,即合成少数类过采样技术(SMOTE)[14],我们对少数类(易受攻击的)进行过采样,对多数类(不易受攻击的)进行过采样。在执行重采样之后,我们得到了一个平衡的数据集,由50%易受攻击和50%不易受攻击的契约组成。

为了创建合成样本,我们首先使用原始数据集训练代表性嵌入。嵌入是一个密集矩阵,它是不同运算码的学习表示。然后将一个智能合约操作码序列转换为一个热向量。使用所学的嵌入,然后对一个热向量执行矩阵点积运算,如图6所示。产生的契约现在是密集的代码向量。最后,对易受攻击合约的码向量进行SMOTE过采样,生成合成样本。

4.3 训练细节

我们分别用128和64个隐藏单元的两个LSTM层来训练我们的模型,以学习操作码长度为1600的智能合约,并克服消失梯度和长期依赖问题,第2.4节。这些层包括一个150维的单词嵌入和一个由150个操作码指令组成的输入词汇表。我们发现我们的模型很容易在平衡数据集上训练。分类任务基于使用sigmoid激活函数的二进制输出。LSTM在我们重新平衡的训练数据集上有很好的泛化性,并且它不会过度拟合训练样本。得到的LSTM有184258个参数,训练细节如下:

•我们将8640份独特智能合约的脆弱类数据集分为64%的培训、16%的验证和20%的测试。
•我们将易受攻击的培训智能合约过度采样,形成20万个样本。
•然后,我们对相同数量的唯一不易受攻击的合同进行欠采样,并将其添加到培训集中。
•我们总共使用62万份智能合约。
•我们有一个规模为400000的均衡训练数据集,一个规模为100000的有效集(98672个不易受攻击,1328个易受攻击),以及一个规模为120000的测试集(118272个不易受攻击,1728个易受攻击)。
•我们使用Adam[31]作为自适应梯度下降优化器,并对LSTM模型进行了总共256个时期的训练。
•我们为随机梯度下降优化器使用256个智能合约批次,以实现快速收敛。
•我们使用二进制交叉熵损失(log loss),它测量分类模型的性能,输出值介于0和1之间。
•我们将最大输入长度设置为1600,并将比该长度短的合同归零。

4.4 评估结果

在本节中,我们将说明我们的LSTM学习模型在智能合约安全威胁检测任务上的实验性能和结果。源代码可以在这里找到。
https://github.com/wesleyjtann/Safe-SmartContracts

4.4.1试验性能。我们使用我们的LSTM学习模型进行评估,并在测试数据集上报告准确性、召回率、精确度、F1和受试者操作特征曲线下面积(AUC ROC)分数。图8中的混淆矩阵C用于评估分类器的输出质量。在二进制分类中,C0,0是真阳性、C0,1假阳性、C1,0假阴性和C1,1真阴性的计数。
image
图8:LSTM预测的混淆矩阵。

此外,我们还提出了另一种衡量分类器输出质量的方法。ROC曲线图9显示Y轴上的真阳性率和X轴上的假阳性率。ROC曲线通常用于研究二值分类器的性能。较大的曲线下面积(AUC)意味着良好的分类性能。培训和验证流程图如图10所示。我们报告了LSTM模型在训练和验证数据集上的分类精度和损失。
image
结果表明,训练后的LSTM模型具有良好的检测性能。对于包含12万个样本的测试集,LSTM模型的测试精度达到99.57%。测试精度,公式(8),是一个简单的检测评估指标。
image
然而,对于高度不平衡的数据集,准确度并不是一个足够的性能度量,因为模型可以通过将所有样本标记为多数类来轻松实现高准确度。由于我们的测试数据集大多不包含易受攻击的契约,因此我们的模型可能会忽略少数(易受攻击的)类。我们进一步检查精确度和召回分数。精度度量度量度量了我们的LSTM模型不将安全智能合约错误标记为易受攻击的能力,而召回度量度量度量了模型查找所有不安全合约的能力。我们还提供了F1分数,Eq(9),它同时考虑了精确度和召回率。它是精度和召回分数的调和平均值,也可以解释为精度和召回的加权平均值,其中F1分数在100%时达到最佳值,在0%时达到最差值。image

基于表2的LSTM性能,它清楚地表明我们的模型能够准确地检测不安全的智能合约。除了检测精度(这是[41]中显示的唯一性能指标)之外,我们还提供了额外的评估指标,并提供了令人信服的证据,证明LSTM模型能够准确检测不安全的智能合约。
image

尽管LSTM不能完美地建模Maian,但我们认为这并不会降低模型的有用性,因为这可能是由于Maian工具生成的标签分类错误造成的。根据另一个符号分析工具Securify[48],对69份被LSTM归类为易受攻击的合同样本进行了检查,Maian将其分析为不易受攻击。我们发现多个合同被归类为易受攻击。在这个小样本中,有9份合同被标记为“违规”,2份合同被标记为“警告”。我们推测LSTM能够概括智能合约的内容和利用,并检测Maian遗漏的漏洞。总之,
•LSTM模型在检测不安全智能合约方面被证明是高度准确的,并且
•LSTM在检测不安全智能合约方面的准确率为99.57%,显著优于Maian的89%。

我们注意到,虽然符号分析器能够对智能合约属性进行深入分析,以检测出确切的漏洞,但LSTM模型能够快速准确地检测智能合约中的安全漏洞。此外,Maian案例中标记合同的具体验证需要创建原始以太坊区块链的私有分支,并且它只能从合同仍然存在的特定区块高度分析合同。这不仅是一项复杂而耗时的任务,而且目前还不清楚如何选择一个区块高度来包含所有仍处于活动状态的标记合同。鉴于LSTM模型是一种简单的机器学习技术,我们建议将其作为第一道防线,并在需要时与符号分析器的具体验证相结合。

4.4.2 FP检测。此外,当我们在[41]中确定的错误标记合同(假阳性)上测试我们的学习模型时,LSTM能够检测到其中许多。通过在我们的训练中使用这些错误标记样本的更正标签,它有助于我们的模型提高从具有挑战性和复杂的智能合约中准确学习的能力。

我们首先更正了27266份FP合同的标签,并通过比较智能合同之间的操作码来处理它们以检查重复项。在这27266份合同中,有451份是独一无二的。由于在训练、验证和测试集中同时出现的重复项可能会导致不真实的性能结果,因此我们只在数据集中使用唯一的智能合约。接下来,我们将这451份FP合同分成64%(288)、16%(73)和20%(90)的相同比例,并将它们分别添加到训练集、验证集和测试集。在每个数据集中没有唯一契约重叠的情况下,训练集中的FP契约被重采样到整个训练集中的大约5%。表3的结果表明,LSTM模型能够检测出大量复杂的智能合约。
image
| 表3:Maian工具错误标记合同的LSTM分类绩效。

4.4.3分析运行时间。图11展示了符号工具Maian的分析时间随着智能合约的复杂性(以操作码长度衡量)的迅速增加。另一方面,LSTM所需的时间保持相当恒定。为了评估LSTM和Maian采用的不同分析时间,我们从9种不同的操作码长度中各抽取5个智能合约:[500、1000、1500、2000、4000、8000、12000、20000、25000]。然后,我们测量了每种长度的5份合同的平均分析时间,并绘制了图表以突出我们的模型和Maian之间的差异。
image
在我们的研究中,我们使用Intel Xeon E5-2698 v4 2.2GHz CPU、512GB系统内存和NVIDIA Tesla V100 GPU进行了实验。LSTM平均用了2.2秒来分析操作码长度为30000的合同,而Maian则需要1096.2秒。结果提供了强有力的证据,我们的模型可以很容易地扩展到一个理想的水平,以处理大量的智能合约每天增长。

5 限制/局限性

LSTM机器学习分类器的局限性可归因于检测智能合约是否包含安全漏洞的以下挑战.

我们的LSTM模型假设,反映智能合约逻辑的操作码特征序列可以概括其内容和弱点。由于操作码序列的学习无法考虑智能合约的控制流(例如,循环、内部函数调用等),因此有时会违反这一假设。它不支持检查数据流和控制流属性。例如,由于契约中的迭代循环或通过函数调用计算平衡而可能发生的整数溢出(或下溢)会影响契约的正确性。在某些情况下,可以利用这些控制流漏洞以不公正的方式从合同中抽取资金[5]。在这种情况下,由于控制流分析超出了序列学习的范围,LSTM将无法很好地处理易受攻击的智能控制。

[41]中定义的漏洞类别也可以被确定为LSTM模型可以实现的限制。据观察,智能合约中的漏洞利用的众多特征不限于第2.2节中的三个类别。除了这3类漏洞外,Luu等人[35]还研究了其他4类漏洞:事务顺序依赖性、时间戳依赖性、错误处理的异常和重入性。Zhou等人[52]进一步扩展了这些类别。新增交易起源风险、零分割风险等风险。至于kalla等人[28],他们关注的是一组不同的漏洞,这些漏洞涉及到合同的语义正确性和更高级别的业务逻辑公平性属性。正如所观察到的,虽然定义了其他类型的漏洞,但通常情况下,一个系统在任何时间点捕获所有漏洞都不是一个合理的假设。漏洞和攻击不断演变。这种行为对LSTM的影响是,包含与Maian中定义的那些类别相似的漏洞的合同将被归类为易受攻击的,而实际上可能不是,因为LSTM模型以前看不到这些漏洞。虽然这确实降低了机器学习模型的检测性能,但我们认为这并没有降低它的有用性,因为这些错误分类代表了仍然存在相当大风险和需要注意的契约。

最后,二进制分类设计也提出了另一个主要限制。尽管LSTM允许快速、轻松地检测智能合约漏洞,但它并没有为分析提供额外的见解。在确定脆弱合同后,可能需要进一步分析。我们希望确定合同代码中被诊断为易受攻击的部分,以便进行补充的手动分析,但是在我们的实验中没有尝试这样做;但是它值得进一步的工作。

6 相关工作

计算机安全领域越来越多地采用深度学习。更具体地说,随着深度学习技术的进步,各种安全跟踪检测场景都受益匪浅。Du等人[19]提出使用deep-LSTM模型将系统日志建模为自然语言序列,以便在系统中执行异常检测任务。系统事件日志用于记录关键点的系统状态,它由遵循一组严格的逻辑和控制流的程序生成。由于系统日志包含的文本基本上是非结构化的和不同的,因此分析是具有挑战性的。然而,LSTM异常检测模型能够通过学习和编码整个日志消息(包括时间戳、日志密钥和参数值)来实现显著的性能。

以类似的方式,沈等人[46]展示了在递归神经网络中使用序列记忆结构来预测计算机中安全事件的重要性。随着计算机系统中恶意活动的复杂性增加,马尔可夫链[42]或3-gram模型[11]等简单方法不再有效地预测这些恶意事件。通过利用典型的LSTM模型的长期内存,已经证明他们的系统能够根据以前的观察结果预测机器的未来事件,即攻击者将执行的特定步骤。

Shin等人[47]研究了功能识别,这是许多二进制代码分析技术中的一个关键步骤,用于恶意软件检测和修复易受攻击的软件。他们表明,像LSTM这样的递归神经网络结构能够以很高的精度和效率识别二进制文件中的函数。Chua等人[17]进一步训练了一个递归神经网络,从反汇编的二进制代码中学习函数类型签名,而无需事先了解编译器或指令集。它是第一个基于机器学习的系统,以功能特征恢复为目标,同时保持其学习结果与其他分析工具使用的约定的“可比性”。

然而,据我们所知,基于序列学习的智能合约漏洞检测目前还没有研究。智能合约分析中使用的工具主要是基于形式验证方法的符号工具[28、33、35、41、48]。

7 结论

我们提出了一种基于机器学习的科学方法来设计更安全的智能契约,能够有效地梳理大量的安全威胁契约。我们的结果表明,智能合约安全威胁的顺序学习比符号分析工具有显著的改进,检测准确率达到99.57%,F1得分达到86.04%。此外,高达92.86%的特别具有挑战性的合同被Maian认为是其他方面的假阳性,被我们的顺序学习模型正确地检测到。我们的机器学习方法是同类方法中的第一种,它可以在智能控制变得越来越复杂时保持其分析时间。这使得基于机器学习的可伸缩智能合约安全威胁检测工具的构建成为可能。

在未来的工作中,我们计划研究最先进的序列建模技术对智能合约威胁检测的影响。Transformer是一种新的简单网络结构,它完全不需要重复,完全基于注意机制,已被证明优于递归神经网络[49]。使用注意模型的进一步实验可能会更有效地检测出低智能合约安全漏洞。当我们基于对给定标签的分类正确性来衡量检测性能时,剩下的挑战是在训练期间获得更准确的标签以提高模型的检测能力。

致谢

我们感谢Aashish Kolluri和Prateek Saxena教授分享验证数据,并感谢所有匿名评审员的宝贵意见和有益建议。

参考文献

[1] Tony Abou-Assaleh, Nick Cercone, Vlado Keselj, and Ray Sweidan. 2004. NGram-Based Detection of New Malicious Code. In Proceedings of the 28th Annual International Computer Software and Applications Conference - Workshops and Fast Abstracts - Volume 02 (COMPSAC ’04). IEEE Computer Society, Washington, DC, USA, 41–42. http://dl.acm.org/citation.cfm?id=1025118.1025582

[2] Abeer Alhuzali, Rigel Gjomemo, Birhanu Eshete, and V.N. Venkatakrishnan. 2018.NAVEX: Precise and Scalable Exploit Generation for Dynamic Web Applications.In 27th USENIX Security Symposium (USENIX Security 18). USENIX Association,Baltimore, MD, 377–392. https://www.usenix.org/conference/usenixsecurity18/presentation/alhuzali

[3] Yasemin Altun, Mark Johnson, and Thomas Hofmann. 2003. Investigating LossFunctions and Optimization Methods for Discriminative Learning of Label Sequences. In Proceedings of the 2003 Conference on Empirical Methods in Natural Language Processing (EMNLP ’03). Association for Computational Linguistics,Stroudsburg, PA, USA, 145–152. https://doi.org/10.3115/1119355.1119374
[4] Nicola Atzei, Massimo Bartoletti, and Tiziana Cimoli. 2017. A Survey of Attacks onEthereum Smart Contracts SoK. In Proceedings of the 6th International Conference on Principles of Security and Trust - Volume 10204. Springer-Verlag New York, Inc.,New York, NY, USA, 164–186. https://doi.org/10.1007/978-3-662-54455-6_8
[5] Eric Banisadr. 2018. How $800k Evaporated from the PoWH Coin Ponzi SchemeOvernight. https://blog.goodaudience.com/how-800k-evaporated-from-thepowh-coin-ponzi-scheme-overnight-1b025c33b530.
[6] Massimo Bartoletti and Livio Pompianu. 2017. An Empirical Analysis of SmartContracts: Platforms, Applications, and Design Patterns. In Financial Cryptography Workshops (Lecture Notes in Computer Science), Vol. 10323. Springer, SalmonTower Building New York City, 494–509.
[7] Y. Bengio, P. Simard, and P. Frasconi. 1994. Learning long-term dependencieswith gradient descent is difficult. IEEE Transactions on Neural Networks 5, 2 (1994),157–166.
[8] C.M. Bishop. 1995. Neural networks for pattern recognition. Oxford UniversityPress, USA, Cary, NC, USA.
[9] Stefano Bistarelli, Gianmarco Mazzante, Matteo Micheletti, Leonardo Mostarda,and Francesco Tiezzi. 2020. Analysis of Ethereum Smart Contracts and Opcodes.In Advanced Information Networking and Applications, Leonard Barolli, MakotoTakizawa, Fatos Xhafa, and Tomoya Enokido (Eds.). Springer International Publishing, Cham, 546–558.
[10] Santiago Bragagnolo, Henrique Rocha, Marcus Denker, and Stephane Ducasse.2018. SmartInspect: solidity smart contract inspector. https://doi.org/10.1109/iwbose.2018.8327566
[11] Peter F. Brown, Peter V. deSouza, Robert L. Mercer, Vincent J. Della Pietra, andJenifer C. Lai. 1992. Class-based N-gram Models of Natural Language. Comput. Linguist. 18, 4 (Dec. 1992), 467–479. http://dl.acm.org/citation.cfm?id=176313.176316
[12] Vitalik Buterin. 2016. Hard Fork Completed. https://blog.ethereum.org/2016/07/20/hard-fork-completed/.
[13] Ethereum (ETH) Market Cap. 2016. https://coinmarketcap.com/currencies/ethereum/. [Online; accessed 20-September-2018].
[14] Nitesh V. Chawla, Kevin W. Bowyer, Lawrence O. Hall, and W. Philip Kegelmeyer.2002. SMOTE: Synthetic Minority Over-sampling Technique. Journal of Artificial
Intelligence Research 16 (2002), 321–357.
[15] Weili Chen, Zibin Zheng, Jiahui Cui, Edith Ngai, Peilin Zheng, and Yuren Zhou.2018. Detecting Ponzi Schemes on Ethereum: Towards Healthier BlockchainTechnology. In Proceedings of the 2018 World Wide Web Conference (WWW ’18).International World Wide Web Conferences Steering Committee, Republic andCanton of Geneva, Switzerland, 1409–1418. https://doi.org/10.1145/3178876.3186046
[16] Kyunghyun Cho, Bart van Merriënboer, Çaglar Gülçehre, Dzmitry Bahdanau,Fethi Bougares, Holger Schwenk, and Yoshua Bengio. 2014. Learning PhraseRepresentations using RNN Encoder–Decoder for Statistical Machine Translation.In Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP). Association for Computational Linguistics, Doha, Qatar,1724–1734. http://www.aclweb.org/anthology/D14-1179
[17] Zheng Leong Chua, Shiqi Shen, Prateek Saxena, and Zhenkai Liang. 2017. NeuralNets Can Learn Function Type Signatures From Binaries. In 26th USENIX Security Symposium (USENIX Security 17). USENIX Association, Vancouver, BC, 99–116. https://www.usenix.org/conference/usenixsecurity17/technical-sessions/presentation/chua
[18] G. E. Dahl, Dong Yu, Li Deng, and A. Acero. 2012. Context-Dependent PreTrained Deep Neural Networks for Large-Vocabulary Speech Recognition. Trans. Audio, Speech and Lang. Proc. 20, 1 (Jan. 2012), 30–42. https://doi.org/10.1109/TASL.2011.2134090
[19] Min Du, Feifei Li, Guineng Zheng, and Vivek Srikumar. 2017. DeepLog: Anomaly Detection and Diagnosis from System Logs Through Deep Learning. InProceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security (CCS ’17). ACM, New York, NY, USA, 1285–1298. https://doi.org/10.1145/3133956.3134015
[20] Jeffrey L. Elman. 1990. Finding structure in time. COGNITIVE SCIENCE 14, 2(1990), 179–211.
[21] Etherscan verified source codes. 2018. https://etherscan.io/contractsVerified.Online.
[22] F. A. Gers, J. Schmidhuber, and F. Cummins. 1999. Learning to Forget: ContinualPrediction with LSTM. In Proc. ICANN’99, Int. Conf. on Artificial Neural Networks.IEEE, London, Edinburgh, Scotland, 850–855.
[23] Google. 2018. Google BigQuery - Ethereum. https://bigquery.cloud.google.com/dataset/bigquery-public-data:ethereum_blockchain. https://bigquery.cloud.google.com/dataset/bigquery-public-data:ethereum_blockchain
[24] Alex Graves. 2013. Generating Sequences With Recurrent Neural Networks.http://dblp.uni-trier.de/db/journals/corr/corr1308.html#Graves13
[25] Hacking Distributed. 2016. Analysis of the DAO exploit. http://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/. [Online; accessed 20-September-2018].
[26] Geoffrey Hinton, Li Deng, Dong Yu, George E Dahl, Abdel-rahman Mohamed,Navdeep Jaitly, Andrew Senior, Vincent Vanhoucke, Patrick Nguyen, Tara N Sainath, et al. 2012. Deep neural networks for acoustic modeling in speech recognition: The shared views of four research groups. IEEE Signal Processing Magazine 29, 6 (2012), 82–97.
[27] Sepp Hochreiter and Jürgen Schmidhuber. 1997. Long Short-Term Memory.Neural computation 9, 8 (1997), 1735–1780.
[28] Sukrit Kalra, Seep Goel, Mohan Dhawan, and Subodh Sharma. 2018. ZEUS:Analyzing Safety of Smart Contracts. In 25th Annual Network and Distributed System Security Symposium, NDSS 2018, San Diego, California, USA, February 18-21, 2018. The Internet Society, Reston, Virginia, United States, 1–15. http://wp.internetsociety.org/ndss/wp-content/uploads/sites/25/2018/02/ndss2018_09-1_Kalra_paper.pdf
[29] BooJoong Kang, Suleiman Yerima, Sakir Sezer, and Kieran Mclaughlin. 2016.N-gram Opcode Analysis for Android Malware Detection. International Journal on Cyber Situational Awareness 1 (11 2016), 231–255. https://doi.org/10.22619/IJCSA.2016.1001011
[30] Andrej Karpathy. 2015. The Unreasonable Effectiveness of Recurrent NeuralNetworks. http://karpathy.github.io/2015/05/21/rnn-effectiveness/
[31] Diederik P. Kingma and Jimmy Ba. 2015. Adam: A Method for Stochastic Optimization. In 3rd International Conference on Learning Representations, ICLR 2015, San Diego, CA, USA, May 7-9, 2015, Conference Track Proceedings. iclr.cc, Online,10. http://arxiv.org/abs/1412.6980
[32] Johannes Krupp and Christian Rossow. 2018. teEther: Gnawing at Ethereum to Automatically Exploit Smart Contracts. In 27th USENIX Security Symposium (USENIX Security 18). USENIX Association, Baltimore, MD, 1317–1333. https://www.usenix.org/conference/usenixsecurity18/presentation/krupp
[33] Chao Liu, Han Liu, Zhao Cao, Zhong Chen, Bangdao Chen, and Bill Roscoe. 2018.ReGuard: Finding Reentrancy Bugs in Smart Contracts. In Proceedings of the 40th International Conference on Software Engineering: Companion Proceeedings (ICSE ’18). ACM, New York, NY, USA, 65–68. https://doi.org/10.1145/3183440.3183495
[34] Thang Luong, Hieu Pham, and Christopher D. Manning. 2015. Effective Approaches to Attention-based Neural Machine Translation. In Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. Association for Computational Linguistics, Lisbon, Portugal, 1412–1421. https://doi.org/10.18653/v1/D15-1166
[35] Loi Luu, Duc-Hiep Chu, Hrishi Olickel, Prateek Saxena, and Aquinas Hobor.2016. Making Smart Contracts Smarter. In Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (CCS ’16). ACM, New York,NY, USA, 254–269. https://doi.org/10.1145/2976749.2978309
[36] William Melicher, Blase Ur, Saranga Komanduri, Lujo Bauer, Nicolas Christin,and Lorrie Faith Cranor. 2017. Fast, Lean, and Accurate: Modeling PasswordGuessability Using Neural Networks. https://www.usenix.org/conference/atc17/technical-sessions/presentation/melicher
[37] Tomáš Mikolov. 2012. Statistical language models based on neural networks. Ph.D.Dissertation. Brno University of Technology.
[38] Tomas Mikolov, G.s Corrado, Kai Chen, and Jeffrey Dean. 2013. Efficient Estimation of Word Representations in Vector Space. In International Conference on Learning Representations (ICLR) 2013. openreview.net, Online, 1–12.
[39] Satoshi Nakamoto. 2009. Bitcoin: A peer-to-peer electronic cash system. http://bitcoin.org/bitcoin.pdf.
[40] Derrick Nguyen and Bernard Widrow. 1990. Improving the learning speed of2-layer neural networks by choosing initial values of the adaptive weights.. InIJCNN. IEEE, Piscataway, New Jersey, United States, 21–26. http://dblp.uni-trier.de/db/conf/ijcnn/ijcnn1990.html#NguyenW90
[41] Ivica Nikolić, Aashish Kolluri, Ilya Sergey, Prateek Saxena, and Aquinas Hobor.2018. Finding The Greedy, Prodigal, and Suicidal Contracts at Scale. In Proceedings of the 34th Annual Computer Security Applications Conference (ACSAC ’18). ACM,New York, NY, USA, 653–663. https://doi.org/10.1145/3274694.3274743
[42] J. R. Norris. 1998. Markov chains. Cambridge University Press, Cambridge,England.
[43] Parity Technologies. 2017. Security Alert. https://paritytech.io/security-alert-2/.[Online; accessed 20-September-2018].
[44] Razvan Pascanu, Tomas Mikolov, and Yoshua Bengio. 2013. On the difficulty oftraining recurrent neural networks. In International Conference on Machine Learning. JMLR.org, Online, 1310–1318. http://www.jmlr.org/proceedings/papers/v28/pascanu13.pdf
[45] Asaf Shabtai, Robert Moskovitch, Yuval Elovici, and Chanan Glezer. 2009. Detection of Malicious Code by Applying Machine Learning Classifiers on StaticFeatures: A State-of-the-art Survey. Inf. Secur. Tech. Rep. 14, 1 (Feb. 2009), 16–29.https://doi.org/10.1016/j.istr.2009.03.003
[46] Yun Shen, Enrico Mariconti, Pierre Antoine Vervier, and Gianluca Stringhini. 2018.Tiresias: Predicting Security Events Through Deep Learning. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security (CCS ’18). ACM, New York, NY, USA, 592–605. https://doi.org/10.1145/3243734.3243811
[47] Eui Chul Richard Shin, Dawn Song, and Reza Moazzezi. 2015. RecognizingFunctions in Binaries with Neural Networks. In 24th USENIX Security Symposium (USENIX Security 15). USENIX Association, Washington, D.C., 611–626. https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/shin
[48] Petar Tsankov, Andrei Dan, Dana Drachsler-Cohen, Arthur Gervais, FlorianBünzli, and Martin Vechev. 2018. Securify: Practical Security Analysis of SmartContracts. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security (CCS ’18). ACM, New York, NY, USA, 67–82. https://doi.org/10.1145/3243734.3243780
[49] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones,Aidan N Gomez, Ł ukasz Kaiser, and Illia Polosukhin. 2017. Attention is Allyou Need. In Advances in Neural Information Processing Systems 30, I. Guyon,U. V. Luxburg, S. Bengio, H. Wallach, R. Fergus, S. Vishwanathan, and R. Garnett (Eds.). Curran Associates, Inc., Red Hook, NY 12571, USA, 5998–6008.http://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf
[50] Gavin Wood. 2014. Ethereum: A secure decentralised generalised transactionledger. Ethereum project yellow paper 151 (2014), 1–32. https://ethereum.github.io/yellowpaper/paper.pdf
[51] Yonghui Wu, Mike Schuster, Zhifeng Chen, Quoc V. Le, Mohammad Norouzi,Wolfgang Macherey, Maxim Krikun, Yuan Cao, Qin Gao, Klaus Macherey, JeffKlingner, Apurva Shah, Melvin Johnson, Xiaobing Liu, Lukasz Kaiser, Stephan Gouws, Yoshikiyo Kato, Taku Kudo, Hideto Kazawa, Keith Stevens, George Kurian,Nishant Patil, Wei Wang, Cliff Young, Jason Smith, Jason Riesa, Alex Rudnick,Oriol Vinyals, Greg Corrado, Macduff Hughes, and Jeffrey Dean. 2016. Google’sNeural Machine Translation System: Bridging the Gap between Human andMachine Translation. arXiv:1609.08144 http://arxiv.org/abs/1609.08144
[52] E. Zhou, S. Hua, B. Pi, J. Sun, Y. Nomura, K. Yamashita, and H. Kurihara. 2018.Security Assurance for Smart Contract. In 2018 9th IFIP International Conference on New Technologies, Mobility and Security (NTMS). IEEE, Paris, France, 1–5.https://doi.org/10.1109/NTMS.2018.8328743
[53] Kaspars Zıle and Renate Strazdin, a. 2018. Blockchain Use Cases and Their Feasibility. Applied Computer Systems 23, 1 (2018), 12–20.

推荐阅读