智能合约概述:挑战、进步和平台(论文翻译)

摘要--

    智能合约技术正在重塑传统行业和业务流程。 嵌入在区块链中的智能合约可以自动执行协议的合同条款,而无需受信任的第三方干预。 因此,智能合约可以减少管理并节省服务成本,提高业务流程的效率并降低风险。 尽管智能合约有望推动业务流程的新一波创新,但仍有许多挑战需要解决。 本文对智能合约进行了调查。 我们首先介绍区块链和智能合约。 然后我们介绍智能合约中的挑战以及最近的技术进步。

    我们还比较了典型的智能合约平台,并给出了智能合约应用程序的分类以及一些代表性示例。

    索引术语——智能合约; 区块链; 加密货币; 权力下放

 

介绍--

    区块链技术最近引起了学术界和工业界的广泛兴趣。 区块链是一种分布式软件系统,允许在不需要可信第三方的情况下处理交易。 结果,可以以便宜且快速的方式完成商业活动。 此外,区块链的不变性也保证了分布式信任,因为几乎不可能篡改存储在区块链中的任何交易,并且所有历史交易都是可审计和可追溯的。

    区块链技术使智能合约成为可能,这是 Nick Szabo 在 1990 年代首次提出的 [1]。 在智能合约中,当满足预定义的条件时,计算机程序中编写的合约条款将自动执行。 由交易组成的智能合约本质上是在分布式区块链中存储、复制和更新的。 相比之下,传统合约需要由受信任的第三方以集中方式完成,从而导致执行时间长和额外成本。 区块链技术与智能合约的融合将使“点对点市场”的梦想成真。

    以买方和供应商之间的智能合约为例。 如图 1 所示,供应商首先通过区块链网络向买家发送产品目录。 该目录包括产品描述(如财产、数量、价格和可用性)以及运输和付款条件,并在区块链中存储和分发,以便买家可以获取产品信息并在现场验证供应商的真实性和声誉。 同时。 然后,买方通过区块链提交具有指定数量和付款日期的订单。 这整个过程形成了一个采购合同(即合同 1),如图 1 所示,包含在蓝色框中。值得一提的是,整个过程是在买方和供应商之间完成的,没有第三方的干预。

    合同 1 完成后,供应商将在区块链中寻找承运人以完成运输阶段。 与合同 1 一样,承运人也在区块链中发布运输描述(如运输费用、来源、目的地、容量和运输时间)以及运输条件和条款。 如果供应商接受承运人签发的合同,产品将交付给承运人,承运人最终将产品发送给买方。 整个过程构建了合约 2(包含在粉红色框中),如图 1 所示。 同样,合同2的整个过程也是在没有第三方干预的情况下进行的。

除了自动执行合同1和合同2外,付款程序(包括供应商向承运人的付款和买方向供应商的付款)也自动完成。 例如,一旦买家确认收到产品,买家和供应商之间的付款将在满足预定义条件时自动触发。 从买方到供应商的财务结算是通过加密货币(例如比特币或以太币)进行的。 与传统交易相比,整个过程以点对点的方式完成,没有银行等第三方的干预。 因此,可以大大节省周转时间和交易成本。

 

    综上所述,智能合约与传统合约相比具有以下优势:

    • 降低风险。 由于区块链的不变性,智能合约一旦发布就不能随意更改。 此外,在整个分布式区块链系统中存储和复制的所有交易都是可追溯和可审计的。 因此,可以大大减轻金融欺诈等恶意行为。

    • 降低管理和服务成本。 区块链通过分布式共识机制确保整个系统的信任,无需通过中央经纪人或调解人。 存储在区块链中的智能合约可以以去中心化的方式自动触发。 因此,可以显着节省由于第三方干预而导致的管理和服务成本。

• 提高业务流程的效率。 消除对中介的依赖,可以显着提高业务流程的效率。以上述供应链流程为例。 一旦满足预定义的条件(例如,买家确认收到产品),财务结算将以点对点的方式自动完成。 因此,周转时间可以显着减少。

 

    智能合约正在推动广泛的应用,从工业物联网到金融服务 [2]、[3]、[4]、[5]、[6]、[7]、[8]、[9],  [10]、[11]。 尽管智能合约具有重塑传统业务流程的巨大潜力,但仍有许多挑战需要解决。 例如,即使区块链可以保证合约各方的某种匿名性,但由于所有交易都是全局可用的,因此可能无法保护整个合约执行的隐私。 此外,由于计算机程序对故障和故障的脆弱性,确保智能合约的正确性具有挑战性。

最近有一些关于智能合约的研究。 例如,[12]、[13]、[14] 对区块链技术进行了全面调查,并简要介绍了智能合约。[15] 的工作对以太坊智能合约编程漏洞进行了深入调查,而 [17] 则对智能合约语言的验证方法进行了详细调查。[16] 的工作报告了作者在教授智能合约编程方面的经验,并总结了学生犯的几种典型错误类型。 参考 [18] 对智能合约平台进行了实证分析。 最近的研究 [19]、[20] 也收集了一些论智能合约的文献并进行了评论,但未能讨该领域的挑战。 此外,[21] 的工作简要概述了智能合约平台和架构。 然而,现有的大多数论文都未能识别出不断上升的挑战并进行全面调查。例如,以太坊可用于进行非法业务,例如据报道欺诈超过 410,000 美元的庞氏骗局,而很少有研究解决这个问题[22]。 我们总结了本文与表 II 中现有研究之间的差异。

 

    本文的目的是对区块链技术支持的智能合约中的技术挑战进行系统概述。本文的贡献突出如下:

    • 确定了智能合约生命周期中的重要研究挑战。

    • 总结了解决技术挑战方面的最新进展。

    • 对典型的智能合约平台进行了详细比较。

    • 总结了多样化的智能合约应用。

   本文的组织。 第二节简要介绍了区块链和智能合约。 第三节总结了智能合约的研究挑战以及最近的技术进步。 第四节接下来比较典型的智能合约开发平台。 第五部分对典型的智能合约应用进行了分类。 最后,第六节总结论文

 

区块链和智能合约概述--

    智能合约建立在区块链技术之上,确保合约的正确执行。 我们首先在第 II-A 节中简要介绍了区块链技术。然后,我们在第 II-B 节中概述了智能合约。

A. 区块链

    区块链可以看作是一个公共账本,其中的所有交易都不能被篡改。 图 2 说明了区块链的一个示例。 区块链是一个不断增长的区块链。 当一个新的区块产生时,网络中的所有节点都会参与到区块的验证中。 一旦区块被验证,它将被附加到区块链中。

    为了验证区块的可信度,开发了共识算法。 共识算法确定哪个节点存储下一个块以及其他节点如何验证新的附加块。 代表性的共识算法包括工作量证明 (PoW) [23] 和权益证明 (PoS) 以及实用拜占庭容错 (PBFT) [24]、[25]。

    共识算法通常由首先解决难题的用户完成(即 PoW 或 PoS)。 这些用户被称为矿工。

    每个矿工都保留区块链的完整副本。 与 PoW 和 PoS 不同,PBFT 需要多轮投票过程才能达成共识。 分布式共识算法可以确保交易在没有银行等第三方干预的情况下完成。 结果,可以节省交易成本。 此外,用户使用他们的虚拟地址而不是真实身份进行交易,从而也保护了用户的隐私。

在区块链系统中,有可能多个节点同时成功达成共识(即解决难题),从而导致二等分的分支。

 

    为了解决这种差异,如图 2 所示,缩短的侧链被废弃,而最长的链被选为有效链。 这种机制是有效的,因为在分布式系统中,较长的链比较短的链更能容忍恶意攻击。

    综上所述,区块链技术具有去中心化、不可变、持久性和匿名性的关键特征[26]、[27]、[28]。

B. 智能合约

    智能合约可以看作是区块链技术的一大进步[29]。 在 1990 年代,智能合约被提出作为一种计算机化的交易协议,用于执行协议的合同条款 [1]。 当满足特定条件时,智能合约中嵌入的合同条款将自动执行(例如,违反合同的一方将自动受到惩罚)。

    区块链正在启用智能合约。 智能合约本质上是在区块链之上实现的。 经批准的合同条款被转换成可执行的计算机程序。 合同条款之间的逻辑联系也以程序中逻辑流的形式(例如,if-else-if 语句)保留下来。 每个合约语句的执行都被记录为存储在区块链中的不可变交易。 智能合约保证适当的访问控制和合约执行。

    特别是,开发者可以为合约中的每个功能分配访问权限。 一旦满足智能合约中的任何条件,触发语句将自动以可预测的方式执行相应的功能。

例如,Alice 和 Bob 就违反合约的惩罚达成一致。 如果 Bob 违约,相应的罚金(按照合同规定)将从 Bob 的押金中自动支付(扣除)。

 

    智能合约的整个生命周期由四个连续的阶段组成,如图 3 所示:

    1) 智能合约的创建。 几个参与方首先就合同的义务、权利和禁止进行谈判。 经过多轮讨论和谈判,可以达成协议。 律师或顾问将帮助双方起草初步合同协议。 然后软件工程师将用自然语言编写的这个协议转换成用计算机语言编写的智能合约,包括声明性语言和基于逻辑的规则语言 [30]。 与计算机软件的开发类似,智能合约转换的过程由设计、实现和验证(即测试)组成。 值得一提的是,智能合约的创建是一个迭代过程,涉及多轮协商和迭代。 同时,它还涉及多方,如利益相关者、律师和软件工程师。

    2) 智能合约的部署。 然后将可以经过验证的智能合约部署到区块链之上的平台。 由于区块链的不变性,存储在区块链上的合约无法修改。任何修订都需要创建新合同。一旦智能合约部署在区块链上,各方都可以通过区块链访问合约。 此外,智能合约双方的数字资产通过冻结相应的数字钱包来锁定[31]。 例如,与合约相关的钱包上的硬币转移(传入或传出)被阻止。 同时,可以通过他们的数字钱包识别各方。

    3) 执行智能合约。 部署智能合约后,对合约条款进行了监控和评估。 一旦合同条件达到(例如,产品接收),合同程序(或功能)将自动执行。值得注意的是,智能合约由许多具有逻辑连接的声明性语句组成。 当一个条件被触发时,相应的语句将被自动执行,因此交易被区块链中的矿工执行和验证[32]。 提交的交易和更新的状态此后已存储在区块链上。

    4) 完成智能合约。 执行智能合约后,所有相关方的新状态都会更新。 因此,智能合约执行期间的交易以及更新的状态都存储在区块链中。 同时,数字资产已经从一方转移到另一方(例如,从买方到供应商的资金转移)。 因此,相关方的数字资产已被解锁。 至此,智能合约就完成了整个生命周期。

    值得一提的是,在智能合约的部署、执行和完成过程中,已经执行了一系列交易(每个交易对应于智能合约中的一条语句)并存储在区块链中。 因此,所有这三个阶段都需要将数据写入区块链,如图 3 所示。

 

智能合约的挑战和进展--

    尽管智能合约是一项很有前途的技术,但仍有许多挑战需要解决。 我们根据智能合约生命周期的四个阶段将这些主要挑战分为四类。 同时,我们还概述了解决这些挑战的最新进展。表 III 总结了挑战和最新进展。

 

A. 创建挑战

    合约创建是实现智能合约的重要步骤。 用户必须编写自己的合约,然后将它们部署到各种区块链平台(将在第四节中介绍)。 由于区块链本质上是不可变的,基于区块链的智能合约在部署后也无法修改。 因此,开发人员需要仔细解决以下问题。

    1) 可读性:大部分智能合约都是用 Solidity、Go、Kotlin 和 Java 等编程语言编写的(将在第四节中描述)。 然后将编译和执行源代码。 因此,在不同的时间段,节目有不同形式的代码。 如何使每种形式的程序都具有可读性仍然是一个很大的挑战。

    可读性挑战的最新进展

    • 恢复源代码:[33] 显示超过 77% 的智能合约没有发布公共源代码,所有这些都涉及超过 30 亿美元。 源代码的不可用使得智能合约对官方审计员来说是不透明的。 为了解决这个问题,[33] 提出了一种逆向工程工具(即 Erays)来分析编译后的智能合约。 这个逆向工程工具能够将十六进制编码的合约转换为人类可读的伪代码。

   • 人类可读的代码:Frantz 和 Nowostawski [34] 提出了一种半自动翻译系统,可以将人类可读的合同表示转换为计算程序。 本质上,这个半自动翻译系统是根据制度分析的概念实现的[80]。 特别是,制度规范可以分解为不同的组成部分,例如属性、道义、目标、条件等等。 然后将这些组件映射到以编程语言编写的相应块中。 例如,属性可以在 Solidity 中转换为结构体。 由于大多数智能合约编程语言都是面向对象的语言,[35] 认为由逻辑编程计算模型支持的声明式语言可能更适合智能合约。 例如,作者声称Prolog(一种逻辑语言)不需要编译,因此也避免了对智能合约编译的检查。

    • 人类可读的执行:虽然许多平台试图为智能合约开发人员提供高级语言,但这些智能合约随后会被编译成其他形式,例如以太坊虚拟机(EVM)中的字节码。 在大多数情况下,交易中的两方需要在其已在区块链上存储和执行的级别上了解合约。 参考 [36] 提出了一种名为 IELE 的中级语言来解决这一挑战。  IELE 具有与低级虚拟机 (LLVM) [37] 类似的语法,以便在编译时间、链接时间、运行时间和空闲时间为编译器提供高级信息。

    2) 功能问题:现有智能合约平台存在许多功能问题。 我们提出了几个有代表性的挑战:1)重入意味着可以安全地再次调用被中断的函数。 如[81]所示,恶意用户可能会利用此漏洞窃取数字货币。  2)块随机性。 彩票和投注池等一些智能合约应用程序可能需要生成块的随机性。 这可以通过在块时间戳或随机数中生成伪随机数来实现。 然而,一些恶意矿工可能会伪造一些区块来偏离伪随机生成器的结果。 通过这种方式,攻击者可以控制结果的概率分布,如 [82] 所示。

    3) 过度收费。 最近的工作 [44] 表明,由于智能合约的优化不足,智能合约可能会被过度收费。 这些过度收费的模式具有死代码、由重复计算组成的循环中的昂贵操作等特征。

    功能问题的最新进展

    • 重:最近,一些提案试图解决上述一些挑战。  Obsidian [38] 被提议用于解决重入攻击和资金泄漏问题。 特别是,黑曜石利用命名状态来启用对状态转换和验证的一致性检查,从而可以修复重入漏洞。此外,还提出了一种数据流分析方法来防止非法数字货币的泄露。 参考 [39] 建议通过禁止合约中函数之间的嵌套调用来消除重入漏洞。刘等人[40] 提出通过迭代生成随机但多样化的交易来检测可重入错误,对智能合约进行模糊测试。

    • 区块随机性:区块链被认为是一种很有前途的技术,可以产生公共的和不可预测的随机值。 然而,随机输出可能并不像人们期望的那样随机。 矿工可以控制块的生成并释放块,直到他们发现它有利可图。 为了解决这个问题,[41] 提出使用延迟函数来生成随机性。 这意味着随机值只有在它产生后的很短的时间段内才会被其他人知道。 通过这种方式,区块链继续前进,矿工无法扣留他们的区块以获利。 但是延迟函数不适合智能合约,因为它们大多需要实例验证。 为此,[42] 提出了 Sloth 函数以实现更快的验证。 基于[42],[43]提出了一种多轮协议,使用裁判委托模型来验证延迟函数。 它将验证输出的成本从 30 美元降低到 0.4 美元。

    •过度收费:智能合约的开发者除了关心他们程序的效率之外,还需要关注他们的执行成本。 参考 [44] 报告称,以太坊中超过 90% 的真实智能合约都存在 gas 成本高的模式。 陈等人[45] 提出了 GasReducer,一种用于检测耗气量模式的工具。GasReducer 可以用高效的字节码替换优化不足的字节码。

B. 部署挑战

    智能合约创建后,将部署在区块链平台上。 但是需要仔细检查智能合约以避免潜在的错误。 此外,智能合约开发人员需要了解合约的交互模式,以减轻由于恶意行为(例如欺诈和攻击 [83])造成的潜在损失。 接下来,我们将描述智能合约部署方面的挑战和进展。

    1)合约正确性:一旦智能合约部署在区块链上,几乎不可能进行任何修改。 因此,在正式部署之前评估智能合约的正确性至关重要。然而,由于智能合约建模的复杂性,验证智能合约的正确性具有挑战性。

    合约正确性的最新进展

    • 字节码分析:字节码级别的分析只需要编译后的智能合约字节码,更容易获得。 如何利用这些字节码来检测安全威胁已成为一个热门的研究课题。 特别是,[46] 中提出了 OYENTE,以识别潜在的安全漏洞,包括处理不当的异常和时间戳相关问题。 基于 OYENTE 生成的控制图,[47] 为高级字节码分析生成基于规则的表示。 同时,Knecht 和 Stiller [48] 提出了一个智能合约部署和管理平台(SmartDEMAP)来解决合约开发和部署过程中的信任问题。 此外,其他代码质量控制工具(例如自动错误查找器)也可以配备 SmartDEMAP。 通过这种方式,只有在满足可信任条件后才能部署智能合约。 参考 [49] 提出 MadMax 来预测以太坊智能合约中的 gas-focus 漏洞。 基于控制流分析的反编译器和声明式程序结构查询的结合使得该方法能够高精度地检测漏洞。 同时[84]象征性地分析合约依赖图以从代码中提取精确的语义信息。 然后,它会检查合规性和违规模式,这些模式捕获了证明资产是否持有的充分条件。 此外,[50] 提出了一种在智能合约的控制流图中搜索某些关键路径并识别可能导致关键指令的路径的方法,其中指令的参数可以由攻击者控制。 参考 [51] 提出了 Vandal,这是一种首先将低级字节码转换为寄存器传输语言,然后再转换为逻辑语义关系的工具。 此外,[52] 提出了 Gigahorse,一种能够将智能合约字节码反编译为高级 3-地址代码表示的工具。 智能合约的新中间表示使 EVM 字节码的隐式数据和控制流依赖项变得显式。 阿曼尼等人[53]将字节码序列重构为直线代码块,并创建程序逻辑来识别合约的安全漏洞。

    • 源代码分析:与字节码级别的分析相比,源代码分析需要智能合约源代码的可用性。 源码分析虽然包含的信息较多,但也需要高精度的分析。 有许多关于智能合约源代码分析的研究。 特别是,[54] 中提出了一种形式验证方法来分析和验证智能合约(例如以太坊合约)的运行时安全性和功能正确性。 这种方法首先将智能合约翻译成用 F*[55] 编写的代码,这是一种主要用于程序验证的函数式编程语言。 此转换可用于检测异常模式,如堆栈溢出(即超出堆栈限制)。 同时,[56] 提出 Zeus 来验证智能合约的正确性。  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 执行生成种子合约,以便尽可能多地发现执行结果之间的不一致。 这种方法最终可以通过交叉引用输出发现漏洞。

C. 执行挑战

执行阶段对智能合约至关重要,因为它决定了智能合约的最终状态。在执行智能合约期间有许多问题需要解决。

1) 可信赖的预言机:智能合约在没有真实世界信息的情况下无法工作。 例如,Eurobet(即足球投注智能合约)需要知道欧洲杯的结果。 然而,智能合约被设计为在与外部网络隔离的沙箱中运行。 在智能合约中,预言机扮演代理的角色,他发现并验证现实世界中的事件并将此信息转发给智能合约。 因此,如何确定一个可信的预言机成为一个挑战。

值得信赖的预言机的最新进展

• 第三方参与:Town Crier (TC) [65] 被提议来应对这一挑战。 特别是,TC 从可靠的网站上抓取数据并将这些数据提供给智能合约。  TC 以数据报的形式提供数据,并附有特定的数据源网站和具体的时间框架。 同时,TC 在软件保护扩展 (SGE) 飞地中执行其核心功能,以保护 TC 免受恶意行为的攻击。

• 去中心化:参考。  [66] 提出了一个名为 ASTRAEA 的去中心化预言机,它基于利益相关者之间的投票游戏。 特别是,选民放置了合理数量的赌注,以对从系统中选择的随机提议进行投票。 一旦加权的投票总和与投票者的投票相匹配,投票者将获得奖励,否则投票者将受到惩罚。 同时,[67] 提出了一种基于智能合约的解决方案,用于选择可信赖的预言机。 声誉合约用于根据每个预言机服务提供商之前的表现记录其声誉。 然后聚合合约将计算用户查询的最终结果并最终确定结果。

2)交易顺序依赖:用户发送交易以调用智能合约中的函数,而矿工将交易打包成块。 然而,由于二等分区块链分支的不确定性,交易的顺序是不确定的 [26]。 这种不确定性会导致依赖于订单的交易的不一致。 例如,有一个包含变量 x 的合约。  Alice 发送一笔交易将 x 增加 1,而 Bob 发送一笔交易将 x 乘以 10。 由于交易顺序的不确定性,变体 x 的最终结果可以是 x + 1 或 x × 10。值得一提的是 这种不一致在传统的数据库管理系统 (DBMS) [85] 中得到了很好的解决,而据我们所知,在智能合约中解决它具有挑战性。

事务排序依赖的最新进展

• 顺序执行:参考文献[68] 介绍了一种智能合约交易计数器的设计模式。 事务计数器期望每个函数中的转换编号作为参数,并确保每次函数执行后该编号加一。 通过对过渡数的分析,解决了不一致问题。

• 预定义合约:为了避免这种异常情况,[69] 建议编写智能合约而不是交易。 例如,如果 Alice 想在 Bob 的操作之后增加 x 的值,她写了一个 IncreaseIfMultiplied() 函数,避免了 Alice 的操作在 Bob 之前执行的情况。

3)执行效率:智能合约由矿工连续执行。换句话说,在当前合约完成之前,矿工不会执行另一个合约。执行序列化本质上限制了系统性能。然而,由于多个智能合约之间共享数据,并发执行智能合约具有挑战性。同时,如何在没有规定接口的情况下检查合约数据对于提高智能合约执行效率也很重要,因为它不需要重新部署新合约。

执行效率的最新进展

• 执行序列化:为了填补这一空白,Dickerson 等人 [70] 提出了一种基于软件交易记忆的方法,允许矿工或验证者并行执行合约。这种方法的主要思想是将智能合约的每次调用视为投机原子操作。这样,并行执行期间发生的冲突可以很容易地回滚。此外,[71] 中的工作从并发的角度研究了智能合约。特别是,本文对原子性、干扰、同步和资源所有权等并发问题进行了很好的研究。参考[72]提出使用乐观软件事务内存系统来帮助提高智能合约的执行效率。在使用多线程并发执行合约交易的同时,矿工还将交易的块图存储到块中。然后验证器与给定的块图同时重新执行智能合约。如果结果一致,则该块将被附加到区块链中。

• 合同检查:部署后,合同内容不可修改。如果要求开发人员观察一些在其初始需求中未描述的值,他们可以做什么?一个简单的解决方案是修改智能合约并重新部署它。但是,重新部署智能合约可能会导致额外的成本。参考 [73] 提出利用内存布局具体化来反编译已编译合约的二进制结构。同时,[73]的工作提出了封装在镜像中的反编译能力[86],通过该方法可以内省智能合约实例的当前状态,而无需重新部署它。

D. 完成挑战

智能合约执行后,系统中对状态的修改将打包为一个交易并广播到每个节点。然而,智能合约的激增带来了额外的担忧。

1) 隐私和安全:目前大多数智能合约和区块链平台缺乏隐私保护机制,尤其是交易隐私。特别是,交易记录(即操作顺序)在整个区块链网络中传播。因此,所有交易对网络中的每个人都是可见的。尽管一些区块链系统使用假名公钥来提高交易的匿名性,但大多数交易数据(例如余额)仍然是公开可见的。如[87]所示,可以基于交易图分析从交易数据中获取有用的信息。智能合约系统也有其固有的软件漏洞,容易受到恶意攻击。此外,智能合约运行在同样存在系统漏洞的区块链系统之上。例如,[88] 中报告说,攻击者利用边界网关协议 (BGP) 路由方案来拦截区块链中的消息。 它可以造成消息广播的高延迟,还可以劫持一部分节点的流量,从而窃取数字货币。

隐私和安全的最新进展

• 隐私:为了解决智能合约的隐私问题,Kosba 等人[74]提出了Hawk——一个去中心化的智能合约系统,用于建立隐私保护的智能合约。特别是,Hawk 编译器会自动将合约编译为加密协议。编译好的Hawk程序包含两个主要部分:用于执行主要功能的私有部分和用于保护用户的公共部分。Hawk 将对交易信息(例如交易余额)进行加密,并通过使用零知识证明(即不查看交易内容)来验证交易的正确性。可以确保智能合约中各方的匿名性,但可能无法履行合约执行的保密性。Enigma [75] 为智能合约执行的保密性提供了解决方案。Enigma 中使用高级制图算法来支持零知识证明。此外,与传统的区块链冗余方案(即每个节点都保存所有交易的副本)不同,Enigma 将区块链数据分布在不同的节点中。

• 安全性:在解决安全问题方面有一些努力。例如,[76]提议的最近工作为区块链提出了一个安全的中继网络,即 SABRE。特别是,SABRE 调整了 BGP 路由方案的域间路由策略。它可以通过适当放置中继来保护客户端和中继之间的链路。同时,SABRE还通过软件定义网络(SDN)采用软硬件协同设计,减少中继的流量负担。实验结果证明了对抗 BGP 路由攻击的有效性。

2)诈骗:作为一项新技术,区块链和智能合约容易受到诈骗发起的恶意攻击。 欺诈检测非常重要,特别是对于合同用户而言,因为它使他们能够在早期终止投资以避免不必要的损失。

可读性挑战的最新进展

• 庞氏骗局:庞氏骗局是一种典型的欺诈行为,它承诺高回报率,而对投资者的风险很小。它用新投资者的资金支付老投资者。但是,如果没有足够的流通货币,该计划就会解散那些因此而亏本的后继者。[77] 最近的工作对以太坊上的庞氏骗局进行了系统的研究。其中,2015年7月至2017年5月共收缴16,082,269笔交易,发现17,777笔交易与庞氏骗局有关,仅两年时间就已收缴超过41万美元。陈等人[22] 提出了一种从账户和操作码中提取特征的方法,以识别以太坊上的庞氏骗局。同时,[78]的工作提出了一种检测和量化比特币庞氏骗局的新方法。特别是,为了解决庞氏骗局经常使用多个地址而难以识别的问题,提出了一种聚类方法[78]来识别地址。他们发现32个庞氏骗局中有19个使用多个地址。

• 蜜罐:智能合约蜜罐意味着看似易受攻击的合约包含隐藏的陷阱。以图4为例,乍一看,天真的用户可能会认为,当他或她将钱发送到该合约后,该合约会自动返回当前余额加上额外资金的总额。但是,余额会在函数执行之前增加,并且永远不会满足 if (msg.value >= this.balance) 的条件。[79] 的工作开发了蜜罐技术的分类,并使用符号执行和启发式方法来检测智能合约中的蜜罐。此外,[79] 发现蜜罐合约为创作者赚取了超过 90,000 美元的利润。

 

智能合约开发平台——

最近,已经在基于区块链的平台上开发了智能合约。这些平台为开发人员提供了构建智能合约应用程序的简单接口。在众多现有的区块链平台中,很多都可以支持智能合约。在本文中,我们在 IV-A 部分介绍了 5 个最具代表性的智能合约平台:以太坊 [89]、Hyperledger Fabric [90]、Corda [91]、Stellar [92]、Rootstock [93]。我们选择它们主要是因为 [94] 中暗示的开发社区的普及和技术成熟度。我们接下来在第 IV-B 节中总结了它们的共同特征。最后,我们在第 IV-C 节中给出了一个开发智能合约的例子。

A. 代表性平台

1)以太坊:以太坊是一个可以执行智能合约的去中心化平台。相对于比特币的图灵不完备脚本系统,以太坊开发了诸如 Solidity2、Serpent3、Low-level Lisp-like Language (LLL)4 和 Mutan5 等图灵完备语言,以支持加密货币应用以外的一般用户应用。以太坊将 Solidity、Serpent、LLL 和 Mutan 编写的智能合约编译成机器码,然后加载到 EVM 并运行。同时,以太坊采用基于账户的数据模型,其中每个参与者都通过其数字钱包进行识别。

与比特币类似,以太坊采用 PoW 作为共识算法,也是计算密集型的。为了补偿矿工解决难题的成本,在比特币中使用以太(ETH)而不是硬币(BTC)。本质上,gas 是执行交易的内部价格,以克服 ETH 的不稳定价值。非正式地,交易的总成本可以通过gas limit × gas price 计算,其中gas limit表示用于生成块的最大gas量,gas price是单位gas的成本(以ETH为单位)。用户可以支付不同数量的gas来让他们的交易提前或延迟确认(即大量的gas导致快速确认)。由于 PoW 是计算密集型的,它可能会浪费大量电力用于无意义的区块挖掘任务。如果挖掘过程用于有意义的事件,例如帮助解决数学难题和执行机器学习任务,则是可以预期的。

2)Hyperledger Fabric:Hyperledger Fabric 也是一个运行智能合约的分布式账本平台 [90]。与以太坊在虚拟机(即 EVM)中运行智能合约不同,Hyperledger 采用 Docker 容器来执行代码。与虚拟机 (VM) 相比,容器可以以较低的开销支持智能合约应用程序,同时牺牲隔离性(即,一个容器中的应用程序运行在一个操作系统之上)。Fabric 没有开发 Etherum 的智能合约语言,而是支持 Java 和 Go(又名 Golang)等传统的高级编程语言。同样,Fabric 也是图灵完备的。Fabric 采用键值对作为数据模型。

由于 Fabric 旨在支持一般企业应用程序,因此 Fabric 区块链网络已获得许可(私有或联盟)。用户必须获得证书颁发机构 (CA) 的授权才能加入网络。由于网络中存在不同的角色,因此多种类型的 CA 并存。例如,注册证书颁发机构(ECA)允许用户注册区块链。用户注册后,他/她必须向交易证书颁发机构 (TCA) 请求交易证书。可以在许可的区块链网络内轻松达成共识。Fabric利用PBFT,这需要在经过身份验证的用户之间进行多轮投票。PBFT 依赖于节点之间的多轮通信,这会导致时间延迟。应该开发更有效的共识算法来解决这个问题。

3)Corda:与以太坊的多样化应用相比,Corda [91] 专门用于数字货币应用。它是一个分布式账本平台,用于保存和处理历史数字资产记录。Corda 采用 Java 和 Kotlin6 等高级编程语言,它们运行在 Java 虚拟机 (JVM) 之上。同时,Corda 是图灵不完整的以支持可验证性。而且,Corda 中的数据模型是基于事务的模型。

Corda 通常支持私有平台,在该平台中,企业建立一个授权网络,以私有方式交换数字资产。在私有区块链平台上,共识很容易达成。Corda 采用 Raft [95] 作为共识算法。Raft 中的共识可以通过选择领导者、日志复制和安全保证来实现。Corda 使用点对点消息传递机制,而不是在区块链中进行全局广播。用户必须指定消息接收者和要发送的详细信息。

4)Stellar:与Corda类似,Stellar[92]是一个专门的数字货币应用平台。与以太坊相比,Stellar 更简单,更容易上手。同时,Stellar 可以支持 Python、JavaScript、Golang 和 PHP 等多种语言。然而,Stellar 合约并不是图灵完备的。与 Fabric 类似,Stellar 在 Docker 容器之上执行程序代码,从而减少开销。例如,Stellar 上一笔交易的执行成本仅为 ∼0.0000002 美元,几乎可以忽略不计。此外,Stellar 中一笔交易的平均执行时间约为 5 秒,而以太坊为 3.5 分钟。因此,Stellar 是数字货币应用的理想平台。与以太坊一样,Stellar 采用基于账户的模型作为数据模型。Stellar 开发了自己的共识算法——Stellar 共识协议(SCP)[92]。由于 Stellar 已获得许可,因此可以通过 SCP 轻松达成共识。

5) Rootstock:Rootstock (RSK) [93] 在比特币之上运行,同时支持更快的交易执行。例如,RSK 可以在 20 秒内确认执行的交易。同时,RSK 与以太坊兼容(例如,采用 Solidity 来实施合约)。RSK合约也是图灵完备的。此外,RSK 开发了自己的虚拟机来运行智能合约。RSK 的数据模型也是基于账户的,而 RSK 是一个公共区块链系统。RSK 基于 PoW 开发了其共识方案,同时采用轻量级实现,从而降低了开销。与 Corda 和 Stellar 一样,RSK 被提议主要支持数字货币应用程序。RSK 有一个优点,即比独立于区块链的系统安全得多,因为它运行在比特币之上。然而,它可能会给比特币区块链带来额外的负担。如何解决这个问题对 RSK 至关重要。

6) EOS:EOS [96] 旨在实现去中心化应用程序的可扩展性。EOS不是只使用一种共识算法,而是结合了拜占庭容错(BFT)和委托权益证明(DPOS),从而获得了两种共识算法的优点。在每一轮中,利益相关者将选择代表(即区块生产者)来生产一个新区块,而 BFT 将在这些选定的代表中进行,以使区块不可逆转。与比特币类似,EOS 也是基于帐户的,但它也允许所有帐户都可以通过人类可读的名称进行引用。EOS 没有像以太坊那样为代码执行定制虚拟机,而是选择使用 WebAssembly(Wasm),这样就可以用各种语言编写智能合约,只要它可以编译成 Wasm(例如,EOS 支持 C++)。

 

B. 智能合约平台对比

表四从执行环境、支持语言、图灵完备性、数据模型、共识协议、权限等方面对比了以太坊、Fabric、Corda、Stella、Root stock(RSK)和EOS 和应用。我们接下来总结这些具有代表性的智能合约平台的主要特征如下。

• 执行环境。以太坊中的合约在 EVM 中执行。同样,Corda 和 Rootstock 分别采用JVM 和 RSK 虚拟机。相比之下,Fabric 和 Stellar 在 Docker 容器之上运行智能合约,因此在牺牲应用程序隔离的同时减少了开销。EOS 选择使用 Wasm 来支持更多的智能合约语言。

• 支持的语言。以太坊支持专为以太坊设计的 Solidity、Serpent 和 Mutan。Fabric 目前支持 Java 和 Golang,而 Corda 则采用 Java 和 Kotlin。Stellar 可以支持多种语言,例如 Python、Javascript、Golang 和 PHP。为了兼容以太坊,RSK 采用 Solidity 作为合约语言,而 EOS 目前仅支持 C++。

• 图灵完备性。以太坊、EOS、Fabric 和 RSK 上的智能合约都是图灵完备的,而 Corda 和 Stellar 是图灵不完备的。图灵完备契约通常比图灵不完备契约更具表现力。然而,图灵完备性也带来了容易受到恶意攻击的潜在软件漏洞(如第三节所示)。

• 数据模型。Corda 像比特币一样采用未花费交易输出(UTXO)模型。在 UTXO 模型中,每笔付款都必须指定之前未花费的交易作为输入。然后指定的交易被花费。这些更改将针对新的未花费交易进行。以太坊、Stellar、EOS 和 RSK 采用基于账户的模型,直接记录一个地址的余额,而不是计算所有未花费的交易金额。Fabric 利用键值模型,其中数据以存储在区块链中的键值对表示。

• 共识算法。以太坊和 RSK 采用 PoW,其中对区块可信度的验证等效于解决计算困难的问题(即谜题)。PoW 共识算法通常是计算密集型的。Fabric 选择 PBFT 共识算法 [24],其中经过身份验证的节点之间进行多轮投票以达成共识。因此,PBFT 是网络密集型的。相比之下,Corda 采用了一种简单的共识算法,即 Raft,在单个交易而不是全球系统的层面上实现不同部门之间的共识。同样,Stellar 开发了一种名为 SCP 的简单共识算法来达成共识。EOS 使用 BFT 和 DPOS 的组合。

• 允许。以太坊、EOS 和 RSK 是公共(即无权限)智能合约平台,每个用户可以任意加入网络,而 Corda 和 Hyperledger 是私有平台,只允许经过身份验证的用户访问。Stellar 位于公共和私有区块链之间,是跨不同企业部门(或组织)的联盟区块链。

• 智能合约的应用。与 Corda 不同的是,Stellar 和 RSK 只支持数字货币,而以太坊和 Fabric 则迎合了更广泛的应用,从数字货币、数字资产管理、资本投资、公共部门到共享经济。未来,Corda、EOS、Stellar 和 RSK 及其衍生产品可能会支持更多的通用应用。

C. 开发智能合约的例子

我们接下来展示如何开发和部署智能合约。以 Alice 和 Bob 之间的转账合约为例,如图 5 所示,经过几轮谈判,Alice 和 Bob 之间达成了协议。然后通过智能合约语言(例如,以太坊中的 Solidity 和 Fabric 中的 Golang)来实现该协议。智能合约代码接下来通过编译器(例如 Solidity 的 solc)进行编译,该编译器生成在智能合约客户端的虚拟机(例如 EVM、JVM)或 Docker 容器上运行的机器代码(或字节码)。智能合约客户端本质上是通过点对点网络连接的。智能合约跨区块链网络部署后,将唯一的合约地址返回给客户端,以支持未来的交互。此后,用户可以通过在智能合约中执行交易来与区块链网络进行交互(例如,从 Alice 的数字钱包中扣除指定的金额,并在 Bob 的钱包中增加相应的金额)。值得一提的是,每笔交易都需要通过区块链网络通过共识算法进行验证,如图 5 所示。然后将经过验证的交易附加到交易列表中。由于每个节点都有更新区块链的副本,因此很难伪造区块链数据。

 

编码示例。Solidity 的语法类似于 JavaScript,它也支持继承和用户定义类型。图 6 显示了一个用 Solidity 编写的智能合约示例。

 

智能合约的应用——

智能合约的应用范围很广,从物联网到共享经济。具体来说,我们将主要的智能合约应用大致分为六种类型,如图 7 所示。我们接下来对其进行详细描述。

A. 物联网

物联网 (IoT) 是最有前途的技术之一,可以支持众多应用,包括供应链管理、库存控制系统、零售商、访问控制、图书馆、电子医疗系统、工业互联网 [97]、[98]、[99]。物联网的主要举措是将“智能”对象(即“事物”)集成到互联网中,并为用户提供各种服务[100]。已经提出物联网以隐式方式自动化各种业务交易。

通过与智能合约的集成,可以释放物联网的潜力。以工业制造为例,当前的大多数制造商都以集中的方式维护其物联网生态系统。例如,固件更新只能由各种物联网设备通过从设备到服务器的查询在中央服务器上手动获取。智能合约为这个问题提供了一个自动解决方案 [101]。制造商可以将固件更新哈希放在部署在整个网络中分布的区块链上的智能合约上。然后设备可以自动从智能合约中获取固件哈希。这样就大大节省了资源。

智能合约还可以为物联网电子商务模式带来好处。例如,传统的电子商务模式往往需要第三方代理来完成支付。然而,这种集中支付成本高昂,无法充分发挥物联网的优势。在 [4] 中,分布式自治公司 (DAC) 被提议用于自动化交易,其中没有涉及支付的政府或公司等传统角色。通过智能合约实现,DAC 可以自动工作,无需人工干预。此外,智能合约还有助于加快传统供应链的速度。例如,供应链与智能合约的结合可以使付款和货物交付过程中的合同权利和义务自动化,而整个过程中的各方都是信任的。

 

B. 分布式系统安全

智能合约可以带来提高分布式系统安全性的好处。分布式拒绝服务 (DDoS) 攻击是计算机网络中的主要安全威胁之一。攻击者用多余的请求淹没目标机器,使系统过载,从而中断或暂停互联网服务 [102]。最近,提出了一种协作机制来减轻 DDoS 攻击 [103]。与传统解决方案相比,这种基于智能合约的方案可以以完全去中心化的方式应对攻击。特别是,一旦服务器受到攻击,攻击者的 IP 地址将自动存储在智能合约中。通过这种方式,其他节点将被告知攻击者的地址。此外,将立即执行其他安全策略,例如过滤来自恶意用户的流量。

云计算是一种很有前途的技术,可以为用户提供对共享计算和存储资源池的无处不在的访问 [104]。通常,用户可以从可信赖的云服务提供商 (CSP) 购买云服务。然而,由于CSP经常相互勾结以赚取更多利润,如何验证CSP的可信度成为一个挑战。董等人[105] 提出了一种基于博弈论和智能合约的解决方案。这种方法的主要思想是让客户端要求两个云服务器计算相同的任务。在这个过程中,智能合约被用来刺激云之间的紧张、背叛和不信任。这样,用户就可以很容易的判断出不会勾结作弊的理性云。还基于在官方以太坊网络上用 Solidity 编写的合约进行了实验,以验证该提案的有效性。

此外,代理通常用于云计算。用户的请求由经纪人检查以与提供商的服务相匹配。但是,用户和服务提供商都必须信任代理。一旦经纪人被劫持或受到损害,双方就会变得不信任。最近,Scoca 等人[9] 建议使用智能合约来避免使用经纪人。他们方法的主要思想是使用分布式云服务水平协议(dSLAC)[106] 通过智能合约指定需求。同时,提出了根据双方的偏好评估协议的效用函数来解决不匹配问题。

C. 金融

智能合约可以潜在地降低金融风险,降低管理和服务成本,提高金融服务的效率。接下来,我们将解释智能合约在以下典型金融服务中的好处。

• 资本市场和投资银行业务。传统的资本市场受到了较长的结算周期的影响。智能合约可以将结算期从 20 天或更长时间显着缩短到 6 到 10 天,从而增加对客户的吸引力。因此,在[107]中预测它可以在未来带来5%到6%的需求增长,并带来额外的收入。

• 商业和零售银行业务。除了资本市场,智能合约的采用还可以为抵押贷款行业带来好处[108]。传统的抵押贷款在发起、融资和服务过程中通常很复杂,因此会导致额外的成本和延误。智能合约可以通过区块链中法律文件的数字化实现抵押流程的自动化,从而降低成本和延迟。

• 保险。智能合约在保险行业的应用还可以减少处理开销并节省成本,尤其是在索赔处理方面 [109]。以汽车保险为例,汽车保险有多个参与方:保险公司、客户、车库、运输供应商和医院 [110]。智能合约可以通过在分布式账本中共享法律文件来自动化理赔,从而提高效率,减少理赔时间并节省成本。再比如,保险公司安盛推出了基于以太坊智能合约的航班延误险。购买飞行保险的乘客将自动签署智能合约,该合约连接到全球空中交通数据库。如果系统发现航班延误超过两个小时,就会触发智能合约中的功能,从而立即向乘客付款。

D. 数据来源

除了金融服务,智能合约还可以用于保证科学研究和公共卫生领域的信息质量。文献[111]报道​​,近年来临床试验中捏造或篡改数据的情况时有发生。另一个例子是,2009 年发表在 Nature 上的一篇论文被报道包含由 Haruko Obokata [112] 进行的欺诈数据。捏造的数据可能会误导正在进行的研究方向或阻碍患者的康复。因此,它会严重破坏科学和公众的信任。

数据溯源随后被提出来缓解这个问题。数据溯源的主要思想是存储数据来源、派生和转换的元数据信息。但是,在执行数据来源方面存在许多挑战。例如,大多数来源日志工具,如 Progger [113] 和可信平台模块 (TPM) [114] 存储数据活动以及隐私敏感信息(例如,用户 ID、访问时间和用户角色)。如何保护隐私信息是一个挑战。Ramachandran 和 Kantarcioglu [115] 提出了一种基于智能合约和区块链的数据来源系统。研究人员可以向该系统提交他们的加密数据。当有任何数据更改时,将调用智能合约来跟踪对数据所做的转换。通过这种方式,可以捕获任何恶意篡改数据。

此外,梁等人 [116] 提出 ProvChain 来收集和验证云数据来源。ProvChain 的主要思想是将出处数据嵌入到区块链交易中,以便任何数据修改都是可追溯的。ProvChain 由三个过程组成:来源数据收集、来源数据存储和来源数据验证。实验结果表明 ProvChain 提供防篡改数据来源、隐私保护和数据可靠性。

此外,智能合约可用于保护创意数字媒体的知识产权。例如,图 8 显示了此应用程序的一个示例。每个数字产品都嵌入了唯一的数字水印(例如买家的数字钱包地址和产品 ID)。如有侵权(如买家未经创作者许可,将数字产品出售给他人),执法人员可以通过提取数字水印并将数字钱包地址与购买者的数字钱包地址进行比对,以原始文件追踪非法文件。因此,可以很容易地识别侵犯财产权。整个过程可以通过智能合约和区块链来实现。

 

E. 共享经济

共享经济带来许多好处,例如通过借用和回收物品来降低消费者成本、提高资源利用率、提高服务质量、降低对环境的影响 [119]。然而,目前大多数共享经济平台都因中心化而受到客户交易成本高、隐私暴露和可信第三方不可靠性的困扰。智能合约可以通过分散共享经济平台来潜在地重塑共享经济。

博格纳等人[3]提出了一种基于以太坊智能合约的新型共享经济平台。特别是,该系统允许用户在没有受信任的第三方的情况下注册和共享他们的项目。同时,个人信息也受到隐私保护。实际实施也验证了系统的有效性。此外,物联网(IoT)和智能合约的融合也可以推进共享经济的应用。哈克尔等人[117] 讨论了物联网与区块链的集成,以开发共享经济应用,如点对点自动支付系统、旅行系统、数字资产管理和货币兑换平台。

同时,在 [118] 中为基于区块链的共享经济应用提出了一种尊重隐私的方法。该方案主要解决基于区块链的系统由于区块链的公开性而导致的隐私泄露问题。特别是,零知识方法应用于该系统。实际实施也证明了所提议机制的有效性。

F. 公共部门

智能合约和区块链技术也在重塑公共部门管理。区块链可以从本质上防止数据欺诈并提供公共信息的透明度。以公开招标为例,区块链和智能合约的结合可以证明投标人和投标实体的身份,自动化投标过程,提供审计和审查支持。

电子投票系统存在若干挑战,例如用户身份验证和用户隐私保护(或投票匿名)。智能合约还为电子投票系统提供了解决方案。提出了一种名为 Follow My Vote8 的基于区块链的投票系统,以在不泄露用户隐私的情况下验证用户身份。但是,它仍然依赖受信任的第三方机构来对选民进行洗牌,以免泄露用户隐私。麦科里等人[5] 利用自计票协议的知识(即选民可以在没有受信任的第三方的情况下计算选票)构建基于智能合约的公平投票系统。通过这种方式,投票可以保密,同时用户身份是可验证的。

智能合约还可用于建立个人数字身份和声誉。例如,清华大学用户声誉系统(TURS)[8] 是一个基于智能合约的在线身份管理系统。一个人的 TURS 个人资料基于三个方面:个人声誉、在线声誉和专业声誉。用户可以通过智能合约保护他们的私人信息,智能合约通过可编程条款(语句)授予其他用户访问权限。同时,记录在区块链中的所有交易都无法篡改或删除。

Hillbom 和 Tillstrom [7] 基于 Szabo [120] 首次提出的智能财产概念,提出了一种智能财产所有权交换协议。在该协议中,交易中的每一方都通过 Bitmessage [121] 相互通信。在协商交易细节(例如,由制造商签发的汽车数字证书)后,买方构建并签署原始交易,将财产所有权重新分配给买方自己。签署的交易发送给卖家后,卖家会检查交易信息。如果正确,则卖方在收到的交易上签名并公开广播。此外,为了确保一致性,整个所有权转移过程必须以原子方式进行。换句话说,整个过程中的任何失败都会中止整个所有权转移过程。例如,如果卖家不签署交易,他/她将不会从买家那里获得资金。此外,李等人[122] 提出了一种基于联盟区块链技术的安全能源交易系统。特别是,提出了一种基于信用的支付方案,以支持没有可信中介的快速能源交易。

概括。表 V 比较了智能合约应用程序。如表五所示,智能合约可为上述应用带来诸多好处。综上所述,智能合约具有减少对可信第三方的依赖、降低成本、提高数据可靠性和提供隐私保护等优点。

 

结论——

本文概述了智能合约的最新技术。特别是,我们首先简要回顾了智能合约和区块链技术。然后我们指出智能合约在创建、部署、执行、完成智能合约的不同方面面临的挑战。同时,我们还讨论了解决这些挑战的最新进展。我们接下来比较几个主要的智能合约平台。此外,我们对智能合约应用程序进行了分类,并在每一类应用程序中列举了几个典型的用例。综上所述,我们希望本文对开发安全、可扩展的智能合约应用程序起到指导作用,推动区块链技术的发展。

   在区块链之上,智能合约正在快速发展,尽管仍有许多挑战需要解决。当前关于智能合约的研究课题大多集中在编程语言、安全和隐私问题上,而区块链和智能合约应用的激增也带来了新的挑战。与其他计算机软件工具一样,智能合约也包含许多无意或恶作剧产生的错误。但是,检测和识别这些错误需要在软件工程和数据分析方面进行大量努力。此外,企业从业者虽然缺乏计算机编程知识,但具备操作技术和法律制定(即制定合同)方面的专业知识,这是计算机程序员的不足。如何填补运营技术(OT)和信息技术(IT)之间的差距,对于智能合约的发展具有重要意义。软件技术、自然语言处理和人工智能的融合是未来应对这一挑战的可能补救措施。

 

致谢

本文所描述的工作得到了国家重点研发计划(2016YFB1000101)、国家自然科学基金(61472338)和中央高校基本科研业务费专项资金的支持。Imran 的工作得到了沙特国王大学科学研究院长的支持,研究小组项目编号为 RG-1435-051。作者要感谢匿名审稿人,他们提出了建设性意见,极大地改进了论文。

 

中文翻译PDF下载路径:

链接:https://pan.baidu.com/s/1Yu6cuwwMRXSA6lRnBXW_ZA
提取码:w8xc

 

英文原文PDF下载路径:

链接:https://pan.baidu.com/s/1u2MRB0NhfX5fs8ZB9E3JgQ
提取码:1fvl

posted @ 2021-11-16 16:56  北漂的尘埃  阅读(1146)  评论(0编辑  收藏  举报