深度剖析智能合约

2019-08-29 02:08:34 计算机世界 2019年32期

Lucas Mearian 陈琳华

智能合约可能是与区块链相关的最有用的工具之一。以下是它们的功能以及获得推动力的原因。

智能合约是在去中心化网络(如区块链)上运行的自我执行的业务自动化应用程序。

由于智能合约能够消除管理开销,因此它们是与区块链技术相关的最具吸引力的功能之一。当区块链充当数据库,确认交易已经发生,智能合约就会执行预先确定的条件。我们可以将智能合约想像为一台执行“if/then”或有条件的可编程计算机。

基本上,一旦满足智能合约的某些条件,例如货物抵达港口,双方同意以加密货币进行交换,那么他们可以自动转移比特币、法定货币或接收货物,让这些货物能够继续它们的旅行。在所有这些的背后是存储智能合约状态的区块链分类账。

了解代币和智能合约

例如,一家保险公司可以使用智能合约,根据大规模洪水、飓风或干旱等事件自动发放索赔金。或者,一旦货物到达入境港,集装箱内的物联网传感器确认货物未开封,并在整个旅程中妥善存放,即可自动签发提单。

智能合约还是加密货币和数字代币转移的基础(本质上是物理资产或公用事业的数字表现形式)。例如,以太坊区块链的ERC-20和ERC-721代币本身就是智能合约。

但并不是所有的智能合约都是代币,Forrester的首席分析师Martha Bennett称:“你可以在以太坊上运行智能合约,这个根据条件触发行动的,并不涉及ERC-20或ERC-721代币。”

智能合约可以控制其他加密货币的转移,如比特币。一旦付款被核实,比特币就可以从卖家转移至买家手上。

Bennett指出,大多数企业区块链网络并不使用代币。在这种情况下,智能合约中的规则将控制代币分配方式,并定义转移条件。

“这仍然不意味着代币就是智能合约,它完全取决于代币的构成方式,”Bennett称。代币不一定要有经济价值,代币可以简单地成为你持有的东西,让你有权对某个决定投票;使用代币意味着你已经投票了,不能再对这个决定进行投票了。这和经济价值没有任何关联。”

智能合约如何模拟业务规则

智能合约既不是真正的“智能”,也不是法律意义上的合同。它们只不过是将业务规则加入到了软件当中。

Bennett说:“人们经常会问智能合约与业务规则自动化软件或存储过程有何不同。答案是,在概念上,原则是相同的;但是智能合约可以支持跨企业边界的自动化流程,可以涉及多个组织机构,而现有的业务规则自动化是无法做到这一点的。”

换句话说,因为智能合约代码运行在一个开放的区块链分类账之上,所以规则不仅可以应用于编写智能合约的企业内部,还可以应用于被允许加入区块链的其他业务合作伙伴。

换言之,它们是只做已经被安排好的事情的代码。Bennett称:“如果业务规则定义得不好 或程序员做得不好,结果将会是一团糟。即使设计和编程正确,智能合约也不是智能的,它们只是按设计运行。”

将业务规则转换为代码并不会自动将结果转换为相关方之间的合法可执行协议(实际上就是合同)。Bennett称,尽管有一些举措旨在使智能合约自动具有法律约束力,但这条道路(至少目前)充满了困难和风险。原因在于对于什么是智能合约还没有一个公认的标准定义。

良好数据的重要性和智能合约中的“神谕”

智能合约与自动化流程所用的规则一样出色意味着质量编程至关重要。输入智能合约的数据的准确性同样至关重要。因为智能合约规则一旦到位就不可更改。合约写完之后,用户和程序员都不能更改它们。

因此,如果数据不是真实的,智能合约就不能正常工作。

数据被输入区块链并用于从外部源执行智能合约,特别是数据馈送和API。区块链不能直接“获取”数据。区块链的这些实时数据馈送被称为“神谕”(oracle),它们本质上是数据和合约之间的中间件。

oracle可以是基于软件或硬件的。例如,基于硬件的oracle可能是货柜中的RFID传感器,其将位置数据传输给智能合约方。相比之下,软件oracle可以是通过API提供有关证券交易信息的应用程序,例如利率变化或股价波动。

在这种情况下,当你在交易所对冲风险,股价上涨时,一方会获利,另一方则会亏损。智能合约决定哪种情况发生需要市场价格数据,同时其API来自数据提供商。这就带来了一个问题:智能合约中涉及的各方必须能够信任外部数据源。

区块链可能分散在数十个或数千个节点上,但是智能合约不是这样。它们只在一个节点上运行。区块链节点(服务器)无法了解特定智能合约的工作方式;作为区块链网络一部分的任何企业联盟必须依赖一个oracle来获取智能合约中的信息。

如果你的企业是区块链联盟的一部分,例如供应链,那么他们是无法知道什么东西正在智能合约中运行,因为没有可验证性。从本质上讲,你必须接受运行oracle和智能合约所在服務器的企业的信息,即提供给区块链的信息是准确的。

Gartner的研究副总裁Avivah Litan称:“你必须为该数据找到一个源、一个表、一个oracle。没有标准流程可以验证数据是否正确,以及它们是否正确进入。这是一个问题的症结所在。”

Litan说:“它还没有成熟。我已经和参与联盟的公司谈过了。我问他们,你是怎么知道智能合约正在做什么,他们的回答是他们根本就不知道。如果你有一个影响自己生活的合约在运行,难道你就不想知道它们在做什么吗?”

智能合约数据的潜在问题

ChainLink是一家使用多个外部oracle数据源的初创企业,其首席执行官Sergey Nazarov表示,由于oracle传统上传输来自单一源的数据,因此没有完全可靠的数据。Nazarov在一份白皮书中表示,数据可能“由于错误的网站、欺骗服务提供商或诚实的错误而被善意或恶意破坏”。

ChainLink已经与互联网和金融服务公司(包括谷歌和全球银行间金融电信协会(SWIFT))建立了发展伙伴关系,后者运营着世界上最大的清算和结算网络。

根据Nazarov的说法,目前常规合同的运作方式可能存在问题,因为一方可能履行合同,但另一方可能决定不支付(这可能引发法律纠纷),或者其中一方可能会想当然的认为复杂合同很简单,但是情况可能并非如此。

Nazarov称:“这些合同没有严格的执行力。它们不能像智能合约那样通过技术来执行。智能合约具有确定性,只要与合约条款相关的事件发生,它们就可以强制执行。”

“智能合约取决于事件。它们由市场事件决定,在保险业,它们取决于汽车、工厂或其他设备的物联网数据。在贸易融资方面,它们取决于航运数据。”Nazarov继续道。

在另一个例子中,Chainlink为一家媒体公司创建了一个智能合约,该公司持有保留费,直到新闻文章的URL达到并在特定时间内保持搜索引擎的排名,他们才会将这部分费用支付给雇用的搜索引擎优化(SEO)公司。

Nazarov称:“这笔款项并不由我们的客户或搜索引擎优化公司持有。它们是由区块链和智能合约等新技术持有,这些新技术将以编程方式强制执行合同。这就是根本区别。”

Bennett表示,虽然过去开发工作异常复杂,但是随着新的编程工具的出现,构建智能合约变得越来越容易。这些新的编程工具已经摆脱了智能合约脚本语言的底层复杂性,业务人员基本上能够掌握智能合约的基础知识。

她说:“我们甚至已经看到了一些可以让业务人员将智能合约的基本要素结合起来的工具。不过,这只是一个开始。因为一些企业发现,要确保每个网络参与者运行相同版本的智能合约可能是一个挑战。”

边缘计算、物联网和智能合约的未来

在接下来的几年里,物联网设备的大规模增长将会刺激更多地使用智能合约。这是因为据Juniper Research的数据显示,实现互联的460亿台工业和企业设备在2023年将很大一部分会依赖边缘计算。因此,解决标准化和部署问题至关重要。

智能合约可以提供一种标准化的方法,通过删除中间环节(如充当网络上物联网设备之间请求和其他流量的中心通信枢纽的服务器或云服务)来加速物联网设备之间的数据交换和启用进程。

IEEE的成员Mario Milicevic指出,“从根本上说,你没有一个中央代理,即没有人批准和验证每一个交易。相反,你拥有参与验证网络中每个交易的分布式節点。”目前IEEE已经发展成为了一个拥有50多万名成员的领先技术创新机构。

区块链分类账减少了完成物联网设备信息交换和处理所需的时间。

Milicevic举例说:“在汽车制造工厂中,一旦某个部件到达,该部件就将其与该目的地的节点通信。后者同意该部件到达后会将其告之整个网络。随后新节点将被允许开始它们的工作。”

Juniper Research称,由于带宽需求减少、应用程序响应时间加快以及数据安全性提高,边缘计算的兴起对于扩大技术部署非常关键。

IEEE的区块链专家认为,当区块链和物联网结合在一起时,它们实际上可以改变垂直行业。

虽然金融服务和保险公司目前处于区块链开发和部署的前沿,但是由于对流程效率、供应链和物流的高度关注,运输行业、政府和公用事业部门现在正逐渐加大参与力度。预计在未来几年,智能合约将会变得更加普遍。

本文作者Lucas Mearian为资深记者,长期关注包括区块链在内的金融服务IT、医疗保健IT以及包括移动管理、安全、硬件和应用程序等在内的企业移动问题。

原文网址

https://www.computerworld.com/article/3412140/whats-a-smart-contract-and-how-does-it-work.html

?
(function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();
澳门真人现金官网-澳门真人现金游戏