在以太坊和其他智能合约平台的兴起,比如Wave和Neo,对大部分比特币的拥护者来说是非常困惑的。他们错失了巨大收益的同时,新的投资者现在仍然在炒作中获利。现在Rootstock都已经出现了,我想研究“图灵完备的智能合约”到底要干什么。现在已经有相关应用了吗?还是说都只是嘴上说说?
什么是智能合约?
智能合约是由尼克萨博在1996年首次提出的概念。更确切的说,它是出现在比特币时代之前的,他对智能合约的定义如下:
一个智能合约是一套以数字形式定义的约定,包括合约参与方可以在上面执行这些约定的协议……智能合约的基本思想是,各种各样的合约条款……可以嵌入到我们使用的硬件和软件中……从而使得攻击者需要很大的代价去攻击。
因此,尼克萨博设想了一种能够自动执行的智能合约,而且攻击它的代价是昂贵的。很显然,当区块链出现的时候,人们就已经开始了努力尝试用区块链来实现这种可自动执行且攻击代价昂贵的智能合约。毕竟,PoW共识算法之下回溯更改区块中的一笔交易,代价是巨大的;而且可以提供自动执行的审查交易进入以太坊等。他们保证了图灵完备性,意味着什么都可以执行。
所有这些新的智能合约的平台,为用户提供了一个新的去中心化的世界:编写和执行从不停止的代码成为可能,这就导致了未来各种各样的创新,比如“去中心化的优步”、“去中心化的爱彼迎”以及“去中心化的黑暗网络市场”。或者更进一步来讲:去中心化的计算。以太坊试图成为“世界的计算机”。你可以看下面以太坊官方的视频,以了解更多关于以太坊能实现的东西:
视频链接:https://www.youtube.com/watch?v=j23HnORQXvs
问题1 :现实资产
但是当很多人阅读尼克萨博的文章时,很明显的感觉到,尼克萨博对“为了把现实世界中的资产和行为与智能合约联系起来,可信人和公证人是需要的”是非常清楚的。你不能把强迫一个人去使用区块链来把他的车通过软件来交给他。你不能强迫一个人使用区块链根据软件定义规范来创建一个特定的应用程序。你不能强迫你的毒贩来用区块链来发给你那些你已经支付的大麻。这是不可能的。在这些情况下,显然需要一名仲裁员。交易的双方都需要信任第三方,如果双方都不同意那么就需要它来进行仲裁。
在这些情况下,当现实世界的资产或服务转化成数字货币时,很明显“智能合约”不能增加很多,他们唯一能做的就是为联合账户提供理论。在大多数情况下,这就是一个简单的“2/3的多重签名”:买方、卖方和受信的第三方创建一个联合账户。当买方收到货物时,他会签署交易,卖方收到钱时,也会签署交易。如果买方不想签署交易,因为他认为产品不好或者服务不到位,受信的第三方就可以进行仲裁,如果他认为合适的话,可以退还买方(部分)金额。如果卖方可以证明他确实做到了事前已达成协议,仲裁员可以决定绕过买方并把钱寄给卖方。
但是,等等……我们是要干什么来着?这难道不可能在比特币上持续几年吗?是的,这意味着整个用例在比特币上是可能的。那这样看来,以太坊以及其他的智能合约平台没有添加任何有用的东西。区块链看起来并不需要一个图灵完备的平台。
问题2:可信节点
那运行网站或者相关平台呢?现实世界中没有任何资产应用到这些项目中。当然,这不仅仅是货币交易对吧?好吧,我们这样想,我们想在以太坊这种世界计算机上运行一个网站,这样这个网站就能“永不停歇”。这听起来相当模糊。它在实际中意味着什么呢?网站的创建者把网站的代码放到区块链上,所有的节点都下载代码,打开网站。如果每一个节点都需要下载所有的网站,这将会造成巨大的带宽和存储消耗。这看起来非常的低效。如果你不需要这个网站,那你为什么还为了它而下载所有的代码?通常来讲,用户只从网站服务器上下载他们需要的文件,并在浏览器中打开它。“图灵完备的智能平台”所尝试的是另一种方式。
好吧,我们假设只有某些节点下载了所有网站的内容,其他节点只下载了部分的内容。我们现在部署的是一种分布式的服务器,任意一个用户都可以连接到它并获得网站。用户本身不会运行一个全节点来连接到他们自己版本的网站。但是,运行一个全节点的动机是什么呢?你只能通过执行代码来获得奖励,而不是通过存储和广播大量的数据。比方说,智能合约平台编写了一个合约,让用户为每一次发向节点的数据请求进行支付。(请注意,这也需要所谓的分片,因为当只有某些特定的节点可以对请求数据应答时,也只有这些节点就可以对智能合约验证有效性。)用户是如何确定他得到的是一个正确的而不是低级甚至是错误虚假的版本?除非用户使用原始服务验证数据,否则无法解决此问题。所以用户要么盲目的信任他连接到的节点,要么……
他就连接到在区块链上发布网站的原始节点。那么我们又回到了一开始……很明显,连接到为网站服务的中心服务器上是更加有效的。如果你想要拥有一个永不停歇的网站,那么就把它当做一个在Tor或I2P网络上运行的隐藏服务……