尼克•萨博关于智能合约的工作理论迟迟没有实现,一个重要原因是因为缺乏能够支持可编程合约的数字系统和技术。区块链技术的出现解决了该问题,不仅可以支持可编程合约,而且具有去中心化、不可篡改、过程透明可追踪等优点,天然适合于智能合约。因此,也可以说,智能合约是区块链技术的特性之一。
智能合约(图片来源于网络)
区块链前所未有的把网络安全,软件安全提高到了一个全新的层面。之前所有的软件都很难直接和资产打交道,哪怕是银行的支付系统,牵扯到付款的时候也最多是往数据库里面写一笔转账请求,然后由银行的其他人工系统或者安全系统更高级别的审核机制来完成。在区块链里面,无论是编写智能合约,还是写钱包APP,都是直接和用户的资产打交道,一行代码出问题,可能钱就没了,我说的没了是永远都找不回来了,这种感觉还是非常奇特,可能大家只有真正接触到类似的工作之后才会有比较深刻的体会,需要思考很多之前不需要思考的安全问题。
智能合约是什么?能干什么?目前我们对于智能合约的探索还比较浅,主要是智能合约开发的基础建设还比较早期,很多基础的环境不具备,所以图简单的做法就是用中心化的服务器来辅助处理,也有通过一些比较绕的方法来实现完全去中心化的应用。但是要记住,无论是哪种处理方法大家都还处在摸索阶段,我们并不知道智能合约能够实现什么,也不知道智能合约的边界在哪儿,我们一边在研究智能合约本身,另一方面也在通过完善公链本身来让智能合约具备更多可能。
区块链安全性(图片来源于网络)
智能合约究竟有多早期?简单点说,目前都没有一个比较成熟的方法知道你的智能合约什么时候被执行了。因为当你发起交易之后,要等到该笔交易被打包进入最新的一个块里你才知道这个合约执行成功了,但是你又无法确认这个最新的块被多少节点确认过,所以只能用比较人工的方法来判断是否执行成功了,例如说你发起一笔调用智能合约的交易,然后就一直去取最新的块,看看哪个块里面包含了这笔交易,如果发现有一个块里面包含这笔交易了,然后再去看看这个块有多少个节点确认过(EOS的DPOS共识这方面会稍微好一点)大概其有那么10几个节点确认了基本上可以认为这次智能合约的调用已经成功了!通过上面这个例子,大家可以看出,只是一次简单的对于智能合约的调用目前都无法很直观的判断成功或者失败,那么更不用说里面的应用本身了。为什么要用区块链技术实现智能合约?其实我们都不知道智能合约能够实现什么,以及智能合约的定义是什么。
如果说区块链上存储的有可能是未来的一种资产形式,那么该资产一定需要通过某种途径流通,广义上讲,该类资产的任何操作都需要通过智能合约来进行,因为除了智能合约之外的其他任何形式对于资产的操作都是不透明的。包括比特币的转账,本质上也是智能合约的执行。所以智能合约的第一个刚需就是:任何链上资产的操作只能通过智能合约完成。
顺着扩展开来,如果我们认定区块链上存储的是未来的一种资产形式,那么该种资产会有哪些基础特性以及高级特性都是由智能合约编写的规则来决定的。比如说,发行的规则,流通的规则,回收的规则,持有的权益,这些都是通过智能合约来决定的。所以并不是通过区块链技术来实现智能合约,目前的语境下比较正确的说法应该是,区块链和智能合约本身是无法分离的,区块链没有智能合约是无法运转起来,智能合约离开了区块链也无法单独来探讨。
区块链(图片来源于网络)
那么智能合约究竟可以做什么呢?其实智能合约能够做很多的事情,因为从技术本质上来讲,智能合约就是一个阉割了的虚拟机,主要阉割在I/O,以及一些系统功能,目的就是让这个虚拟机的运行环境比较干净和安全,不会被其他系统影响到,例如网络上的数据,硬盘上的数据,这些数据是要禁止和虚拟机进行交互的。但是智能合约如果纯粹只是从阉割了的虚拟机来思考他,能做的虽然很多,但是局限性就比较大,要深入的理解智能合约能够做什么,需要开始思考区块链能够做什么,从这个更大的层面,从资产所有权的角度,从资产流通的角度,从广义的资产的定义的角度来思考,可能会收获更多有意思的关于智能合约的理解。







