1. 智能合约的反思——智能合约真的智能吗?
Is smart contract really smart?
首先我们必须了解智能合约里面并没有用到任何人工智能的技术,所以有人认为应该把它叫做自动合约,按照事先写好的代码,自动执行某些操作,现实世界当中,有什么自动合约的例子吗?ATM 取款机可以看作物理世界上的一个自动合约,按照事先规定好的逻辑去做某些事情。所以智能合约其实并不智能,而且挺笨的,一旦写好了之后就改不了了,就只是作为代码合同。(Smart contract is anything but smart.)
2. 不可篡改性是把双刃剑
Irrevocability is a double edged sword.
一般来说我们提到区块链的不可篡改性都认为这个是区块链的一个优点,很多区块链的应用都利用了不可篡改的特性,比如防伪、溯源。但是从The DAO事件当中,可以看出不可篡改性其实是一把双刃剑。一方面,不可篡改性增加了合约的公信力,但另一方面,不可篡改性也意味着如果规则中有漏洞,我们想要修补这个漏洞,想软件升级都是很困难的。
The DAO的盗币事件有传闻说,The DAO的开发团队在发生盗币事件前几天已经收到了有关智能合约中存在安全漏洞的消息,但是没有来得及发布更新后的软件。这个如果是对于一个中心化的系统,大家可能会觉得是很难想象的,如果你发现你的软件中的安全漏洞,你干嘛不及时发布一个安全补丁呢。但是问题在于在区块链的世界里,你怎么发布补丁,软件更新需要硬分叉来实现,还需要得到大部分矿工的支持。无论是比特币还是以太坊,硬分叉都不是随便搞的,这次以太坊搞的硬分叉,最后就造成了两条平行的链,而且要搞硬分叉要说明理由,否则别的矿工为什么要升级你的软件,而你一旦说明理由的话,那就会把安全漏洞的信息泄露出去,那么有恶意的攻击者,在还没有来得及升级软件之前抢先发动攻击,这些都是区块链上不可篡改性带来的一些问题。