当前位置:  首页 →区块链百科 →正文

揭开智能合约的真相

2018-12-01 2:14:25 区块链百科

就像「区块链」、「AI」和「云」这样的词语一样,「智能合约」也是一个时髦词儿。

毕竟,笃信合约必然能在不动用司法力量就能精准执行,这种感觉实在是太好了。智能合约的承诺包括:

自动、去信任和公正地执行合同在合同建设、合同执行和合同强制实施方面消除中间人摆脱律师的存在

我对当下的热情感同身受。毕竟,如果无需信任对方就能执行合同,那么我们做事的效率将会得到多大的提升?

说到底,智能合约究竟是什么?而且那不是以太坊的领域吗?这不是未来的方式吗?

在本文中,我将审视智能合约的内涵以及与之相关的工程现实 剧透:它没那么简单,安全性也很难保证。

智能合约究竟是什么

 

什么是智能合约?

普通合同是在两个或更多方之间达成协议,将他们与未来的某些东西联系起来。爱丽丝可能会向鲍伯支付一些钱以换取使用鲍伯的房子的权利,即租金。查理可能会同意修复丹尼斯汽车在未来发生的任何损坏,以换取丹尼斯每月的付款,即汽车保险。

「智能」合约的不同之处在于条款由计算机代码评估和执行,实现了去信任的目标。如果爱丽丝同意现在向鲍伯支付 500 美元,用于购买 3 个月后交付的沙发 即沙发期货,那么一些代码可以确定在条款得以满足的情况下 爱丽斯是否付了鲍伯钱?3 个月到了吗?予以执行 由托管方交付沙发,任何一方都没法反悔。

智能合约的关键特征是它具有去信任的执行力,也就是说,你不需要依赖第三方来执行各种条件。智能合同会执行应该及时和客观发生的事情,而不是指望另一方兑现承诺,甚至更糟,依靠律师和法律制度来纠正错误。

 

智能合约其实很傻

使用「智能」一词意味着这些合同具有一些与生俱来的智慧。它们并没有。合同的「智能」之处在于不需要对方配合就能执行协议。一个「智能」的合约可以把欠费的房客锁在他们的公寓门外,但是却不能想办法将拖租的房客给踢出去。智能合约的强大之处在于它能对商定后果予以执行,而不在于合同天生拥有什么智慧。

真正智能的合同会考虑到所有情况,尊重合同的精神,即使在最黑暗的情况下也要做出公平的裁决。换句话说,一个真正智能的合同扮演的是一个好法官的角色。可是在这种情况下,「智能合约」根本不是智能的。它实际上是逐句逐句完全按照规则办事,完全不能将任何次要因素或法律的「精神」纳入考量中。

换句话说,要求合约无需信任,意味着合约中完全不能有任何模棱两可的空间,这就引出了下一个问题。

 

智能合约真的很难写

由于以太坊的大量集中营销,人们错误地认为智能合约只存在于以太坊中。这不是事实。

比特币从 2009 年开始就有一种应用非常广泛的智能合约语言,叫做 Script。事实上,智能合约早在 1995 年就存在了,那时候比特币还没影子呢。比特币的智能合约语言与以太坊的区别在于以太坊是图灵完备的。也就是说,以太坊的智能合约语言 Solidity 令更复杂的合同成为可能,但却使它们更难以分析。

复杂性有一些重大后果。虽然复杂的合同可以包容更复杂的情况,但复杂的合同也很难确保安全。即使在普通合同中,合同越复杂,执行也会越难,因为复杂性会增加更多的不确定性和解释空间。通过智能合约,安全意味着可以以所有可能的方式执行合同,并确保合约符合撰写者的意图。

图灵完备环境中的执行极其棘手且难以分析。确保图灵完备的智能合约相当于证明计算机程序没有任何漏洞。我们知道这也太难了,因为现有的几乎所有计算机程序都存在漏洞。

想想看,需要多年的学习、通过艰深的律师执业资格考试,才能胜任撰写普通合同的工作。写智能合约至少需要达到这种能力水平,但目前许多智能合约都是由不了解安全性要求的新手编写的。从各种已被证明存在缺陷的合同中可以清楚地看出这一点。

比特币解决这个问题的方法就是干脆放弃图灵完备。这使得合同更容易分析,因为更容易枚举和检查程序的可能状态。

以太坊的解决方案是将重任推到智能合约编写者身上。合同编写者需要确保合同符合其意图。

 

智能合约不是真正的合约

在理论上,将保证合同安全的责任留给作者看上去很美,但在实践中,这已经产生了一些严重的中心化后果。

以太坊推出了「代码即法律」的想法。也就是说,以太坊的合约是终极权威,任何人都无法否决合约。这个想法的用意是向智能合约开发者表明,他们每个人都是独立的。如果你搞砸了自己的智能合约,那么从某种意义上说,一切都是你自找的。当 DAO 事件发生时,这种局面戛然中止。

DAO 代表「去中心化的自治组织」,它在以太坊创建了一个基金,用以展示这个平台的能力。用户可以向 DAO 存款并基于 DAO 的投资获得回报。决策本身是众包和去中心化的。当 ETH 交易价格在 20 美元左右时,DAO 在 ETH 筹集了 1.5 亿美元。这在理论上听起来都不错,但是有一个问题:代码并不是十分安全,导致有人找到了一种方法抽干了 DAO 的钱包。

许多人称这个掏干了的 DAO 的人是「黑客」。从某种意义上说,「黑客」找到了一种以违背撰写者意图而从合同中取钱的方式,这是事实。但从更广泛的意义上讲,这根本不是黑客,只是利用智能合约中的特性来为自己的利益服务。这与一个挺有想法的注册会计师找出税收漏洞为客户节省资金并无太大差别。

接下来发生的事情是,以太坊现在认为代码不再是法律了,全数返还了存入 DAO 的资金。换句话说,合约编写者和投资者做了一些愚蠢的事情,而以太坊开发人员决定出头当上帝。

这一事件的后果已有详细记录。以太坊经典诞生了,DAO 的错误没有人为回滚,保留了「代码即法律」的原则。此外,开发人员开始回避使用以太坊的图灵完备属性,因为它被证明很难确保安全。ERC20 和 ERC721 标准是以太坊中最常用的智能合约模板,而且需要指出的是,两种类型的合同都可以在没有任何图灵完备的情况下编写。

 

智能合约仅适用于数字化无记名票据

即使没有图灵完备,智能合约听起来也不错。毕竟,谁喜欢为了获得本应属于他们的东西,还非得打一场官司?使用智能合约不是比普通合同更容易使用吗?

例如,智能合约是不是能使房地产受益?爱丽丝可以证明她拥有这所房子。鲍伯可以支付房款并换取房子。不存在所有权疑问,无需信任,由机器快速执行,无需法官、官僚体系,也不用买什么产权保险。听起来很棒,对吗?

这里有两个问题。首先,由中心化组织执行智能合约时,并非真正去信任。你仍然只能选择信任中心化组织。可是智能合约的关键特性正是去信任,因此中心化执行根本说不通。为了使智能合约真正无需信任,你需要一个真正去中心化的平台。

这引出了我们的第二个问题。在去中心化的环境中,只有在数字版本和物理版本之间存在某种明确的联系时,智能合约才有效。也就是说,每当房屋所有权的数字版本发生变更时,所有权的物理版本也必须变更。数字世界需要「了解」物理世界。这被称为「预言机问题」Oracle problem。

当爱丽丝将房子转让给鲍伯时,智能合约需要知道她确实将房子转让给鲍伯。有几种方法可以做到这一点,但它们都有同样的基本问题:必须信任某些第三方,以验证物理世界中的事件。

例如,房子可以在以太坊上表现为不可替代的令牌。爱丽丝可以通过原子交换将房子转让给鲍勃以获得一定数量的 ETH。而这正是问题所在:鲍伯需要相信该令牌确实代表了房子。必须有某种「预言机」确保转移给他的房屋令牌确实意味着房子成为了他的合法财产。

此外,即使政府当局认同令牌实际上代表房屋,可是如果令牌被盗会发生什么呢?房子现在归小偷所有了吗?如果令牌丢失怎么办,房子就再也不能出售了吗?房屋令牌可以重新签发吗?如果是这样,由谁来负责签发?

将数字资产与实物资产联系起来存在一个棘手的问题,无论是水果、汽车还是房屋,它们都处在去中心化的环境中。实物资产受到你所在地区的管辖,这意味着除了你创建的智能合约之外,它们在某种意义上还需要信任别的某些东西,也就是说拥有智能合约并不一定意味着在现实世界中拥有对同一事物的所有权,而且跟普通合同一样要碰到信任问题。需要信任第三方的智能合约也就消除了它原本去信任的杀手特性。

即使是电子书、病历或电影等数字资产也会遇到同样的问题。这些数字资产的「权利」最终由其他权威机构决定,预言机需要获得信任。

从这个角度来看,预言机只是扮演低配版的法官角色。你得到的并不是机器执行和简易强制执行,而是必须使用主观性和人类判断风险对所有可能结果进行编码的复杂性。换句话说,通过使合同变得「智能」,你在撰写合同的同时就必须去信任某一方,这使得编写过程反而更加复杂了。

唯一不需要预言机就可以独自运作的是数字化无记名票据。从本质上讲,交易双方不仅需要数字化,而且合约标的必须是无记名票据。也就是说,令牌的所有权不能具有智能合约平台之外拥有依赖性。只有当智能合约持有数字化票据时,智能合约才真正去信任。

 

结论

我希望智能合约比目前看起来更有用。可惜,我们人类似乎都认为,但凡一提到合同,与之相应的必然是一大堆假设和既定的判例法。

此外,事实证明使用图灵完备可以轻轻松松搞砸智能合约并导致各种意外。智能合约平台哪儿是图灵完备,简直是图灵脆弱。 DAO 事件也证明合同的「精神」是隐含信任的,并且比我们意识到的更有助于解决纠纷。

智能合约简直太容易搞砸,太不可靠,太难以实现去信任化,并且大多数事情都得借助外力。所以在我看来,只有在一个应用场景,智能合约确实提升了去信任化,那就是比特币等去中心化平台上的数字化无记名票据。

BB财经原创,作者区块链百科,转载请注明出处:http://www.bbcaijing.cn/baike/31692.html