英语原文共 17 页,剩余内容已隐藏,支付完成后下载完整资料
智能合约综述:挑战,机遇和平台
关键字:智能合约 区块链 加密数字货币 去中心化
摘要:智能合约技术正在重塑传统行业和业务流程。智能合约嵌入到区块链后,使得协议的合约条款可以在没有可信第三方介入的情况下自动执行。因此,智能合约可以减少管理和节省服务成本,提高业务流程的效率并降低风险。虽然智能合约有望推动新一轮业务流程变革的浪潮,但是仍有许多挑战需要应对。本文对智能合约进行了研究。我们首先介绍区块链和智能合约。其次,我们介绍了智能合约的挑战以及最近的技术进步。我们还比较了典型的智能合约平台并给出了智能合约使用的分类及一些典型的例子。
- 介绍
区块链技术最近引起了学术界和工业界的广泛兴趣。区块链是一个分布式软件系统,允许在不需要可信第三方的情况下处理事务。因此,商务活动能以一种经济且快速的方式完成。此外,区块链的不变性也保证了分布式系统的信任,因为几乎不可能篡改存储在区块链中的任何交易,所有的历史交易都是可审计的和可追踪的。
90年代Nick Szabo首次提出将区块链技术应用到智能合约。在智能合约中,当满足预定义的条件时,用计算机程序编写的合约条款将自动执行。由事务组成的智能合约本质上是在分布式区块链中存储、复制和更新的。相反,传统的合约需要由受信任的第三方以集中的方式完成,因此会带来较长的执行时间和额外的成本。区块链技术与智能合约的整合将实现“点对点市场”的梦想。
举一个买方和供应商之间的智能合约的例子。如图1所示,供应商首先通过区块链网络向买方发送产品目录。这个包括产品描述(如性质、数量、价格和用途)以及装运和付款条件的目录存储并分布在区块链中,以便买方可以获得产品信息,同时验证供应商的真实性和信誉。买家通过区块链提交指定数量和付款日期的订单。整个过程形成一个采购合约(即合约1),如图1所示,封装在蓝色框中。值得一提的是,整个流程都是在买方和供应商之间完成的,没有第三方的介入。
合约1完成后,供应商会在区块链中寻找转运商完成运输阶段。和合约1一样,转运商也会在区块链中发布转运描述(如运输费用、来源、目的地、容量和运输时间)以及运输条件和条款。如果供应商接受合约转运商签发的合约,产品将交付给承运人,并由他将产品最终分发给买方。整个过程构建了如图1所示的合约2(封闭在粉色框中)。同样,合约2的整个过程也是在没有第三方介入的情况下进行的。
除了自动执行合约1和合约2,支付程序(包括供应商支付给承运人的款项和买方支付给供应商的款项)也自动完成。举例来说,一旦买方确认收货,由于预先定义好的条件满足,买方和供应商之间的付款将自动触发。从买家支付给卖家的款项将通过加密货币(比特币或其他加密货币)的方式结算。和传统的交易方式相比,整个过程以点对点的方式完成,没有第三方(银行等)的干预。因此,可以大大节省周转时间和交易成本。
综上所述,与传统合约相比,智能合约具有以下优势:
·减少风险。由于区块链的不可变性,智能合约一旦确认就不能被任意更改。而且,自始至终在整个分布式区块链系统中存储和复制的所有事务都是可跟踪和可审计的。因此,像金融欺诈这样的恶意行为可以大大减少。
·降低管理和服务成本。区块链通过分布式共识机制来保证整个系统的信任,而不需要经过中央代理或中介。存储在区块链中的智能合约可以分散的方式自动触发。因此,不用第三方的介入,管理和服务成本可以大大节省。
·提高业务流程的效率。消除对中介的依赖可以显著提高业务流程的效率。以上述供应链流程为例。一旦满足预先设定的条件(如买家确认收货),结算款项将以点对点的方式自动完成。因此,周转时间可以大大减少。
智能合约正在推动从工业物联网到金融服务的广泛应用。虽然智能合约在重塑传统业务流程方面具有巨大潜力,但仍有许多问题需要解决。例如,即使区块链可以保证合约各方一定的匿名性,但由于所有交易都是全球性的,因此整个合约执行的隐私可能不会得到保护。此外,由于计算机程序存在故障和故障的漏洞,如何保证智能合约的正确性也是一个挑战。
最近有一些关于智能合约的研究。举例来说,全面介绍区块链技术,并简要介绍智能合约。对以太坊智能合约缺陷的深入研究表明,表明了对智能合约语言的验证方法的细致调查。该成果表明作者在智能合约编程教学中的经验,总结了学生常见的几种典型错误。该参考文献对智能合约平台进行了实证分析。最近的研究也收集了一些关于智能合约的文献并进行了综述,但未能讨论这一领域的挑战。此外,该成果简要概述了智能合约平台和架构。然而,现有的大多数论文并没有认识到日益增长的挑战并进行全面的调查。例如,以太坊可以用来进行非法业务,如据报道诈骗超过41万美元的Ponzi计划,而很少有研究解决这个问题。我们在表2中总结了本文与现有研究的不同之处。
本文的目的是对区块链技术所带来的智能合约技术挑战进行系统的综述。本文重点介绍了以下方面的贡献:
·确定了智能合约生命周期中的重要研究挑战
·总结了近年来在应对技术挑战方面取得的进展
·对典型的智能合约平台进行了详细的比较
·总结了智能合约的各种应用
图2为本文的组织结构。特地在第二部分简要介绍了区块链和智能合约。第三部分总结了智能合约的研究挑战和最新的技术进展。第四部分比较了典型的智能合约开发平台。第五部分对典型的智能合约应用程序进行了分类。最后,第六部分总结了本文。
- 区块链和智能合约综述
智能合约建立在区块链技术之上,确保合约的正确执行。我们首先在2.1节中简要介绍区块链技术。我们将在第2.2节中概述智能合约。
2.1区块链
区块链可以被视为一个公共账簿,所有的交易都不能伪造。图3给出了区块链的实例。区块链是一个不断增长的区块链。当生成一个新块时,网络中的所有节点都将参与验证该块。一旦块被验证,它将被附加到区块链。
为了验证块的可信度,提出了一致性算法。共识算法确定存储下一个块的节点,以及其他节点将如何验证新添加的块。代表性的一致性算法包括proof of work(POW),proof of stake(POS)以及实用拜占庭容错算法(practical byzantine-fault tolerance, PBFT)。一致的算法通常是由首先解决谜题的用户(即POW或POS)。这些用户称为矿工。每个矿商都保存了一个完整的区块链副本。与POW和POS不同,PBFT需要多轮投票才能达成一致。分布式一致性算法可以保证交易在没有银行等第三方介入的情况下完成。因此,可以节省交易成本。此外,用户以虚拟地址代替真实身份进行交易,以保护用户的隐私。
在区块链系统中,可能有多个节点可以成功地达成一致(同时解决谜题),因此会导致树枝被一分为二。为了解决不一致的问题,图3所示为缩短侧链的脱焊,同时选择最长的侧链作为有效链。这种机制是有效的,因为在分布式系统中,较长的链比较短的链更能容忍恶意攻击。
综上所述,区块链技术具有去中心化、不可变、持久化、匿名等关键特性。
2.2智能合约
智能合约可以视为区块链技术的一大进步。在20世纪90年代,智能合约被提出。它作为一种计算机化的交易协议执行协议的合约条款“智能合约内载的合约条款,在符合特定条件(例如任何一方违反合约都将受到自动惩罚)时,将会自动执行。
区块链使智能合约成为可能。智能合约实际上是在区块链之上实现的。批准的合约条款被转换成可执行的计算机程序。合约条款之间的逻辑连接也以程序逻辑流的形式保留下来(例如,if-else-if语句)。每个合约语句的执行都被记录为存储在区块链中的不可变的操作。智能合约保证适当的访问控制和合约的执行。尤其,开发人员可以为合约中的每个功能分配访问权限。一旦智能合约中的任何条件得到满足,被触发的语句就会以可预测的方式自动执行相应的功能。例如,Alice和Bob同意对违反合约的处罚。如果Bob违反合约,相应的罚款(按合约规定)将自动从Bob的押金中扣除。
智能合约整个生命周期包括四个阶段,如图4所示:
(1)智能合约的创建。几个有关方面首先就合约的义务、权利和禁止进行谈判。经过多轮的讨论和谈判,可以达成协议。律师或顾问将帮助双方起草一份初步的合约协议。然后,软件工程师将这个用自然语言编写的协议转换成一个用计算机语言编写的智能合约,包括声明性语言和基于逻辑的规则语言。与计算机软件的开发类似,智能合约转换的过程由设计、实现和确认(即测试)组成。值得一提的是,智能合约的制定是一个迭代的过程,涉及到多轮谈判和迭代。同时,它还涉及多方,如利益相关者、律师和软件工程师。
(2)智能合约的部署。经过验证的智能协议可以部署到区块链之上的平台上。由于块链的不可变性,不能修改存储在块链上的合约。任何修改都需要创建一个新的合约。一旦智能合约部署到区块链上,所有各方都可以通过区块链访问合约。更重要的是,智能合约中涉及双方的数字资产通过冻结相应的数字钱包被锁定。例如,与合约相关的钱包上的硬币传输(输入或输出)被阻塞。同时,双方可以通过他们的数字钱包进行识别。
(3)智能合约的执行。智能合约部署后,对合约条款进行了监控和评估。一旦合约条件达到(如收货确认),合约程序(或资金)将自动执行。值得注意的是,智能合约是由许多具有逻辑联系的声明语句组成的。当一个条件被触发时,相应的语句将自动地执行,因此一个事务将被区块链中的被采集器切割和验证。提交的事务和更新后的状态被存储在区块链上。
(4)智能合约的完成。智能合约完成后,所有相关方的新状态都相应更新。相应的,智能合约执行期间的交易以及更新后的状态都存储在区块链中。同时,数字资产已经从一方转移到另一方(例如从买方到供应商的资金转移)。由此,相关方的数字资产被解锁。智能合约完成了整个生命周期。
值得一提的是,在智能合约的部署、执行和完成过程中,执行了一系列事务(每个事务对应于智能合约中的一个语句)并将其存储在区块链中。因此,这三个阶段都需要向区块链写入数据,如图4所示。
- 智能合约的挑战和机遇
尽管智能合约是一项很有前景的技术,但仍有许多挑战需要解决。根据智能合约生命周期的四个阶段,我们将这些挑战主要分为四类。同时,我们也概述了解决这些挑战的最新进展。表3总结了挑战和最近的进展。
3.1创建阶段挑战
合约创建是实现智能合约的重要步骤。用户必须编写自己的合约,然后在各种区块链平台上使用(将在第四节中介绍)。由于区块链本质上是不可变的,基于区块链的智能合约在被设计之后也不能被修改。因此,开发人员需要认真解决以下问题。
3.1.1可读性
大多数智能合约都是用编程语言写的,如Solidity, Go, Kotlin和Java(将在第4节中描述),然后源代码将被编译和执行。因此,在不同的时间段,程序有不同的代码形式。如何使程序在每种形式下都具有可读性仍然是一个很大的挑战。
可读性挑战的最新进展
·恢复源代码:据研究,超过77%的智能合约没有发布公共源代码,涉及金额超过30亿美元。不公开的源代码使智能合约是不透明的官方审计。为了解决这个问题,提出了一个逆向工程工具(即Erays)来分析编译后的智能合约。这个逆向工程工具能够将十六进制编码的合约转换成人类可读的伪代码
·人可读代码:Frantz和Nowostawski 提出了一个半自动翻译系统,可以将人类可读的合约表示转换成计算机程序。从本质上讲,这个半自动翻译系统就是根据制度分析的概念来实现的。特别的,制度规范可以分解为不同的组件,如属性、道义、目标、条件等。这些组件用编程语言映射写到相应的块上。例如,可以将属性转换成可靠的结构。由于大多数智能合约编程语言都是面向对象的语言,认为以逻辑编程的计算模型为支持的声明性语言可能更适合于智能合约。例如,作者声称Prolog(一种逻辑语言)不需要编译,所以它也避免了对智能合约编译的检查。
·人可读执行:尽管许多平台试图为智能合约开发人员提供高级语言,但这些智能合约将被编译成其他形式,例如以太坊虚拟机(EVM)中的字节码。在大多数情况下,事务中的两方需要理解存储在区块链上并在区块链上执行的合约。参考文献36提出了一种名为IELE的中级语言来解决这个挑战。IELE具有与低级虚拟机(LLVM)类似的语法,以便在编译时、链接时、运行时和空闲时向编译器提供高级信息。
3.1.2功能问题
现有的智能合约平台存在许多功能问题。我们提出了几个具有代表性的挑战:(1)重入性意味着被中断的功能可以被安全的再次唤起,恶意用户可以利用这一漏洞窃取数字货币,如81所示。(2)块随机性。一些智能合约应用,例如彩票和投注单,可能需要随机生成的区块。这可以通过在块时间戳或临时时间中生成伪随机数来实现。然而,一些恶意的采矿者可能会制造一些块来偏离伪随机生成器的结果。通过这种方式,攻击者可以控制结果的可能性分布,如82所示。(3)过度收费。最近的工作表明,由于智能合约的不足优化智能合约过度收费。这些过度收费的模式具有类似死代码的特性,在由重复计算组成的循环中执行复杂的操作。
功能问题的最新进展
·可重入性:最近,几个建议书试图解决上述的一些挑战。Obsidian被提出用于解决后端攻击和资金泄漏问题,特别是利用指定状态实现状态转换的一致性检查和验证,从而修复后端漏洞。同时,提出了一种防止非法数字货币从泄漏中被窃取的数据流分析方法。参考文献39通过支持合约中函数间的嵌套调用来消除可重入性漏洞。刘等人提出通过迭代生成随机但不同的事务来检测可重入性的漏洞,从而对智能合约执行模糊测试。
·块随机性:区块链被认为是一种很有前途的技术,可以生成公开的、不可预测的随机值,但是随机输出可能不像人们期望的那么随机。矿工可以控制块的产生,直到发现有利可图为止。为了解决这个问题,[41]提出使用延迟
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[239079],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。