前言:你真的知道以太坊的智能合约是什么意思吗,比如它的功能,运行机制?它是否存在漏洞,也是否真的是去中心化的标杆?想知道不一样的答案吗?在上一篇中,作者从什么是智能合约的定义阐述开始过渡到分析它的理论上的不完美和技术上的缺陷,还是让人耳目一新的。接下来作者又会给出什么批判,又会带给你什么反思呢?
版权声明:本文授权BH好文好报群摘编、转载以及相关转授权推文行为
原文标题:The Truth about Smart Contracts
链接:https://medium.com/@jimmysong/the-truth-about-smart-contracts-ae825271811f
作者:Jimmy Song
翻译:M小新
智能合约不是真正的合约(至少在ETH上)
虽然在理论上将保证合约安全性的责任推给写合约的人听起来很好,但在实践中,这已经产生了一些严重的集中化后果。以太坊推出了“代码就是法律”。也就是说,以太坊的合同是最终的权威,任何人都无法否决合同。这个想法是向智能合约开发者表明他们只能依靠自己,如果你搞砸了自己的智能合约,那么从某种意义上说,你活该。当DAO事件发生时,这就停止了。 DAO代表“去中心化的自治组织”,并在以太坊创建了一个基金,作为展示平台的作用。用户可以向DAO存款并根据DAO的投资获得回报。决策本身是众包和去中心化的。
当ETH交易价格在20美元左右时,DAO以ETH筹集了1.5亿美元。这在理论上听起来都不错,但是有一个问题。代码没有得到很好的保护,导致有人找到一种方法来拿走DAO的钱。 许多人认为是“黑客”拿走DAO的钱。从某种意义上说,“黑客”找到了一种合约缔造者也没想到的方式从合同中取走钱,这是事实。但从更广泛的意义上讲,这根本不是黑客,只是有人利用智能合约中的漏洞来发挥自己的优势。这与注册会计师找出税收漏洞以节省客户资金的方式并无太大差别。 接下来发生的事情是,以太坊决定代码不再是法律,并将所有DAO的资金返回。换句话说,合约编写者和投资者做了一些愚蠢的事情,以太坊开发者决定拯救他们。
这一事件的后果已有详细记录。以太坊经典诞生了,保留了DAO,并保留了“代码是法律”的原则。此外,开发人员开始回避使用以太坊的图灵完备属性,因为它被证明很难保证安全。ERC20和ERC721标准是以太坊中最常用的智能合约模板,特别要指出的是这两种类型的合同都可以在没有任何图灵完整性的情况下编写。
智能合约仅适用于数字承载仪器
即使没有图灵完备,智能合约听起来也不错。毕竟,谁喜欢不得不上法庭才能合理获得本属于他们的东西?智能合约是不是比普通合同更容易使用?例如,智能合约下的房产转移?Alice可以证明她拥有这所房子。Bob可以为房子汇款并换取房子。没有所有权,去信任,机器快速执行,无需法官,官僚或产权保险的问题。听起来很棒,对吗?
这里有两个问题。首先,如果执行智能合约的是一个集权的机构,那它就并非真正去信任。因为你还是通过信任这一集权的机构执行合约。而去信任才是关键特性,因此中心化的执行方式是说不通的。为了使智能合约真正去信任,您更需要一个去中心化的平台。
这引出了我们的第二个问题。在去中心化的环境中,只有当数字版本和物理版本之间存在某种明确的联系时,智能合约才有效。也就是说,每当房屋的数字版本改变所有权时,物理版本也必须改变所有权。数字世界需要“了解”物理世界。这被称为“oracle problem”。(oracle problem 很难用简单的词语表达,在后续文章会专门阐释)
当Alice将房子转移给Bob时,智能合约需要知道她真的有将房子转让给Bob。有几种方法可以做到这一点,但它们都有同样的基本问题。必须有一些可信的第三方来验证物理世界中的事件。
例如,用房子代表以太坊上的不可替代的代币。Alice可以通过币币交换将房子转移给Bob以获得一定数量的ETH。这是问题所在。 Bob需要相信Alice的代表实际上代表了房子。必须有一些合约条件确保他收到的房屋代币就意味着这是他的合法房屋了。
此外,即使政府认同代币可以代表房屋,如果代币被盗,会发生什么呢?房子现在属于小偷吗?如果代币丢失怎么办?房子不能再出售吗?房屋代币可以重新派发吗?如果可以,由谁派发呢?
将数字资产与实物资产联系起来存在一个棘手的问题,无论是水果,汽车还是房屋,至少要在去中心化的环境中。实物资产受您所在地区的管辖,这意味着除了您创建的智能合约之外,从某种意义上将,他们本身就是可被信任的东西。这意味着在智能合约中占有并不一定意味着在现实世界中拥有,普通合同也存在相同的信任问题。需要信任第三方的智能合约扼杀去信任最关键的特性。
即使是电子书,健康记录或电影等数字资产也会遇到同样的问题。这些数字资产的“权利”最终由其他权威机构决定,而数据的获取和调用也需要得到信任。
从这个角度来看,合约条件只是贬低了法官的属性。您实际得到的不仅仅是机器执行和简化执行,而是必须使用主观性和人类判断风险对所有可能结果进行编码的复杂性。换句话说,通过使合同变得“聪明”,使得写作变得更加复杂,同时仍然不得不信任其它人。
不需要可信数据支撑的唯一可行性的是数字承载工具。从本质上讲,交易的双方不仅需要数字化,还需要承载工具。也就是说,代币的所有权不能需要智能合约之外的依赖性。只有当智能合约包含数字承载工具,智能合约才是真正去信任的。
结论
我希望智能合约比实际更有用。不幸的是,我们认为合约的大部分内容带来了一大堆不需要明确说明的假设和既定的法律。
此外,事实证明利用图灵完整性是搞砸事情并导致各种意外的一种简单的方法。我们应该将智能合约平台标记为图灵脆弱,而不是图灵完备。DAO事件也证明合约的“精神”是隐含信任的,并且比我们意识到的更有助于解决纠纷。
智能合约简直太容易搞砸,太难以保护,太难以实现去信任,并且有很多事情需要太多的外部依赖关系。智能合约唯一真正添加了去信任的功能的地方是那些像比特币等去中心化平台上的数字承载工具。
点评:坦白讲,作者后半部分的观点我理解起来也吃力,我的理解是:ETH提出的智能合约不管是从合约触发条件到最后被执行,实际上并非真的智能,一方面代码的编写是死的,而现实是有太多可能的因素存在,如果合约太复杂,会影响执行力。而编写这些智能合约的人也存在水平不够的问题。同时即便是很复杂的合约也会存在漏洞,这给黑客攻击的机会。另一方面也就代币的问题,首先合约双方需要信任代币,再则代币确实能产生效力。最后一点就是就算合约很完美,但还是满足不了去信任,去中心化的特性,因为在数字世界发生的事情,还是需要物理世界中心化的机构去验证。
温馨提示:
如需对本文转载,请注明原文出处,作者以及转载出处和译者,谢谢配合!!!
早赞声明:为方便早赞、避免乱赞,“BH好文好报群”为点赞者、写作者牵线搭桥,实行“先审后赞、定时发表”的规则,也让作品脱颖而出、速登热门!加群微信:we01230123(天平)