一文看懂智能合约的现状与未来
导读**:毫无疑问,智能合约可谓是分布式账本(区块链)技术带来的最具革命性的创新。在分布式账本上部署和执行可靠的、自执行的、防篡改的数字协议的能力,在几乎所有行业和垂直领域中都有大量的潜在用例,从金融和保险一直到零售业务与和公民政府系统。那么,它们为什么还没有被广泛使用呢?
在分布式账本上执行智能合约的概念受到大肆吹捧,被称为是解决与传统合同和数字金融协议相关的许多问题的良方,而这些问题根本就没有为数字时代做好准备。这是因为智能合约是高度安全的、防篡改的数字协议,以无信任的方式提供有保证的执行和处理。这是当今数字协议工作方式的巨大转变,数字协议通常依赖于不信任的第三方、数据重复和高成本的业务流程。
问题
智能合约并非什么新事物。它是由传奇密码学家 Nick Szabo 于 1997 年首次提出,第一个真正的实现是在 2015 年的以太坊区块链平台上进行的,那是三年前的事儿了。从那时起,这个概念已经扩展到其他各种区块链平台,主要是其他加密货币平台,如 NEO 和 EOS,还有非加密货币区块链平台,如 Hyperledger。既然它们在流程改进和成本节约方面有如此巨大的潜力,那为什么自首次实现三年后还没有得到广泛的使用呢?答案很简单:
“因为我们还没有达到智能合约的临界点”。
要理解这个答案究竟意味着什么,我们需要结合这些问题来理解这个答案:智能合约将取代什么?在今天它将会如何发生?现在的系统和流程有什么问题?基于这个新的功能和特性,以及所带来的价值,将会如何发生?
现状
在当今的大多数系统中,如果公司或个人希望签订交易的合同,多数情况下他们使用的是集中式服务。交易可以是任何事物,从证劵、交易、保险到全球贸易等等。它们之间的数字合同由一家公司运营。但各方并不一定百分之百地信任第三方公司,合同可能会出现无法正常执行或根本不执行的情况,或者由于其他因素导致合同执行的结果可能不正确。因此,各方所做的就是在各自部门之间保留合同的冗余副本。此外,他们还需要让合同与各种数据输入保持同步,因为他们可能不相信自己或他方能做到这一点。然后,合同一旦执行,他们就需要处理付款,并更新各自部门所有相关系统。最后,他们需要记录所有事项,因为对于大多数合同来说,政府和监管机构要求清晰的可审计交易记录。这就是我们当前的现状,情况非常复杂,成本非常高昂。
例如,澳大利亚证券交易所(ASX)估计,在澳大利亚股票市场,端到端的成本大约有 40~50 亿澳元,而这一成本由发行人和最终投资者埋单。
明日世界:智能合约
智能合约所要做的就是,缔造一个新世界,比当今世界更加简化。因此,像如上图所示的示例,完全可以使用智能合约。智能合约是一种具有防篡改性的数字协议,在一切需要智能化的地方上,它具有简单、智能的特点。它通晓与合同有关的所有数据,它清楚作为合同的一部分发生的所有付款,因为它执行了这些数据,而且,它还是一个所有相关各方都可以完全信任的信任机制,即使他们之间互不信任。合同中的每个参与者也无需保留冗余副本,因为区块链为每个人提供了一个单一的、最终的、不可改变的源文件,包括监管机构和政府机构。
这个新世界做了两件非常有趣的事情:一是大大降低了执行协议的成本,二是提高了协议的安全性和透明度。
目前,加密货币标记化是智能合约的主要用途,但这些并非复杂的智能合约,超过 80% 的数字协议超出了简单的所有权。在未来,智能合约将会超越代币和所有权。这类复杂的智能合约将基于触发的事件和输入执行逻辑,并在合同结束时产生某种形式的自动付款。这类复杂的智能合约将为数字协议带来新的标准,并最终将用于处理全球行业数万亿计的美元,这些行业为银行、保险、贸易融资等提供了动力。
现在,我们了解了这一即将到来的新世界,需要评估都有哪些困难和障碍,以及解决和处理这些问题将如何导致临界点并引发大规模采用。最好的办法是查看软件和 IT 平台交付的最后一次重大转变,即 SaaS(软件即服务)。
达到软件交付的临界点
通常情况下,企业和公司都有内部部署软件,他们会购买软件,并在地下室或机房安装服务器。由于最初的支出,加上运维这些服务器的持续成本,因此这一做法很昂贵。后来 SaaS 出现了,为用户软件提供了一种完全不同的模式,即软件是在订阅的基础上获得许可并集中托管,而不是在本地安装。起初有很大的阻力,有很多人说他们永远不会去使用 SaaS,永远不会把他们的数据提供给一个不在实际内部或者网络中的应用程序。但最终,SaaS 取得了胜利。SaaS 应用和平台在世界各地广泛应用于会计(Xero)等业务的各个方面,甚至在客户关系管理 / CRM(Salesforce)等数据极其敏感的情况下也能见到 SaaS 的身影。
“我们一次又一次地听到同样的担忧:放弃控制权带来的恐慌。” ——Marc Beinoff(Salesforce 创始人)
因此对于 SaaS 来说,人们最大的不满是他们失去了控制权。那么是什么让每个人最终改变主意并心甘情愿地放弃控制权呢?答案就是价值。SaaS 不仅提供了以前没有的功能,而且在成本、使用、实施速度等方面也有了显著的节省,为了获得更好的产品,以至于因初始成本和持续成本的降低,放弃控制权的的风险就没有那么显著了。而这就是 SaaS 的临界点,当它成为现实时,大规模的应用开始了,并引领我们进入了今天的世界。
现在,既然我们知道了 SaaS 的临界点是如何来临的,那我们就可以将它与智能合约联系起来,并提出同样的问题。我们如何到达智能合约的临界点,为了采用我们需要的一系列的功能,从 “这确实是一个有趣的想法,但我不想放弃控制”,到 “是的,我希望将我的公司转型为一个智能合约驱动的业务”。
通向智能合约临界点的途径
要做到这一点,通常有 5 件主要的事情要么是缺失的,要么是需要正确处理的:
- 与关键资源的连接。智能合约需要能够获取数据,需要能够提供有意义的输出,无论是以支付形式还是以输出数据的形式,并且还需要在合同相关或要求的背景下知晓区块链之外所发生的事情。
- 合同条款和参与者的安全性和隐私性,因为很多时候,参与数字协议的各方希望条款只能在他们之间看到。
- 智能合约运行的系统的可扩展性。执行合同的平台需要能够在合同执行过程中表现良好,但也需要能够扩展以适应大量同时执行多个智能合约的场景。
- 法律和监管框架。技术常常超过监管框架和法律的步伐,这同样也适用于智能合约。智能合约需要从法律角度来处理,并包含在将使用这些合同的各个行业中的许多法规中。
- 智能合约的可访问性。目前只有区块链程序员可以编写智能合约,许多平台不允许他们使用广泛流行的编程语言,如 Java 或 C++。例如,以太坊平台要求程序员学习一种全新的编程语言(Solodity)。
连接
在目前分布式账本技术的智能合约的实施中,合同无法连接到外部资源。它不能获取外部数据,也不能与它们所在的区块链之外的 API 进行交互,这是一个很大的限制因素。这是由以下两点决定的:由于分布式账本技术的性质以及在区块链上执行合同的小型虚拟机非常基础,只能做有限的事情。根据设计要求,如果你想它能很好地扩展,就需要小巧、快速及非常精简。
那么,如何让智能合约与数据源进行通讯、如何获得智能合约来进行支付、以及如何获得智能合约来对其获得的数据进行链下计算呢?因为没有所有这些输入和输出,智能合约的范围将仅限于其执行的区块链上的数据,或者在加密货币平台的情况下,token 的所有权(标记化)。要让智能合约成为对现实世界事件有用的数字协议形式,它就需要了解那些现实世界的事件。它需要了解市场数据、贸易融资的 GPS 数据、用于保险的物联网数据,它需要可靠地接收这些输入,才能对现实世界的事件作出有意义反应的数字协议。最后,它需要能够以用户想要的格式付费和结算。
实现这一目标的方法多种多样,通常有两种方法:
方法 1:Oracle 服务:
在这种方法中,集中式服务或应用程序将从某处获得数据(如 API),并将其传递给区块链上的智能合约,因为智能合约自己无法获得这些数据。这一解决方案完全可行,但确实存在一些缺陷。智能合约的价值在于,它在分布式账本上的防篡改性,但它现在从单个节点或服务器上获取数据。这就破坏了智能合约的 “防篡改性”,因为如果这个 Oracle 节点遭到入侵,那么整个智能合约都可以被骇客操作,因此不是完全安全的防篡改性。如果进入合同的数据不可靠,那么它就不再是一种优秀的数字协议形式。尽管如此,对于某些用例来说,使用可信的 Oracle 已经足够了。
这种方法已经有多种实现,如 Oracalize( http://www.oraclize.it/)。
方法 2:去中心化的 Oracle 网络
在这种方法中,去中心化的 Oracle 网络位于智能合约和外部世界之间,充当 “中间件” 层。这样做的目的是允许智能合约以分散的方式获取其输入(或流程输出),从而将智能合约的安全性和防篡改性扩展到它也可以获取和发送数据的程度。例如,你可以有一个节点从三个不同数据源来获取数据,然后通过聚合结果传递给智能合约,或者完全分散多个 Oracle 节点获得来自多个数据源的数据,将结果进行聚合,然后一旦它们就结果达成共识,就将其传递给智能合约。这个例子是端到端真正的去中心化,并且是拥有数万亿美元的大型企业(如证劵、贸易融资、衍生品和保险等)采用智能合约所需要的,因为他们将会看到这个过程的端到端,并希望尽可能多的安全性和不变性。
这种方法的第一个真正实现是 Chainlink,目前由一家名为 smartcontract.com 的初创公司构建。一旦 Chainlink 上线(有望在 2019 年第一或第二季度),届时,这种连接问题将不再是一个问题。
安全性和隐私性
2016 年 6 月 17 日,以太网公共区块链上一份名为 DAO 的智能合约被骇客入侵,接近 5000 万美元的投资者资金被转移到骇客控制的分包合同中。尽管由于合同中的检查骇客无法获得这些资金,但这一事件产生了深远的影响。虽然许可式 / 私有区块链中不太可能发生这种攻击,但这起事件已经为智能合约从业者提供了一个经验教训,并强调了强有力的治理的重要性。例如:
参与方的角色:在一个智能合约平台上合作的各方必须明确定义角色和职责,并确保与智能合约的创建、执行和废止相关的所有流程都有明确的定义。
制约与平衡:由于以太坊智能合约的安全特性,骇客在 27 天内无法转移被黑的资金,因此,社区才有时间采取行动,重写规则并回滚攻击(硬分叉)。应积极评估故障对经济的影响,并需要内置特征以确保官方能够采取纠正措施以避免或限制交易各方的损失。这件检查必须在设计时要考虑到无缝执行的需要。
数据和合同的隐私性对于企业相关的智能合约来说可能是一个挑战,具体取决于区块链的访问类型。由于交易记录可能对所有参与者都可见,如果不考虑数据的安全性和隐私性,银行将不会愿意在通用的智能合约平台上进行协作。加密密钥管理对于向未知方隐藏交易细节至关重要,需要解决的问题是应该与所有参与者共享哪些数据。Oracle 提供了链下计算功能,可以帮助确保区块链无需存储或访问各方希望保密的数据。
与常规的合同不同,一旦部署合同,就无法停止或者修改合同。正因为如此,智能合约需要 100% 的防弹和无 Bug。没有人会把数百万美元投入到一个自动执行的程序中,除非他们确信程序会按预期运行,并且触发机制是正确的、有效的。在过去的一年里,这个行业迅速发展起来,现在已经有许多智能合约审计 / 测试组织和软件平台解决了这个问题。
可扩展性和性能
对于不存在的高事务处理速度问题的贷款或抵押贷款等交易,从性能角度来看,无需许可(任何人都可以加入并参与区块的生成)区块链是合适的。然而,其他交易,如贸易融资和证劵,将需要比通常无需许可区块链更好的性能。不管情况如何,出于几个原因,许多企业可能会使用许可式区块链(限制查看、添加账本的权限),而不是无需许可区块链。首先,许可式区块链可以更容易地实现法规遵从性。其次,他们提供了更强大的共识和治理机制。最后,对许多应用程序来说,高吞吐量是必不可少的,私有 / 许可式区块链的性能和可扩展性通常都会更好。虽然需要新的技术来将许可式和无需许可的区块链扩展到许多应用程序所需的吞吐量,但现在许可式区块链已经具备了相当大的性能优势。另一个常见的需求是零停机时间,由于其去中心化设计和共识机制,区块链可以很好地处理这种情况。
Oracle 还可以提供可扩展性和性能,因为它们具有链下计算功能,可以 “减轻” 在区块链上运行的智能合约的负载。虽然当前许多智能合约平台在性能和可扩展性方面各不相同,但它们都在不断改进,并朝着高性能和可扩展性的共同目标迈进。
法律及监管框架
为了使智能合约与现有的法律系统相互作用,智能合约系统的设计者正积极地从法律角度来研究几个细微差别:
不变性:如上所述,分布式账本上的智能合约具备防篡改的特性。这在许多现实场景中会造成实际问题,人们正在探索一旦合同生效后如何修改合同条款。《合同法》对合同的修改或者解除作了规定,如果需要,可以在智能合约中实现这一点。其中一种方法通常被称为 “应急出口”,是一种通过预先编程的方式,用来改变智能合约的条款。但是,确保正确的权限到位是很棘手的麻烦事。此外,它还消除了智能合约的一些主要特性和优势,因此需要仔细考虑这样的实现。
合同保密:通常,在区块链上执行的智能合约副本或许可式账本与链上的成员共享。各方的匿名性可以得到保障,但合同执行的保密性却不一定能够得到保障。这是一个受到关注并正在取得进展的领域。如前所述,Oracle 可以通过确保私有数据和信息保持链下状态来提供帮助。还有一些初创公司试图通过使用先进的加密结构来解决隐私问题,以及组织内部和组织之间的数据共享问题。同样,人们正在探索被称为 “零知识证明” 的概念,以找到一种方法,能够将验证交易的过程与查看交易的内容分离开来。
法律可执行性和裁决性:许多行业(如金融服务)都受到高度监管,并向这些公司盘发特定许可和批准以允许在该行业内运营。然而,金融智能合约的合法性尚有待确立。美国和其他一些国家已采取初步措施,在法律体系中承认分布式账本。要使合同具有可执行性,必须在法律体系和监管机构认为合适的程度上确认双方的身份,并将电子签名视为有效。另外,将法律条款和条件准确的翻译成软件逻辑也是另一个需要考虑的关键方面。像 CommonAccord 和 OpenLaw 这样的初创公司正致力于解决这个问题的平台。
监管:律师、立法者、监管机构和政府已经开始意识到分布式账本在提高透明度和易于遵守和报告方面的潜力。这些当局的推动将有助于克服法律和行政障碍。
可访问性
在今天,要编写一个智能合约,你需要成为从技术角度了解区块链知识的程序员。此外,根据平台的不同,你可能需要了解定制 / 定做的编程语言,比如 Solidity 或 Golang。如果你想写一份合法的智能合约,你除了需要具备上述的技能外,还需要具备法律知识,并且身边没有多少程序员或律师。
展望未来,智能合约需要能够以更广泛的语言来编写。企业更愿意使用可以利用现有 IT 技能的平台,而不必使用新的定制语言来提升团队水平。像 NEO 这样的平台已经解决了这一问题,为开发人员提供了 Java 和 C# 等语言,许多其他平台都有类似的需求。
随着智能合约的使用量增加,未来很有可能会出现各种用例的行业标准或模板版本的合同,例如衍生品和贸易融资协议。这些智能合约代码的标准化模板将在社区的反馈基础上继续改进,社区之所以希望改进它们,可能是出于各种原因(如满足一些法律要求)。这意味着并非每个新的智能合约都将从头开始构建,很多都是基于标准和模板,并根据需求进行修改。他们表示,今天有 80% 的合同法都是剽窃,智能合约最终会遵循这一先例。
何时能被主流采用
一旦技术和监
- 原文作者:知识铺
- 原文链接:https://geek.zshipu.com/post/%E4%BA%92%E8%81%94%E7%BD%91/%E4%B8%80%E6%96%87%E7%9C%8B%E6%87%82%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6%E7%9A%84%E7%8E%B0%E7%8A%B6%E4%B8%8E%E6%9C%AA%E6%9D%A5/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com