智能合约并不智能 炒作背后的真相是什么?
就像“区块链”、“人工智能”、“云”这些听起来就高深莫测的词一样,“智能合约”也是容易被用来炒作的概念。试想一下,所有的事情都能不通过司法系统就能如愿执行,还有什么比这个更好的事儿呢?
智能合约被很多人夸赞,毕竟,如果除去第三方信任的需要,很多事情都会高效起来。但是,智能合约真这么厉害还需要法院做什么?
除去炒作的外衣,下面这篇文章将向大家阐述,为什么智能合约很难?以及哪些应用场景非它不可?
简单点说,智能合约是什么?
我们先来说说普通的合约,它是指两个或两个以上的当事人之间的协议,用来约束他们在未来将发生的某些事。比如说,小明给小张一笔钱,换取小张房子的使用权(也就是房屋租赁);小明每个月给小张一笔钱,不管小明的车以后出什么毛病,他都会给他修理(也就是汽车保险)。
智能合约的不同之处就在于:它的评估和执行都是靠计算机代码完成的。所以,小明给小张500块,让小张三个月后给他一张沙发,那么计算机就要确定执行条件(小明给小张500块了没有?已经到三个月的期限了吗?),如果符合,就直接执行交割,不会给任何一方退出、停止合约的机会。
智能合约的关键点在于去信任执行,也就是它不需要依赖第三方就能执行各种合约。不需要等着别人兑现承诺,也不需要等着律师和法律来解决问题,就能及时、客观地执行既定的事情。
为什么说智能合约挺笨的?
使用“智能”这个词并不意味着它比普通合约“聪明”多少。也正是因为它不需要第三方就直接执行的特质,它们只会把那些不付钱的租房者锁在公寓外面,而不是协商之后实在没有办法才把他们赶出去。
一份真正“聪明”的智能合约,应该考虑到所有情有可原的情况,即使在情况不明朗的时候也能做出公平的裁决,换句话说,“聪明”的智能合约应该像一位公正明智的法官。
相反,智能合约根本就不智能。它非常“死板”,只知道遵守规则,完全不会考虑其他合乎情理的因素或人道主义。这么看来,一旦使用智能合约就意味着不能有任何模棱两可的余地。
智能合约真的很难
由于以太坊的大量炒作,人们误以为智能合约只存在在以太坊中。事实上,在1995年,智能合约就已经存在了。在2009年比特币诞生之初,就存在一种十分广泛的智能合约语言——脚本。比特币的智能合约和以太坊的区别在于以太坊是图灵完备的(可以理解成在它能解决任何可计算的问题)。也就是说,以太坊的智能合约语言支持更复杂的合约,但代价是代码会更难分析。
虽然合约允许复杂的情况存在,但执行起来不一定保证能不出错。即使是普通的合约,越复杂,执行起来就越难,因为复杂性增加了很多不确定性和代码解释的空间。
对于复杂的智能合约,要保障安全性,就意味着要提前测试、处理所有可能发生的情况,并确保合约遵循作者的意愿,而这一点非常棘手。要保证智能合约图灵完备,相当于要保证计算机程序没有bug。这太难了,因为现在几乎所有的计算机程序都拥有bug。
想想在现实生活中,写一份逻辑正确、不出错的合同,得经过多少年的学习和积累才能胜任,要码出一份完美的智能合约至少也需要这种水平才行,但目前区块链行业有太多新手,从各种黑客攻击的事件中我们就能看出这一点。
比特币解决这个问题的方法就是放弃图灵完备,这使得程序更容易检查,合约更容易分析。而以太坊的解决方式就是把负担放在智能合约编写者身上,需要他们一遍遍地检查、测试,才能达到真正意图。
智能合约不是真正的合约(至少在ETH上)
虽然理论上将合约的责任留给编写者听起来不错,但在现实中,这已经产生了一些严重的中心化后果。
以太坊推出了“代码即是法律”的说法。合约是权威的,任何人都无法否认。那么从某种意义上说,如果开发者搞砸了自己的智能合约,是他们罪有应得。直到著名的“DAO事件”,事情就不一样了。
DAO是一个“去中心化的自治组织”,他们在以太坊上创建了一个基金会,用户可以投入资金来购买代币,然后向DAO谏言献策该如何使用这笔钱。当ETH的价格在20美元左右时,DAO筹集了1.5亿美元的ETH。
但是,由于代码有缺陷,导致有黑客找到漏洞,盗走DAO里面的资金。以太坊为了不眼睁睁地看着黑客盗走资金,决定代码不再是法律,并将所有进入DAO的资金还原。合约编写者和投资者做了一些愚蠢的事情,以太坊开发者却决定为他们缓解难题。也是因为这件事儿,以太坊经典诞生了,并保留了“代码及法律”这一原则。
此外,因为图灵完备很难实现,开发者纷纷开始回避这种语言,ERC20和ERC721标准是以太坊中最常用的智能合约模板,两种类型的合约都可以在没有任何图灵完备的情况下编写。
智能合约仅适用于不记名数字资产
毕竟谁都不喜欢上法庭解决问题,即使没有图灵完备,智能合约听起来也还不错。但是,使用智能合约真的就比普通合约要简单吗?
比如说,智能合约用于房地产时,小明可以证明房子的所有权,小张可以用钱买房子的所有权。不需要第三方背书、无需保险机构、不需要法官,所有的一切都能靠机器执行。听起来很棒,对吗?
但有两个问题。首先,由中心化机构执行的智能合约,它并不能被称为“去信任执行”,你仍然需要信任这个中心化机构。而不需要第三方背书是智能合约的关键特性,为了使智能合约真正达到“去信任执行”,就需要一个完全去中心化的平台。
这就引出了第二个问题。在去中心化的情况下,只有在数字世界和现实世界之间存在某种明确的联系时,智能合约才可行。打个比方,当一座房子在数字世界的所有权发生变动时,现实世界也必须变动所有权。这种对应变动的情况,被称为“预言机问题”。
当小明把房子卖给小张时,智能合约需要知道,她在现实世界中房子到底有没有成功过转让出去。要做到这一点,就需要一些可信任的第三方来验证现实世界的情况。
比如,小明把房子转化成以太坊上的ERC721代币,然后通过交易将代币转给小张。问题来了,小张要怎么相信这个代币就是房子的所有权?这时必须要有一些“预言机”出来担保这枚代币的背后就是房子的所有权。
此外,即使有权威第三方表示这枚代币就是代表房子,那如果代币被盗,会发生什么呢?房子属于小偷了吗?如果代币丢失怎么办?房子不能再出售吗?这个房子的代币可以重新发售吗?如果是这样,谁有这个权利?
在去中心化的应用场景中,无论是水果、汽车还是房子,将数字资产与实物资产联系起来都是一个棘手的问题。实物资产受现实法律监管,这意味在智能合约中有效,不一定在现实中有效,说白了,还是要依赖第三方。即使是电子书、医疗记录、电影等数字资产也会遇到同样的问题,这些数字资产的“权利”最终由其他权威第三方机构或“预言机”来决定。
从这个角度来看,“预言机”是虚拟世界的简化版法官。除了面临机器强制执行的规则,你还要面临复杂的代码风险、人为的主观风险。换句话说,签一份智能合约,意味着要相信复杂的代码不会出错,还要信任某人或某个组织有不出错的能力。
唯一不需要“预言机”还能正常工作的就是不记名数字资产。从本质上讲,被交易的资产不仅需要是数字化的,它的所有权还不能依赖智能合约以外的平台。只有这种情况,智能合约才能在无需信任的基础上被执行。
结论
大家都希望智能合约能最大程度地发挥它的作用,但多数合约中包含了太多假设和不清晰的判断体系。除此之外,事实证明图灵完备的智能合约并不好用,它很容易通过各种意外把事情搞砸。我们应该给智能合约平台标记为容易受攻击的标签,而不是图灵完备的标签。“DAO事件”的回滚也证明合约的隐形信任”精神“,可以解决比我们想象中还要多的争议。
智能合约真的很难,很难保证事情不被搞砸,很难完完全全实现“无需第三方的信任”,这也导致它无法大规模应用,目前真正能运用到的场景还只是像比特币这样的去中心化平台的不记名数字资产,智能合约的未来还有很长的路要走。