快捷导航
币博士社区 首页 技术交流 查看内容

智能合约或许并没有我们想象中的那么厉害

2018-12-20 13:47| 发布者: admin| 查看: 92| 评论: 0

摘要: “智能合约”的一词起源于1994年,由计算机科学家、加密大师尼克·萨博(Nick Szabo) 在其发表的《智能合约》论文中第一次提出,就像“区块链”,“人工资能”和“云计算”这些的词汇一样,“智能合约”概念出来之后 ...
“智能合约”的一词起源于1994年,由计算机科学家、加密大师尼克·萨博(Nick Szabo) 在其发表的《智能合约》论文中第一次提出,就像“区块链”,“人工资能”和“云计算”这些的词汇一样,“智能合约”概念出来之后被大肆炒作一番。


一、什么是智能合约

关于什么是自能合约,百度百科是这么定义的:智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。

正常生活中,我们常见的合同是两个或更多方之间的协议,并且用合同来约束未来的制定的必须双方或多方遵守的规则。比如张三可能会向李四支付一些钱以换取李四房子的使用权(租房合同)。小明可能会同意修复小红的汽车未来可能会发生的任何损坏,以赚取小红每年支付的保险金(车保)。

“智能”合同的不同之处在于,条件由计算机代码评估和执行,使其在无需信任情况下,自动执行合约条款。因此,如果张三和李四商定,两个月后张三需要向李四每个月支付1000元租金,此时,一些预编好的代码可以确定条件是否属实(此时的时间是否距离商定的时间已有两个月)并执行(从张三账户中每个月汇款1000元到李四张华),而不给任何一方提供退出的可能。

智能合约的核心要素在于它具有无需信任的执行力。话句话说,无需依赖第三方来判定各种约定条件是否满足,程序代码会自行判断。一个聪明的合同执行应该及时和客观地发生的事情,而不是依靠另一方兑现他们的言论,甚至依靠律师和法律制度来纠正事情。

智能合约的承诺包括:
1.代码自动执行,去信任并且公正地执行合约
2.在合约创建,合约执行及合约执行中都无需中间人
3.干掉中介机构

这些炒作在一定程度上是值得肯定的,毕竟如果我们无需依赖第三方就可以保证公正准确地执行合同约定,那么许多事情处理起来就会相当高效。


二、智能合约只是花瓶

既然使用“智能”这个词来修饰合约,也就意味着这些合约与生俱来就具备了智慧。合约的智能之处体现在“不需要对方的合作来执行合同”。一个“智能”的合约会把没付房租的人,拒之门外,而不是必须赶出没有付款的租房者。商定后果的执行,使智能合约变得强大,而不是合约里面的东西变得智能。

真正智能的合约会考虑到所有情况发生的概率,合同精神表示,即使在事情发展到最黑暗的情况下,也要做出公平的裁决。换句话说,一个真正聪明的合约就是一个非常好的判断。相反,在这种情况下,“智能合约”根本不是智能的,它实际上是基于规则的,不能考虑任何次要考虑因素或法律。换句话说,使用智能合约无需信任,但是意味着我们面对事情没有任何商榷的空间,这会带来下一个问题。

三、智能合约其实很难

由于以太坊的营销,人们错误地认为智能合约只存在于以太坊中,实际上并非如此。比特币从2009年开始就有一种非常广泛的智能合约语言,称为Script(脚本)。智能合约早在1995年就存在于比特币之前,比特币的智能合约语言与以太坊的区别在于以太坊是图灵完备的。也就是说,Solidity(ETH的智能合约语言)允许更复杂的合同,但却使它们更难以分析。

复杂性会带来一系列后果。虽然复杂的合约可以允许更复杂的情况,但复杂的合同也很难确保,即使在正常合约中,合约越复杂,执行越难,因为并发症会增加更多的不确定性和解释空间。通过智能合约,意味着处理合同可以执行的每种可能方式,并确保合约符参与合作者的最初意图。

图灵完备环境中的执行非常棘手且难以分析。保护图灵完整的智能合约相当于证明计算机程序代码没有bug。我们知道这很困难,因为现有的几乎所有计算机程序代码都存在bug和漏洞。

写正常合约,需要多年的学习和非常艰苦的条形考试才能胜任。智能合约至少需要这种能力水平,但目前很多都是由不了解其需要安全性的新手撰写的。从各种已被证明存在bug的合约中可以清楚地看出这一点。

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

以太坊的解决方案是将责任放在智能合约编写者身上,合约编写者需要确保合约符合他们的意图。

四、智能合约不是真正的合约(至少在ETH上)

虽然在理论上,将保证合约的责任留给程序员听起来很好,但在实践中,这已经产生了一些严重的集中化后果。

以太坊推出了“代码就是法律”的想法。也就是说,以太坊的合同是最终的权威,任何人都无法否决合同。这个想法是向聪明的合约开发者表明他们是独立的。如果你搞砸了自己的智能合约,那么从某种意义上说,你应该承担它带来的后果。当DAO事件发生时,这就停止了。

DAO代表“分散的自治组织”,并在以太坊创建了一个基金,作为展示平台可以做什么的一种方式。用户可以向DAO存款,并根据DAO的投资获得回报。当ETH交易价格在20美元左右时,DAO在ETH筹集了1.5亿美元。这在理论上听起来都不错,但是有一个问题。代码没有得到很好的保护,导致有人找到一种方法,来盗走DAO的资金。

许多人把盗走资金的人当作“黑客”。从某种意义上说,“黑客”找到了一种以不是创作者意图的方式从合同中取钱的方式,这是事实。但从更广泛的意义上讲,这根本不是黑客,只是有人利用智能合约中的某种方式来发挥自己的优势。这与注册会计师找出税收漏洞,以节省客户资金的方式并没有太大差别。

接下来发生的事情是,以太坊决定代码不再是法律,并将所有进入DAO的资金还原。换句话说,合约编写者和投资者做了一些错误的事情,以太坊开发商决定将他们拉回来。

这一事件的后果已有详细记录。以太坊经典诞生了,保留了DAO,并保留了“代码是法律”的原则。此外,开发人员开始回避使用以太坊的Turing-completeness属性,因为它已被证明难以保护。ERC20和ERC721标准是以太坊中最常用的智能合约模板,重要的是,这两种类型的合约都可以在没有任何图灵完整性的情况下编写。

五、智能合约只能作为数字承载工具

即使没有图灵完整性,智能合约听起来也不错。毕竟,没人喜欢不得不上法庭,才能获得合理地属于自己的东西。是不是比普通合同更容易使用智能合约。

例如,智能合约可以使用于房地产行业。Alice可以通过智能合约证明她拥有这所房子,Bob可以轻松卖买房子。没有房产证,无需信任,机器快速执行,无需法官,官僚或产权保险的问题。听起来很棒,对吗?

首先,中心化执行智能合约并非完全的无需信任。您仍然需要信任中心化机构的执行,无需信任是关键特性。为了使智能合约真正无需信任,你实际上需要的是一个去中心化的平台。

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

这被称为“ Oracle问题 ”。

当Alice将房子转移给Bob时,智能合约需要知道她实际将房子转让给Bob。有几种方法可以做到这一点,但它们都需要面对基本问题:“必须有一些值得信任某些第三方来验证物理世界中的事件。”

在去中心化的环境中,无论是水果,汽车还是房屋,将数字资产与实物资产联系起来是一个非常棘手的问题。实物资产受您所在地区的管辖,这意味着除了您创建的智能合约之外,它们在某种意义上信任某些东西。这意味着在智能合约中占有并不一定意味着在现实世界中拥有,并且遭受与普通合同相同的信任问题。信任第三方的智能合约消除了无需信任的特征。

六、结论

我希望智能合约可以应用在实际生活场景中。不幸的是,我们认为合约的大部分应用带来了一大堆假设和既定的判断方法。

此外,事实证明利用图灵完整性是一种简单的方法,来搞砸并导致各种意外事件。我们应该将智能合约平台标记为图灵脆弱,而不是图灵完备。DAO事件也证明合约的“精神”是隐含信任的,并且比我们想象的更有助于解决纠纷。

智能合约太容易搞砸,太难以保护,太难以实现无需信任,并且有太多的外部因素。智能合约实际上增加信任度的唯一真实地方,是比特币等去中心化平台上的数字承载工具,因此,事实上,智能合约并没有我们想象的那么强大,也不是预想的那么厉害,毕竟离应用到现实生活场景中还有很长的路要走!

鲜花

握手

雷人

路过

鸡蛋
本文如有侵权行为,请及时联系站长删除,站长QQ:1562691348

最新评论

Copyright   ©2018-2019  币博士社区  Powered by©币博士  技术支持:Discuz X3