智能合约的定义的表达方式有很多种,在《区块链社会》中,“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。”从本质上讲,这些自动合约的工作原理类似于计算机程序的if-then语句。
上面的描述已经足够简单,也很容易理解。我的问题是当年尼克·萨博为什么会命名为智能合约而不是自动合约(auto contract)呢?我们知道智能合约中的智能(smart)并不是人工智能(Artificial Intelligence, AI),而是普通的“聪明的,灵活的”意思。我来猜想一下。
智能合约提出的时间是1994年,互联网泡沫是在1995年至2001年间,在此前计算机技术还没有得到广泛的应用,如果有一台售货机,根据尼克·萨博的理念实现了自动售货:也就是你选择商品,将相应价值的纸币或者硬币放进去,然后售货机将商品吐出来给你,如果你纸币的面额比较大,还给你找零。这家伙怎么这么聪明呢,在1994年,那时你碰到了,说不定会上去抱着合影了。另外个人认为auto更指具体的事情,smart更抽象一下,更通用,能赋予使用这种合约的事物一种能力,所以选择了smart。
如果从《区块链社会》中的定义来理解,其实生活中很多的应用场景都能找到智能合约的影子。比如地铁,以北京地铁为例,北京地铁的智能合约内容是:
6公里(含)内3元;6公里至12公里(含)4元;12公里至22公里(含)5元;22公里至32公里(含)6元;32公里以上部分,每增加1元可乘坐20公里。使用市政交通一卡通刷卡乘坐轨道交通,每自然月内每张卡支出累计满100元以后的乘次,价格给予8折优惠;满150元以后的乘次,价格给予5折优惠;支出累计达到400元以后的乘次,不再享受打折优惠。
这个智能合约的双方是地铁公司和乘客,一起遵守的协议是上面的内容。这个合约的价值转移就是将乘客从一个地儿带到另外一个地儿,乘客消费的token是公交卡里的数字,token怎么来?通过法币向地铁公司购买(是不是类似于场外交易)。
如果是这样,那我们生活中有很多实现了智能合约的例子。且慢,我们不能忽略了智能合约还有三个要素:自治、自足和去中心化。
自治表示合约一旦启动就会自动运行,不需要它的发起者进行任何干预。其次,智能合约能够自足以获取资源,也就是说,通过提供服务或者发现资产来获取资金,当需要时也会使用这些资金。最后,智能合约是去中心化的,它并不依赖单个中心化服务器,而是分布式的,通过网络节点来自动运行。
我们再从这三个要素来推一下地铁的智能合约。自治是满足的。自足也满足,提供乘车服务,收取指定的费用,地铁公司可以使用这些费用来进行地铁的运维。去中心化也满足,一台闸机坏了,可以换另外一台,不影响合约的履行。
好,关于智能合约的理解,我说完了。如果你有不一样的看法,可以留言讨论。