笔者在看一些区块链应用时,往往会看到「我们可以透过智能合约,实现XXX自动化功能」类似的字眼,黑人问号脸?难道不是智能合约就不能自动化吗?
其实绝大多数的人对智能合约的理解是错误的,大部分的智能合约既不智能,也不是合约。
本质上,智能合约就是「被部署在区块链上的程序」,跟一般程序最大的差别,在于会被每个全节点储存并执行,被触发执行完毕后,其执行的结果(称为state)会被存到区块链上。你可以把它想像成大家一起做一模一样的事情,得到一模一样的结果,然后存起来,就这么简单。
对于公链来说,智能合约比较接近「persistant script」,这是一种一旦条件被触发,就会强制执行的代码。由于部署在去中心化区块链上,代码是透明公开的,且一旦部署,这段代码就永久存在在区块链上了,理论上无人能摧毁这段代码(除非硬分叉)。
对于联盟链或私链来说,智能合约比较接近大家约定俗成做某件事情的一种惯例,说白了就是一种形式标准化的作业流程,只是用程序去实现它。好处是降低沟通成本,让大家可以在一个封闭的环境内用同样的协定处理特定业务,而且处理的结果是同步给大家知道的。
以上两种,都不一定是真的合约,因为跟合约互动的人不见得有什么权利义务,其执行的结果也不见得有法律保障,用合约一词去概括解释区块链上的程序,完全就是一种定义上的误导。
连以太坊创办人V神都曾经公开忏悔,他很后悔当初采用智能合约这个词:
所以说到底,智能合约根本没这么神奇,中心化程序一样也可以做到自动化,它是为了达成某种特殊手段才会需要使用的程序,大家清醒点,好吗?
小结
讲了这么多,聪明的读者应该可以意会到,区块链并不是万灵丹,只有在一些特殊的领域,区块链才能发挥其价值,绝大多数的时候,用中心化数据库会是更有效的选择。
点击关注币海启行微信公众号,了解更多