An Overview on Smart Contracts: Challenges,Advances and Platforms
论文翻译:Zheng, Zibin, et al. "An overview on smart contracts: Challenges, advances and platforms." Future Generation Computer Systems 105 (2020): 475-491.
智能合约概述:挑战、进展和平台
摘要:智能合约技术正在重塑传统的工业和商业流程。智能合约嵌入到区块链中,使协议的合同条款能够自动执行,而无需受信任的第三方的干预。因此,智能合约可以减少管理,节省服务成本,提高业务流程的效率,降低风险。尽管智能合约有望推动业务流程创新的新浪潮,但仍有许多挑战有待解决。本文对智能合约进行了综述。我们首先介绍区块链和智能合约。然后,我们将介绍智能合约面临的挑战以及最新的技术进步。本文还比较了典型的智能合约平台,对智能合约应用进行了分类,并给出了一些典型的应用实例。
I. INTRODUCTION
区块链技术最近引起了学术界和工业界的广泛兴趣。区块链是一种分布式软件系统,允许在不需要可信第三方的情况下处理交易。因此,业务活动可以以廉价和快速的方式完成。此外,区块链的不变性也保证了分布式信任,因为几乎不可能篡改存储在区块链中的任何交易,而且所有历史交易都是可审计和可追踪的。区块链技术正在促成Nick Szabo于20世纪90年代首次提出的智能合约[1]。在智能合约中,当预先设定的条件得到满足时,用计算机程序编写的合约条款将自动执行。由交易组成的智能合约本质上是在分布式区块链中存储、复制和更新的。相比之下,传统的合约需要由可信的第三方集中完成,因此执行时间长,成本高。区块链技术与智能合约的融合将使“点对点市场”的梦想成真。
以买方Buyer和供应商Supplier之间的智能合约为例。如图1所示,Supplier首先通过区块链网络向Buyer发送产品目录。该目录包括产品描述(如财产、数量、价格和可用性)以及装运和付款条款,存储并分发在区块链中,以便买方能够获得产品信息,同时验证供应商的真实性和信誉。然后买方通过区块链提交订单,并提供指定数量和付款日期。整个程序构成了一份蓝色方框内的采购合同(即Contract1),如图1所示。值得一提的是,整个过程是在买方Buyer和供应商Supplier之间完成的,没有第三方的干预。
Contract1完成后,供应商将在区块链中搜索一家Carrier(运输公司),以完成装运阶段。与Contract1一样,Supplier也在区块链中发布运输描述(如运输费用、来源、目的地、容量和运输时间)以及运输条件和条款。如果供应商接受承运人签发的合同,产品将交付给承运人,承运人将最终将产品发送给买方。整个过程构建了合同Contract2(包含在粉色框中),如图1所示。同样,Contract2的整个程序也在没有第三方干预的情况下进行。除自动执行Contract1和合同Contract 2外,付款程序(包括供应商向承运人付款和买方向供应商付款)也自动完成。例如,一旦买方确认收到产品,当满足预定条件时,买方和供应商之间的付款将自动触发。买方与供应商之间的财务结算通过加密货币(如比特币或以太币)进行。与传统交易不同的是,整个过程是以对等方式进行的,没有银行等第三方的干预。因此,周转时间和交易成本可以大大节省。
总之,与传统合约相比,智能合约具有以下优势:•降低风险。由于区块链的不变性,智能合约一旦发布就不能随意更改。此外,在整个分布式区块链系统中存储和复制的所有交易都是可追踪和可审计的。因此,像财务欺诈这样的恶意行为可以大大减少。
•降低管理和服务成本。区块链通过分布式共识机制确保整个系统的信任,而无需经过中央经纪人或调解人。存储在区块链中的智能合约可以以分散的方式自动触发。因此,由于第三方的干预,可以大大节省管理和服务成本。
•提高业务流程的效率。消除对中介的依赖可以显著提高业务流程的效率。以上述供应链流程为例。一旦满足预定条件(例如,买方确认收到产品),财务结算将以对等方式通过程序自动完成。因此,周转时间可以大大缩短。
智能合约推动了从工业物联网到金融服务的广泛应用[2]、[3]、[4]、[5]、[6]、[7]、[8]、[9]、[10]、[11]。尽管智能合约在重塑传统业务流程方面具有巨大潜力,但仍有许多挑战有待解决。例如,即使区块链能够确保合同各方的某种匿名性,但由于所有交易都是全球可用的,因此整个合同执行的隐私可能无法得到保护。此外,由于计算机程序对故障和失效的脆弱性,保证智能合约的正确性也是一个挑战。最近有一些关于智能合约的研究。例如,[12]、[13]、[14]介绍了区块链技术的全面调查,并简要介绍了智能合约。[15]的工作深入调查了以太坊智能合约编程漏洞,而[17]则详细调查了智能合约语言的验证方法。文[16]报告了作者在智能合约编程教学中的经验,总结了学生犯的几种典型错误。参考文献[18]对智能合约平台进行了实证分析。最近的研究[19],[20]也收集了一些关于智能合约的文献并进行了综述,但没有讨论这一领域的挑战。此外,[21]的工作简要介绍了智能合约平台和体系结构。然而,现有的大多数论文都未能明确不断上升的挑战,并给出一个全面的调查。例如,以太坊可用于进行非法业务,如庞氏骗局,据报道,该骗局骗取了41万多美元,而很少有研究涉及这一问题[22]。
本文的目的是对区块链技术支持的智能合约的技术挑战进行系统概述。本文的贡献如下:•指出了智能合约生命周期中的重要研究挑战总结了解决技术挑战的最新进展。•对典型的智能合约平台进行了详细的比较。•总结了智能合约的各种应用。本文的组织结构。第二节简要介绍了区块链和智能合约。第三节总结了智能合约的研究挑战以及最新的技术进展。第四节接着比较了典型的智能合约开发平台。第五节对典型的智能合约应用进行了分类。最后,第六节对全文进行了总结。
二.区块链与智能合约概述
智能合约建立在区块链技术之上,确保合约的正确执行。我们首先简要介绍区块链技术。然后对智能合约进行概述。
区块链可以被视为一个公共账本,其中所有的交易都不能被伪造。图2展示了区块链的一个例子。区块链是不断增长的区块链。当生成新的块时,网络中的所有节点都将参与验证该块。一旦区块被验证,它将被附加到区块链。为了验证块的可信性,开发了一致性算法。一致性算法确定哪个节点存储下一个块,以及新附加的块如何被其他节点验证。有代表性的共识算法包括工作证明(PoW)[23]和权益证明(PoS)以及实用的拜占庭容错(PBFT)[24],[25]。共识算法通常由首先解决难题的用户完成(即PoW或PoS)。这些用户被称为矿工。每个矿工都保存着区块链的完整副本。与PoW和PoS不同,PBFT需要多轮投票才能达成共识。分布式共识算法可以确保交易在没有银行等第三方干预的情况下进行。因此,可以节省交易成本。此外,用户使用虚拟地址而不是真实身份进行交易,因此用户的隐私也得到了保护。在区块链系统中,多个节点有可能同时成功达成共识(即解谜),从而导致分支对分。为了解决这个差异,短边链被丢弃,如图2所示,而最长的链被选为有效链。这种机制是有效的,因为在分布式系统中,长链比短链更能抵抗恶意攻击。
智能合约可以看作区块链技术的一大进步[29]。1990年代,一项智能合约被提议为一种计算机化交易协议,执行协议的合约条款[1]。智能合约中嵌入的合约条款在满足一定条件时自动执行(如一方违反合同将自动受到处罚)。智能合同基本上是在区块链之上实施的。批准的合约条款被转换成可执行的计算机程序。合约条款之间的逻辑连接也以程序中逻辑流的形式保存(例如if else if语句)。每个合约语句的执行记录为存储在区块链中的不可变事务。智能合同保证适当的访问控制和合同执行。特别是,开发人员可以为合约中的每个函数分配访问权限。一旦智能合约中的任何条件得到满足,触发的语句将以可预测的方式自动执行相应的功能。例如,爱丽丝和Bob就违反合约的处罚达成一致。如果Bob违反合约,相应的罚款(根据合约)将自动从Bob的存款中支付(扣除)。
智能合约的整个生命周期由四个连续的阶段组成,如图3所示:
1) 创建智能合约。几个当事人首先就合约的义务、权利和禁止进行谈判。经过多轮讨论和谈判,可以达成协议。律师或顾问将帮助双方起草一份初步合约协议。然后,软件工程师将以自然语言编写的协议转换为以计算机语言(包括声明性语言和基于逻辑的规则语言)编写的智能合约[30]。与计算机软件开发类似,智能合约转换的过程由设计、实现和验证(即测试)组成。值得一提的是,智能合约的创建是一个涉及多轮谈判和迭代的迭代过程。同时,它还涉及多方,如利益相关者、律师和软件工程师。
2) 智能合约的部署。经过验证的智能合约可以部署到区块链之上的平台上。由于区块链的不变性,存储在区块链上的合约无法修改。任何修订都需要建立新的合约。一旦智能合约部署到区块链上,所有各方都可以通过区块链访问合约。此外,智能合约双方的数字资产通过冻结相应的数字钱包来锁定[31]。例如,与合约相关的钱包上的币转移(传入或传出)被阻止。同时,双方可以通过数字钱包识别身份。3) 智能合约的执行。在部署智能合约后,合约条款已得到监控和评估。一旦合约条件达到(如产品接收),合约程序(或功能)将自动执行。值得注意的是,智能合约由许多具有逻辑连接的声明性语句组成。当一个条件被触发时,相应的语句将被自动执行,因此区块链中的矿工将执行和验证一个事务[32]。提交的交易和更新后的状态已存储在区块链上。
三、 智能合约的挑战与进展
尽管智能合约是一项很有前途的技术,但仍有许多挑战需要解决。根据智能合约生命周期的四个阶段,我们将这些主要挑战分为四类。同时,我们也对解决这些挑战的最新进展进行了综述。表三概述了挑战和最新进展。
A.创建合同创建是实现智能合同的一个重要步骤。用户必须编写自己的合同,然后将其部署到各种区块链平台(将在第四节中介绍)。由于区块链本质上是不可变的,基于区块链的智能合约在部署后也不能修改。因此,开发人员需要认真解决以下问题。1) 可读性:大多数智能合约都是用编程语言编写的,比如Solidity、Go、Kotlin和Java(将在第四节中描述)。然后编译并执行源代码。因此,在不同的时间段,程序有不同的代码形式。如何使程序以每种形式可读仍然是一个很大的挑战。
可读性挑战的新进展
•恢复源代码:如[33]所示,超过77%的智能合约没有发布公共源代码,所有这些都涉及超过30亿美元。源代码的不可用使得智能合约对官方审计人员来说是不透明的。为了解决这个问题,[33]提出了一个逆向工程工具(即Erays)来分析已编译的智能合约。这个逆向工程工具能够将十六进制编码的契约转换成人类可读的伪代码。
•人类可读代码:Frantz和Nowostawski[34]提出了一种半自动翻译系统,可以将人类可读的合同表示转换为计算程序。基本上,这种半自动翻译系统是根据制度分析的概念来实现的[80]。特别是,制度规范可以分解为不同的组成部分,如属性、义务、目标、条件等。然后将这些组件映射到用编程语言编写的相应块中。例如,属性可以转换为实体结构。由于大多数智能合约编程语言都是面向对象的语言,[35]认为逻辑编程计算模型支持的声明式语言可能更适合智能合约。例如,作者声称Prolog(一种逻辑语言)不需要编译,因此也避免了对智能合约编译的检查。
•可读执行:尽管许多平台试图为智能合约开发者提供高级语言,但这些智能合约随后将被编译成其他形式,例如以太坊虚拟机(EVM)中的字节码。在大多数情况下,交易双方需要在blockchain.Ref上存储和执行的级别上理解合约。[36]提出了一种名为IELE的中级语言来解决这一挑战。IELE的语法类似于低级虚拟机(LLVM)[37],以便在编译时、链接时、运行时和空闲时向编译器提供高级信息。
2) 函数(Function)问题:现有智能合约平台存在许多Function问题。我们提出了几个具有代表性的挑战:
1)重新进入意味着中断的功能可以安全地重新调用。恶意用户可以利用此漏洞窃取数字货币(重入攻击),如[81]所示。2) 块随机性。一些智能合约应用程序(如彩票和投注池)可能需要随机生成区块。这可以通过在块时间戳或nonce中生成伪随机数来实现。然而,一些恶意矿工可能会编造一些块来偏离伪随机发生器的结果。通过这种方式,攻击者可以控制结果的概率分布,如[82]所示。3) gas消耗过度。最近的工作[44]表明,由于智能合约的优化不足,智能合约可能会被多收费。这些gas浪费的模式具有死代码、重复计算循环中昂贵的操作等特征。
Function问题的最新进展
•重入攻击:最近,一些方案试图解决重入攻击问题。黑曜石(Obsidian)[38]被提议用于解决再进入攻击和资金泄漏问题。特别是,Obsidian利用命名状态对状态转换和验证进行一致性检查,从而修复重入漏洞。此外,还提出了一种数据流分析方法,以防止非法数字货币被盗。参考文献[39]建议通过禁止合同中函数之间的嵌套调用来消除重入漏洞。Liu等人[40]提出通过迭代生成随机但不同的事务来检测可重入性bug,从而对智能合约执行模糊测试。
•区块随机性:区块链被认为是一种有前途的技术,可以产生公共的和不可预测的随机值。然而,随机输出可能不像人们期望的那样随机。矿工们可以控制区块的生成并释放区块,直到他们发现区块有利可图。为了解决这个问题,[41]提出使用延迟函数来产生随机性。这意味着随机值只有在生成后的一段短时间内才会为其他人所知。这样,区块链就继续运转,矿商们就无法保留区块来获利。但是延迟函数并不适用于智能合约,因为大多数延迟函数都需要实例验证。为此,[42]提出了Sloth函数以允许更快的验证。在文献[42],[43]的基础上,提出了一种利用仲裁委托模型验证延迟函数的多轮协议。它将验证输出的成本从30美元降低到0.4美元。
•收费过高:智能合约的开发者除了关心程序的效率外,还需要关注自己的执行成本。参考文献[44]报道说,超过90%的真正智能合约都受到以太坊模式的影响。Chen等人[45]提出了GasReducer,一种用于检测气体模式的工具。GasReducer可以用高效的字节码代替欠优化的字节码。
B.部署挑战
创建后,智能合约将部署在区块链平台上。但智能合约需要仔细检查,以避免潜在的漏洞。此外,智能合约开发人员需要了解合约的交互模式,以减轻恶意行为(如欺诈和攻击[83])造成的潜在损失。接下来我们将介绍智能合约部署的挑战和进展。1) 合约正确性:一旦智能合约部署到区块链上,几乎不可能进行任何修改。因此,在智能合约正式部署之前对其正确性进行评估就显得尤为重要。然而,由于智能合约建模的复杂性,验证智能合约的正确性具有挑战性。
1)合约正确性的最新进展
•字节码分析:字节码级别分析仅需要智能合约的已编译字节码,而这很容易获得。如何利用这些字节码来检测安全威胁已成为研究的热点。特别是,在[46]中提出了OYENTE来识别潜在的安全错误,包括错误处理的异常和与时间戳有关的问题。基于OYENTE生成的控制图,[47]生成了基于规则的表示形式,用于高级字节码分析。同时,Knecht和Stiller [48]提出了一个智能合约部署和管理平台(SmartDEMAP),以解决合约开发和部署过程中的信任问题。此外,其他代码质量控制工具(例如自动错误查找器)也可以配备SmartDEMAP。以这种方式,仅在满足可信条件后才能部署智能合约。[49]提出了MadMax来预测以太坊智能合约中的以gas为重点的漏洞。基于控制流分析的反编译器和声明性程序结构查询的组合使该方法可以高精度地检测漏洞。同时[84]对合约依赖图进行了符号分析,以从代码中提取出精确的语义信息。然后,它检查合规性和违规模式,这些模式捕获了足以证明财产是否存在的条件。此外,[50]提出了一种在智能合约的控制流程图中搜索某些关键路径并识别可能导致关键指令的路径的方法,其中指令的参数可以由攻击者控制。[51]提出了Vandal,一种首先将低级字节码转换为寄存器传输语言,然后再转换为逻辑语义关系的工具。另外,[52]提出了Gigahorse,一种能够将智能合约字节码反编译为high level 3-address表示的工具。智能合约的新的中间表示形式使EVM字节码的隐式数据和控制流依存关系变得明确。 Amani等的 [53]将字节码序列重构为直线代码块,并创建了程序逻辑来识别合同的安全漏洞。
•源代码分析:与字节码级别分析相比,源代码分析需要智能合约源代码的可用性。尽管源代码分析包含更多信息,但它也需要高精度的分析。关于智能合约的源代码分析,有许多研究。特别是,在[54]中提出了一种形式验证方法,可以分析和验证智能合约(例如,以太坊合约)的运行时安全性和功能正确性。该方法首先将智能合约转换为用F * [55]编写的代码,F *是一种主要用于程序验证的功能性编程语言。此转换可用于检测异常模式,例如堆栈溢出(即,超出堆栈限制)。同时,[56]提出了宙斯验证智能合约的正确性。 Zeus首先将合同和策略规范转换为低级的中间表示,并将编码后的表示输入受约束的horn条款[57],以确定智能合约的安全性。
基于机器学习的分析:最近,已经提出了基于机器学习的方法来获得更好的表示形式,以检测智能合约中的漏洞。 特别是,[58]提出了一种新的语义感知安全审计技术,称为以太坊S-gram方案。 结合了N-gram语言建模和静态语义标记的S-gram方案可用于通过识别不规则令牌序列并优化现有深度分析器来预测潜在漏洞。 同时,[59]的工作将智能合约的字节码转换为RGB颜色,然后转换为图像。 图像被馈送到卷积神经网络(CNN)中以提取更有意义的特征。 此外,[60]应用长短期记忆(LSTM)在操作码级别分析了智能合约的安全威胁。
2)动态控制流
尽管已部署的智能合约是不可变的,但不能保证智能合约的控制流程是不可变的。尤其是,智能合约可以与其他合约进行交互(例如,向合约转移资金或创建新合约)。开发合同时,需要仔细设计智能合同的控制流程。随着时间的推移,智能合约的交互作用会导致互连合约数量的增加。因此,如何预测合同行为变得具有挑战性。另外,大多数现有方法关注于程序中潜在的动态控制流问题的检测,而并不总是确保执行环境的可靠性。因此,检查执行环境是否可靠也很重要。动态控制流程的最新进展
•基于图的分析:Charlier等。 [61]提出了一种多维方法来预测智能合约之间的交互。特别是,这种方法集成了随机过程和张量以重现现有的相互作用,因此可以预测未来的合同相互作用。此外,[62]中的工作提出了控制流不变性的启发式指标。特别是,在以太坊上所有智能合约的调用图上评估了该方法。通过分析调用图,可以看出,两个智能合约(五分之二)需要至少一个第三方的信任。
•路径搜索:Nikolic´等人的 [63]提出了一种名为MAIAN的方法,该方法可以检测合约长期调用中的漏洞。 MAIAN使用过程间符号分析和具体的验证器来展示真实的漏洞利用。它使用深度优先搜索(DFS)在跟踪中搜索所有执行路径的空间,并检查协定是否触发属性违规。与上述基于图的方法不同,MAIAN旨在识别无限期锁定资金,泄露给任意用户或被任何人对合约使用析构函数。因此,它不需要对智能合约之间的交互进行建模。
•执行环境:提出了EVMFuzz [64]以检测智能合约执行环境的漏洞。 EVMFuzz不断为不同的EVM执行生成种子合同,以便在执行结果之间找到尽可能多的不一致之处。该方法最终可以发现具有交叉引用输出的漏洞。执行阶段对于智能合约至关重要,因为它决定了智能合约的最终状态。在执行智能合约期间,有许多问题需要解决。 1)值得信赖的预言:没有真实世界的信息,智能合约将无法运作。例如,Eurobet(即足球博彩智能合约)需要知道欧洲杯的结果。但是,智能合约被设计为在与外部网络隔离的沙箱中运行。在智能合约中,oracle充当代理的角色,该代理查找并验证现实世界中发生的事件,并将此信息转发给智能合约。因此,如何确定一个值得信赖的oracle成为一个挑战。
交易顺序依赖性:当矿工将交易打包成块时,用户发送交易以调用智能合约中的功能。然而,由于一分为二的区块链分支的不确定性,交易的顺序是不确定的[26]。这种不确定性可能导致与订单相关的交易不一致。例如,有一个包含变量x的合同。alice发送交易使x增加1,而bob发送交易使x乘10。由于交易顺序的不确定性,变体x的最终结果会有不同。值得一提的是在传统的数据库管理系统(DBMS)中,这种不一致已经得到了很好的解决[85],而据我们所知,在智能合约中解决这种挑战是具有挑战性的。
交易订单依赖性的最新进展
•顺序执行:[68]介绍了一种智能合约交易计数器的设计模式。事务计数器希望将每个函数中的过渡编号作为参数,并确保在每个函数执行后将该编号增加一个。通过分析转移数,解决了不一致的问题。
•预定义合约:为避免此类异常,[69]建议通过编写智能合同而不是交易调用合约。例如,如果Alice想要在Bob的操作之后增加x的值,则可以编写一个GrowthIfMultiplied()函数,这样可以避免Alice的操作在Bob的操作之前执行的情况。
3) 执行效率:智能合约由矿工连续执行。换句话说,在当前合约完成之前,矿工不会执行其他合约。执行序列化本质上限制了系统性能。然而,由于多个智能合约之间的数据共享,并发执行智能合约是一个挑战。同时,在不需要重新部署新合约的情况下,如何在没有指定接口的情况下检查合同数据对提高智能合约执行效率也很重要。
执行效率研究进展
•执行序列化:为了填补这一空白,Dickerson等人[70]提出了一种基于软件事务内存的方法,允许矿工或验证器并行执行契约。这种方法的主要思想是将智能合约的每次调用视为一种推测性的原子操作。这样,在并行执行期间发生的冲突就可以很容易地回滚。此外,在[71]中的工作从并行的角度研究了智能合约。特别是,并发性问题,如原子性、干扰、同步和资源所有权,在本文中得到了很好的研究。参考文献[72]建议使用乐观软件事务内存系统来帮助提高智能合约的执行效率。当使用多线程并发执行合约事务时,miner还将事务块图存储到块中。然后验证程序与给定的块图同时重新执行智能合约。如果结果一致,块将被追加到区块链中。
• 合约检查:部署后,合同内容不可修改。 如果要求开发人员观察一些在其初始需求中未描述的值,他们可以做什么? 一个直接的解决方案是修改智能合约并重新部署它。 但是,重新部署智能合约可能会导致额外的成本。 参考 [73] 提出利用内存布局具体化来反编译已编译合约的二进制结构。 同时,[73]的工作提出了封装在镜像中的反编译能力[86],通过该方法可以检查智能合约实例的当前状态,而无需重新部署它。
其他挑战
智能合约执行后,系统中对状态的修改将打包为交易并广播到各个节点。然而,智能合约的激增带来了额外的担忧。1)隐私和安全:目前大多数智能合约和区块链平台缺乏隐私保护机制,尤其是交易隐私。特别是,交易记录(即操作顺序)在整个区块链网络中传播。因此,所有交易对网络中的每个人都是可见的。尽管一些区块链系统利用假名公钥来提高交易的匿名性,但大多数交易数据(例如余额)仍然是公开可见的。如[87]所示,可以基于交易图分析从交易数据中获取有用的信息。智能合约系统也有其固有的软件漏洞,容易受到恶意攻击。此外,智能合约运行在同样存在系统漏洞的区块链系统之上。例如,[88] 中报告说,攻击者利用边界网关协议 (BGP) 路由方案来拦截区块链中的消息。它会造成消息广播的高延迟,还会劫持一部分节点的流量,从而窃取数字货币。
隐私和安全的最新进展
• 隐私:为了解决智能合约的隐私问题,Kosba 等人。 [74] 提出了 Hawk - 一个去中心化的智能合约系统,用于建立隐私保护的智能合约。特别是,Hawk 编译器会自动将合约编译为加密协议。编译好的Hawk程序包含两个主要部分:用于执行主要功能的私有部分和用于保护用户的公共部分。 Hawk 将对交易信息(例如交易余额)进行加密,并通过使用零知识证明(即不查看交易内容)来验证交易的正确性。可以确保智能合约中各方的匿名性,而可能无法满足合约执行的保密性。 Enigma [75] 为智能合约执行的保密性提供了解决方案。 Enigma 中使用高级制图算法来支持零知识证明。此外,与传统的区块链冗余方案不同(即每个节点保存所有交易的副本),Enigma 将区块链数据分布在不同的节点中。 • 安全性:在解决安全问题方面有一些努力。例如,[76] 的最近工作提出了一种用于区块链的安全中继网络,即 SABRE。特别是,SABER 调整了 BGP 路由方案的域间路由策略。它可以通过适当放置中继来保护客户端和中继之间的链路。同时,SABRE还通过软件定义网络(SDN)采用硬件和软件的协同设计,以减少中继的流量负担。实验结果证明了对抗 BGP 路由攻击的有效性。
诈骗:作为一项新技术,区块链和智能合约容易受到诈骗发起的恶意攻击。诈骗的检测对于合约用户尤其重要,因为它使他们能够在早期阶段终止投资以避免不必要的损失。
可读性挑战的最新进展
• 庞氏骗局:庞氏骗局是一种典型的骗局,它承诺给投资者带来高回报且风险很小。它用新投资者的资金支付老投资者。但是,如果没有足够的流通货币,该计划就会解散那些因此而赔钱的后继者。 [77] 最近的工作对以太坊上的庞氏骗局进行了系统的研究。其中,2015年7月至2017年5月共统计16,082,269笔交易,发现17,777笔交易与庞氏骗局有关,仅两年时间就已收缴超过41万美元。陈等人。 [22] 提出了一种从账户和操作码中提取特征的方法,以识别以太坊上的庞氏骗局。同时,[78] 的工作提出了一种检测和量化比特币庞氏骗局的新方法。特别是,为了解决庞氏骗局经常使用多个地址而难以识别的问题,提出了一种聚类方法[78]来识别地址。他们发现 32 个庞氏骗局中有 19 个使用多个地址。
(未完待续,待更新)