基于量子链的 Dapp 开发
以太坊和智能合约
以太坊和智能合约

这节的主角是智能合约。我们来介绍一下传统的智能合约的局限性,区块链是如何解决这些问题的。为啥现在最流行的智能合约平台是以太坊区块链,以太坊的具体优势有哪些。

当智能合约遇见区块链

智能合约这个概念在区块链出现之前就有了,它和现实世界的合约其实区没有本质却别,只不过智能合约是被翻译成了代码的合约,是数字化的,合约的执行也是由计算机自动完成了。扫码打开一个共享单车,我们就签署了一份智能合约,合约的内容我们心知肚明,半个小时一块钱。那么半个小时真的过去后,这个扣款操作时不需要人为参与的,这就是所谓的合约是自动执行的。另外一个常见的例子就是网络众筹,项目方设置一个目标金额,比如是三万美金。到了期限,目标达成,项目方就开始项目,没有达成就退款给投资人,协议的执行也是自动化的,也是智能合约。但是这些还都只是传统意义的智能合约。跟我们写 Dapp 的时候所说的智能合约是有区别的。

最大的区别就是,今日被人们热吵的智能合约,是在区块链条件下的智能合约,是去中心化的智能合约。传统的智能合约有它天生的一些弱点,首页一点就是成本高,需要二十四小时在线的服务器,需要坚不可摧的数据库,很多时候也需要强有力的公司资金实力做背书,这些不是个人或者小企业能够负担的。再有一点就是可信度低,没有强大的信誉做保证,谁会相信对方不会违约呢。

这两个问题,在智能合约拥抱区块链之后就完美解决了。首先针对成本高的问题,由于区块链的底层机制是整个网络共同维护的,我们要部署智能合约到网上,只需要付很小的一部分手续费即可。底层达成共识的成本是整个网格上的所有用户分担的。而且区块链天然就是二十四小时在线,存放到区块链上的数据,就拥有了几乎和比特币类似的安全级别的保证。其次,同时也是最重要的就是可信度高,任何人都可以把自己写的任何形式的合约部署到区块链上,合约条款是合约方自己达成共识的,同时一旦写入就不能篡改了,到了时间会自动执行,大家都很放心。

以太坊

比特币之后,2017年又火了另外一个区块链,叫做以太坊。以太坊的每一个区块上,不仅仅能跟比特币一样存交易,而且还能存代码,嗯,你可能猜到了,这些代码就是智能合约。这些代码想要执行,底层就要有个运行环境了。就像 JavaScript 要运行要依赖 nodejs 或者 v8 引擎 ,Java 运行需要 JVM ,以太坊的智能合约是一种名为 Solidity 的以太坊自创的语言开发的。而运行这种语言的环境就是 EVM ,全名叫以太坊虚拟机。所以,也可以说以太坊是运行在区块链上的虚拟机。

如果说以比特币为代表的第一代区块链的核心任务是存放交易。那么以以太坊为代表的第二代区块链上不仅仅能存交易,而且能执行代码。如果说交易数据是静态的,那么代码就是动态的了。比特币更像一个公开的数据库,以太坊像一个公开的计算机。人们认为这个升级能让区块链的各种优势得到更为充分的发挥,所以以太坊火了起来。

以太坊也是基于 POW 也就是工作量证明的方式的,也有自己的加密货币,名字也叫以太坊。现在是2018年,目前以太坊是紧随比特币之后的总价值第二大区块链网络。

连接智能合约和真实世界

智能合约是活在链上的,可以说对它跟真事世界之间有一道鸿沟。

仔细想一下,其实智能合约的在大部分时候,都跟现实世界中发生的事件紧密挂钩的。例如,你和我定一个简单的打赌合约,如果明天德国队赢了,你给我一个以太坊。反之,我给你一个以太坊。这个打赌合约,其实真正执行起来是有挑战的。那就是如何确定明天的比赛结果。这种链上世界和真实世界的联通问题目前还没有确定的答案。一种简化的情况是,你和我都信赖国际足联,而国际足联恰好又提供明天比赛结果的 API 数据,这样我们就可以比较方便的用这个 API 数据作为合约触发的条件写到合约中了。

智能合约之所以安全,就是因为合约代码是受到整个区块链的所有参与者共同监督的,或者说是大家形成共识的。而如果合同的最终裁决条件是依赖于一个第三方的完全独立的 API ,这样安全性就明显降低了,如果国际足联网站出了问题,那合约的执行也就出了问题。所以,另外一种方式是把数据的来源变成多个,例如合约中可以把多家机构的 API 数据,直播录像的人工智能分析结果,足球场周围物联网传感器数据,在场观众的社交媒体数据,这些都作为判断条件,最终保证合约的安全性。随着我们的真实世界越来越数字化,可以信赖的数据源会越来越多,结果也会越来越可信。

但是整个过程还是比较复杂的。所以现在已经有很多公司专门在提供连接链上世界和真实世界的数据服务了。相关一个概念叫预言机,英文 oracle 。大家可以去了解一下。各家公司的目的都是保证自己提供的数据是诚实的,是大家能达成共识的。但是方式却各有不同,例如,可以通过激励机制让见证人投票等等。关注的领域也有不同,例如关注 API 领域的 oraclize.it ,关注银行数据领域的,关注自然世界数据的。

智能世界和真实世界连接的越平滑无缝,智能合约的威力也就越强。

总结

这一节内容就是这些了。来总结一下。说起区块链,不能不聊比特币。同样,要是没有以太坊,智能合约也不可能这么快火起来。首先,咱们介绍了为何智能合约和区块链的结合如此重要。然后,详细介绍了以太坊的特点,例如他的 EVM 虚拟机上可以运行功能完善的 solidity 语言,而正是有这些优势,才带来了智能合约在区块链领域的这一轮的爆发。最后介绍的是真实世界和链上世界的联通,涉及了预言机的概念。