智能合约的局限性有哪些?离真正的“智能”还有多远?
ChinaDeFi原标题:《智能合约的未来发展方向》
除了加密货币,智能合约可能是区块链中被谈论最多的概念。
许多文章都在大肆宣扬智能合约的好处,声称这项技术将颠覆从保险到供应链再到医疗保健的所有行业。
但是,智能合约真的像它们所呈现的那样改变游戏规则吗?
毫无疑问,智能合约会很有用,但重要的是要将现实与炒作区分开来。
为了了解智能合约的应用和局限性,我做了一些深入的研究。以下是我的发现:虽然智能合约技术有很多潜力,但就目前而言,它的成功实施受到技术和法律因素的限制。
理解智能合约
智能合约是基于区块链的程序,一旦相关各方满足了特定的标准,就会执行协议。智能合约使用条件编程来执行一组预定义的操作。
最接近的类比是流行的If This Then That (IFTTT)软件,一旦触发器被激活,它就会自动执行操作。
在将智能合约部署到区块链上之前,开发人员编写指导智能合约运行的“逻辑”。因此,智能合约可以独立工作,不需要外部控制。
智能合约固有的自主性是它们如此吸引人的部分原因。就像区块链一样,智能合约是“无需信任的”,这意味着它们不受第三方控制。也同时意味着该程序可以在没有受信任的中介的情况下执行合约中的条款。
合约是如何运作的?
要理解智能合约在现实生活中的运作方式,就必须理解合约的工作方式。
合约有三个要素:要约、承诺和交易。
假设你和房东签了一份合约,以每周25美元的价格租下一套公寓,租期为两周。合约的三个部分是:
要约
承诺以每周25美元或50美元的价格租下一套公寓,为期两周。要约明确了双方的权利和责任,并进一步表明了双方之间的价值交换。
验收
同意对方提供的条款。在这种情况下,房东同意把公寓租给你两周,你也同意按要价每周25美元支付租金。
交易
双方履行其义务的行为。你付25美元,房东就会给你公寓的钥匙。这可以看作是对合约的履行。
如果你付了钱,但房东拒绝给你钥匙,那就违反了合约。同样,如果你在交了第一周的租金后拒绝支付第二周的租金,你就违反了合约。
根据合约法,如果另一方未能履行其应履行的义务,任何一方都可以向法院提起诉讼。合约允许那些可能相信或不相信自己的人做生意,因为有一个可信的中介(法院)来执行协议。
那么,智能合约是如何适应这种情况的呢?
作为一种无需信任的机制,智能合约不需要中介来执行协议。相反,代码是这里的主要仲裁者。一旦每个部分满足指定的条件,代码或“业务逻辑”自动处理协议中包含的条款。
让我们以计算机科学家Nick Szabo使用的自动售货机为例,他在1994年首次解释了智能合约的概念:
你向自动贩卖机投币,就可以得到一杯饮料。你不需要接线员给你一杯饮料;一旦你付了钱并选择了一种零食,这种机制就会释放它。
那么,智能合约真的只是数字自动售货机吗?是的。但它们显然可以做的事情比处理支付更多,比如为去中心化金融(DeFi)系统提供动力,交换NFT,等等。
智能合约为何流行?
由于智能合约在区块链上运行,它们提供了基于区块链的系统的好处。例如,可以通过区块链监控合约各方之间的交易,从而提高透明度。
智能合约是不可变的,这意味着它们不能被修改。一旦合约在区块链上运行,任何一方(甚至智能合约的创造者)都不能重写规则。
签订合约后试图更改协议条款的事情,对于托管在区块链分类帐上的智能合约来说是不可能的,这使得它对管理交易很有用。
因为智能合约依赖于简单的逻辑(如果x,那么y),它们可以更快地处理交易。智能合约的一个常见应用是保险,支持者认为智能合约可以简化理赔流程,并鼓励更快的支付。
有了智能合约,人们将不需要昂贵的律师来建立协议——至少在理论上是这样。这意味着减少了文书工作和花费在签订合约前谈判的时间。
如果智能合约如此有用,为什么它们会有问题?这正是我们要找出的。
智能合约有哪些问题?
- 依赖外部数据源
智能合约需要信息才能运行。
但是,区块链无法与外界沟通,这给智能合约带来了问题。
为了解决这个问题,智能合约开发者依赖于“预言机”——应用程序从现实世界中提取数据,并在链上提供给智能合约使用。
然而,对预言机的依赖凸显了智能合约的另一个局限性:
我们必须相信预言机能够提供准确的数据,否则智能合约将会产生错误。智能合约在软件开发中容易出现“垃圾输入,垃圾输出”(GIGO)问题。
我们可以通过使用来自不同预言机的信息来解决这个问题,但这只会增加交易成本,因为预言机必须付费。此外,使用来自不同预言机的信息会破坏共识。
请记住,系统中的所有节点必须就合约的状态达成一致,否则交易将被视为无效。当节点从预言机获得不同的信息时,可能无法达成共识。
- 不变性
智能合约的一个问题在于它们的不变性。在区块链中,“不可变性”意味着协议中的规则一旦部署在区块链上,就不能被单方面更改。
虽然这有助于检查可能希望操纵合约信息的不良参与者,但它使智能合约更难使用。
这种严格的系统也使得修复代码中的错误变得困难。如果一个bug碰巧影响了智能合约的功能,开发人员可能无法实施任何解决方案。
- 保密的信息
每个人都可以访问区块链上的所有信息,因为节点保存了区块链历史的副本。同样,这有助于提高透明度和防止欺诈,因为每个人都可以看到数据。
但并不是每个人都希望保密的合约信息公开。这就是为什么法律规定律师不能透露当事人之间诉讼的细节。
可以把它看作是在网页的HTML中隐藏信息。用户不会在他们的浏览器窗口中看到这些信息,但是一个简单的CTRL + U(查看源代码)函数就会显示出来。
智能合约也是如此——任何人都可以通过调整区块链软件来显示合约的完整状态。就这样,所有的私人信息都进入了公共领域。
对于想要完全隐私的企业和个人来说,缺乏保密性是使用智能合约的一大缺点。
- 安全漏洞
像任何程序一样,智能合约经常会产生错误。然而,智能合约和常规程序的不同之处在于,智能合约代码中的错误可能会造成昂贵的影响。
如今,智能合约为DeFi行业提供动力,该行业的价值估计超过1000亿美元。智能合约功能上的一个简单漏洞,就意味着可能会有数百万人因恶意利用此类错误而蒙受损失。
我们不止一次看到这种情况。就在上周,允许用户在Solana和以太坊区块链之间发送和接收加密货币的跨链桥Wormhole被黑客损失了3.2亿美元。
根据Chainlysis的这次故障,黑客利用了桥梁智能合约中的一个漏洞,让他们可以抽干Solana网络中的12万个WETH。这是一系列针对DeFi平台的攻击中最新的一起,这些平台的运作都依赖智能合约。
这并不意味着智能合约的安全性不会随着时间的推移而改善。然而,在真正的硅谷式“fail fast and early”模式中,大多数项目主要关注的是营销和获取用户,而不是解决系统中的问题。
- 简单的操作
当人们听到“智能合约”时,他们会联想到无数可能的应用程序。
代码不能涵盖且不能写入二进制代码的合约中的模棱两可的条款。这是智能合约的另一个问题。
当然,强制执行特定产品的支付和转账的智能合约很容易编程。当你试图加入“货物必须完好无损地到达”或“货物必须在合理的时间内到达”这样的条款时,问题就开始了。
如何确定“良好状态”的含义或计算“合理的时间”并将其写入代码?
简而言之,在需要对协议中的条款进行解释的情况下,智能合约几乎毫无用处。然而,它们可以用于更简单的应用程序,如加密货币交易,其中的数据(价格数据、签名、地址等)在区块链上,并且术语很容易被理解。
智能合约需要更智能
尽管智能合约存在局限性,但它们也有自己的用途。但是,在区块链梦想者的梦幻般的愿望成为现实之前,他们需要大规模的发展。
开发人员必须努力解决智能合约的最大问题。例如,一个允许修改智能合约的协议——前提是各方都同意——将会改善这项技术的应用。
也许随着时间的推移,智能合约会变得真正智能,并实现专家确定的所有可能性。就目前而言,智能合约要改变世界还有很长的路要走。
Source:https://hackernoon.com/uncover-the-dark-side-of-smart-contracts