7月16日,在由石榴财经主办的B16区块链思想节上,联动优势首席架构师刘胜挑战了当前普遍认可的“以太坊为代表的图灵完备的智能合约” 区块链2.0的发展方向,在他看来,图灵完备的智能合约内涵了极大的复杂性,导致不安全、效率低,不适合比较严肃的金融场景,绝对要慎重使用。
以下为刘胜讲演内容精编,由整理。
我今天讲演的主题是《图灵完备的智能合约是不是必须的?》,我们在讲区块链的时候,会把以比特币为代表的数字货币称为区块链1.0,以太坊为代表的智能合约称为区块链2.0,目前3.0的定义还很模糊,你可以看到很多区块链的项目称自己是区块链3.0,但其实都没讲清楚。大家注意到了吗,这里面其实有一个隐含的假设,它默认了区块链2.0是以图灵完备的智能合约为代表的区块链,但是我今天要挑战这个概念。
什么叫图灵完备?
如果我们的程序或者系统能跟通用图灵机互相模拟、运行,使得一切可计算的东西都能够计算,这就是通用图灵机。图灵机本质上是一种泵需,它能够把输出的集合以及当前状态转化成输出的集合以及下一个状态,它跟我们正常的函数有什么不一样的地方呢?就是它有状态,它有记忆,很多情况下说韭菜是没有记忆的,所以老是被割。通用图灵机有一些核心的组成部分,比如说我们看到那些程序,它有一个CPU,然后CPU里运行一些程序、逻辑、代码,输出输出集合,它必须要有一个内部状态的存储器,当这些东西都具备了之后,它就是一个通用的图灵机模式,其实从某种意义上来说,人也是一种图灵机的变种。
什么是智能合约?
第二个概念,智能合约。尼克萨博在1996的论文里发表了智能合约的概念,智能合约本质上就是一系列的承诺,而且是以数字化的形式来展现。还有一系列补充协议,确保参与方都能够执行这个承诺,可知性的,这就是智能合约。
我们把智能合约和传统合约做类比,传统合约的条款是给人看的,而智能合约是给机器看的,让机器可读,它是数字化形式的合约。传统合约可能是纸质的合同,仅仅是信息和内容,而智能合约不仅仅是条款、内容、信息,还有这个合约怎么去执行,可知性的一个代码或者系统。其实核心就是这些条款能够嵌入到软硬件里面去。更进一步的是智能资产,智能化资产就是完全把合约内置到资产里面去了,比如智能锁、共享单车等等,由一个集中的公司来控制的资产是单一的。如果在一个去中心化的共享经济体系里面,资产本身有一个独立自主的操作能力,我付了租金,它就自动的把智能锁打开了。
为什么图灵完备的智能合约不适合区块链?
图灵完备的智能合约的典型模型,就是它能够接受输入的交易、事件,也可以输出交易、事件,它内部既保存了它的价值,也保存了它的状态,所有的这些东西都建立在区块链的可信的分布式账本基础上。
那么图形完备这么多,它就是万能的吗?有利必有弊,它的利是什么呢?方便、灵活,对开发人员很友好,很容易写出一个智能合约。但是它的缺点呢,由于对开发人员友好,它内涵了极大的复杂性,这个复杂性不是说这个区块链本身复杂,不是说这个智能合约复杂,而是说它可以容纳很复杂的东西,而且它需要有一个很复杂的东西来执行。复杂性就带来一些恶劣的效果,可能不安全,可能低效。
第一个,区块链执行智能合约的时候是低效的,为什么?因为区块链执行不是执行一次就够了,它需要所有的节点都把智能合约执行一次,比如现在以太坊上万个全节点,都要把这个智能合约从头到尾执行一次,非常低效。第二个,容纳复杂性的时候,它的内部执行也很难,我们算一个哈希,你直接算哈希和用智能合约算哈希,中间效率可能差50倍,接近两个数量级别。第三个,最大的问题就是它的安全性,它的风险事件虽然不是特别多,但是涉及的金额巨大,很多基于区块链自身安全机制的事件,主要的问题就在于智能合约。
所以我们从本质上看智能合约,应该理解为一种预制的规则。从合约上,它是法律合约吗?不是,它是预制规则。从智能上,它非常智能吗?不是,有限的可编程性。从完备性上,它不是图灵完备的,更多的是采取非图灵完备的方式,比如一个法律条文,里面有无限的循环肯定是不行的,法律条文或者规则越清楚、越明确、越简单越好。从交互性上,它也不适合访问外部参数,它不是一个节点去执行,而需要上万个节点都去执行。
我们通常有两种思维模式,一个是互联网行业的思维模式,一个是金融行业的思维模式,互联网的思维模式,我们叫预见问题,快速迭代,来了什么问题我解决就行了。金融行业最大的问题是要确保合规安全,每一个场景,每一个事件都要有应急处理预案,你不可能说未来会发生什么问题我不知道,怎么解决我也不知道,这种系统是绝对不能上线的。图灵完备的智能合约引入了太多的不确定性,它不适合比较严肃的金融场景,绝对要慎重使用。
根据我们的实践经验,在金融场景上需要什么呢?要限制、要隔离,图灵不完备,更安全、更可控。区块链是不可篡改的,而图灵完备太复杂,就有可能出漏洞、木马或者安全隐患,这就是自相矛盾的。
所以我们需要重新理解智能合约,它运行在区块链之上,是需要多方自主执行的,它是一个预制规则,而不是无限制的智能,它核心的目的是什么?是对链上的交易做检查、做限制,在这种场景下,它不需要太智能的,不需要图灵完备。
我的分享就到这儿,谢谢大家!