和“区块链”一样,“AI”、“云”和“智能合约”这些概念都在被大肆炒作。
毕竟,让事物“顺其自然”,比按照司法程序管理不是来得更加简单吗?智能合约的承诺会:
1.自动地、无需信任地、公正地强制执行合约内容;
2.在合约的签订、执行和履行过程中,去除对第三方的依赖;
3.(据说可以)替代律师。
对于炒作中的部分信息,我还是支持的。毕竟,一旦去除对可信第三方的依赖,效率会提高许多。
那么,智能合约到底是什么呢?它是以太坊专属的吗?这难道不是未来的必然趋势吗?你为什么要阻碍这种进步?
在本文中,我将说说智能合约是什么,以及它将有哪些应用场景。
智能合约是什么?
一般的合约,是两个(两个以上)当事人之间的协议,协议内容将会对他们即将进行的某件事上进行约束。例如,Alice可以付钱给Bob,以换取Bob房子的使用权(也就是租金)。Denise可能每月给Charlie付款,让Charlie帮忙修理汽车(又名汽车保险)。
智能合约的不同之处在于,它是由计算机代码评估和执行的。如果Alice同意支付500美元给Bob,而Bob需要在3个月后交付一张沙发。代码会确定条件是否属实(Alice支付500美元给Bob了吗?付款后有3个月了吗?)。并执行(从托管到交付沙发),过程中不允许任何一方退出合约或拒绝履行。
智能合约的关键点是,它可以实现可信执行(trustless execution)。也就是说,不需要依赖任何第三方来进行信任背书。因为,与其等着第三方履行诺言,或者依靠律师和法律制度补救,还不如让智能合约来。智能合约可以及时、客观地执行记录在合约中的所有条款。
智能合约其实挺“笨”的
“智能”一词,意味着合约具有某种与生俱来的智慧。实际上,真正执行的时候它没有那么聪明。合约的智能之处在于,只需要将协议写入算法,然后强制双方履行协议,不需要协议双方的合作。就好像,房东会把不付钱的租客赶出去,智能合约会直接把他们锁在门外。
一个真正“智能”的智能合约,会考虑到所有“情有可原”的情况,并审视合约精神,作出最公平的裁决。换句话说,真正的智能合约会表现得像一个优秀的法官。而现实情况是,“智能合约”根本就不智能,因为它是基于规则,并始终遵循规则的,完全不会考虑现实情况或人道主义。
换句话说,一旦使用智能合约,就不允许有任何模棱两可的空间,这也就引出了下一个问题。
智能合约真的很难实现
由于以太坊的影响力太大,人们错误的以为智能合约是以太坊独有的。事实上这是不对的。智能合约从1995年就出现了。2009年比特币出来的时候,也采用了智能合约语言——脚本。拿比特币的智能合约语言和以太坊的相比,最大的区别是以太坊是图灵完备(Turing-complete)的。也就是说Solidity(以太坊智能合约语言)可以运行更加复杂的合约,代价是它也更难分析。
复杂性带来了一些严重后果。虽然复杂的合约可以允许更复杂的情况出现,但复杂的合约也很难维护。在日常生活中,也会出现合约越复杂,就越难强制执行的现象。因为复杂因素增加了不确定因素和解释空间。如果要保证智能合约绝对安全,就要对合约执行中每一种可能进行测试,并确保合约能够完全实现起草者本人的意愿。
保证图灵完备的智能合约,就相当于证明计算机程序没有错误。我们知道这是非常困难的,因为现在几乎所有的计算机程序都不是完美的。
写作一份普通的合约,需要多年的学习,并通过律师考试才能胜任。写作一份智能合约的难度,不亚于此。但目前,大部分智能合约都是新手写的,他们对事物的考虑,做不到尽善尽美。也是因此,可以发现许多智能合约都存在安全漏洞。
比特币为了解决这个问题,放弃了图灵完备性(Turing-completeness)。这使得合约更易于分析,程序更容易枚举和检查。
以太坊的解决方案呢,是把责任转嫁给合约起草者。即,为了保障操作的安全性,合约的起草者应确保自己写作出来的合约尽可能完善。
智能合约不是真正的合约(至少在以太坊上是这样)
把维护合约安全性的的责任交给合约起草者,虽然听起来不错,但在实践中,会产生权利集中的问题。
以太坊是基于“代码就是法律”的理念展开。也就是说,以太坊合约是最终的权威,没有人可以推翻这个合约。这个想法是为了让智能合约起草者明白,合约本身是独立的。如果起草者没有发现自己的智能合约的安全漏洞,那么一旦发生什么事,起草者们是“罪有应得”。当DAO事件发生时,一切戛然而止了。
DAO代表“分布式自治组织”,他们在以太坊上设立了一个基金。用户可以将钱存入DAO,并跟着DAO的投资按比例获得回报。当ETH的交易价为20美元左右时,DAO融资1.5亿美元。从理论上讲,这一切都是可行的。但是,由于代码的安全性没有得到保障,有人找出了漏洞,可以成功的从DAO中拿到钱。
从DAO中拿钱的人被认为是“黑客”。从某种意义上来说,“黑客”确实找到了合约的漏洞,这是出乎合约起草者预料的,但也是事实。从更广泛的意义上说,这根本不是黑客,而是一个利用智能合约安全漏洞来获利的用户。这和一个注册会计师找出税收漏洞来节省客户的钱,并没有太大的不同。
接下来发生的是,以太坊决定不再完全拿代码当法律,并收回了所有投入DAO中的钱。这其实是,合约起草者和投资者做了一些愚蠢的事情,以太坊开发商决定为他们纾困。
这一事件的被记录下来了。后来“Ethereum Classic”诞生,它将“DAO”作为书面形式保存,并保留了“代码就是法律”的原则。此外,因为图灵完备实在难以维护,开发人员开始回避使用这种语言。ERC 20和ERC 721标准是以太坊中最常用的智能合约模板,需要指出的是,这两种类型的合约都可以在没有任何图灵完备的情况下编写。
智能合约仅适用于数字承载设备(Digital Bearer Instruments)
即使没有图灵完整性,智能合约依然听起来很好。毕竟,大家都不想去真正的法庭,使用智能合约不是比普通合约容易得多吗?
智能合约不是也可以应用于房地产领域吗?Alice可以证明房子是她的。Bob可以付钱购买这所房子。不存在所有权问题,在无需信任、不需要法官、中间人或保险机构的环境里,依靠计算机程序来履行合约。听起来就不错,对吧?
这里有两个问题。第一,由中心机构来执行的智能合约,并不能做到真正的可信执行。至少,你还得依赖这个中心机构。可信执行是智能合约的关键特性,因此通过中心机构来执行不是最佳选择。要使智能合约真正做到可信执行,需要的是一个去中心化平台。
这就引出了第二个问题。在分布式的况下,只有在数字世界和现实世界建立直接的联系,智能合约才可能真正运行。也就是说,一旦在数字世界中,房子的所有权发生改变,那么现实生活中房子的所有权也必须发生改变。数字世界需要“对应”现实世界。这被称为“预言机问题”(Oracle problem)。
当Alice把房子转让给Bob时,智能合约需要知道的是,她在现实生活中,也确实把房子转给了Bob。有几种方法可以做到这一点,但它们都有同样的基本问题。必须有一些可信第三方来核对现实世界中的情况。
例如,Alice把房子转化为数字货币,并通过转让数字货币的方式把房子转让给Bob。问题出在这里:Bob需要相信这些数字货币确实代表了真实的房子。必须有一些预言机来担保,将代表房子的数字货币转让给他的同时,也完成了法律上房屋所有权的转让。
此外,即使政府当局明确证明这些数字货币确实代表了房子时,也存在一些问题:如果数字货币被偷了,这房子现在是小偷的吗?如果数字货币丢失了,这房子已经卖不出去了吗?这房子的数字货币能重新发放吗?如果是的话,是由谁来发?
在去中心化系统中,将数字资产与有形资产(无论是水果、汽车还是房屋)联系起来都是一个棘手的问题。在司法管辖范围里,有形资产除了遵循智能合约之外,还需要遵循其他司法规则。也意味着,智能合约中的所有权,并不一定等同于现实世界中的所有权。并且,与普通合同一样,仍然存在信任问题。如果智能合约最终还要依赖第三方,那么它可信执行的特点也就无从说起了。
像电子书、医疗记录或电影这样的数字资产也面临着同样的问题。这些数字资产的“所有权”最终由其他权威机构决定,也对预言机有依赖。
从这个角度来看,预言机只是弱化的法官。你真正得到的不再只是机械的、简化的执行,而是通过对所有风险预估之后进行编码的复杂性。换句话说,你使用了“智能”的合约,却仍然依赖第三方,合约的写作却变得更加复杂了。
在没有预言机的情况下,唯一能工作的就是数字承载设备。本质上,交易双方不仅需要将信息数字化,还需要数字承载设备。也就是说,数字货币的所有权不能依赖智能合约之外的其他存在。只有在拥有数字承载设备后,智能合约才能真正应用于无需信任的环境中。
结论
我希望智能合约可以更实用一点。但是,由于传统合同中有很多约定俗成的,或者难以言明的部分。而智能合约只能执行条理清晰的指令,这些无法明确说明的隐形条款,根本无法通过智能合约表现出来。
此外,图灵完备比较容易受到攻击,会导致各种意想不到的行为出现。我们应该将智能合约标记为图灵易损(Turing-vulnerable),而不是图灵完备。“DAO”事件也证明了合约中的“精神”是隐含可信的,比我们想象的更有助于解决争端。
智能合约很容易被攻击,难以得到保障,太难应用到无需信任的环境中,而且对外部有太多依赖,导致它无法大规模应用。智能合约真正的作用,是在去中心化平台(比如比特币)上使用数字承载设备。