科普 | 非技术宅的区块链简介:3.智能合约
这篇推送是区块链技术系列文章中的第三篇,在该系列中,我想给出一份非专业性的介绍。在第一篇推送中我关注的是共识,在第二篇中我解释了区块链是如何运行的。
智能合约是围绕区块链技术的热忱的一个重要部分,所以在这篇推送中我将解释智能合约的本质。但是,首先,让我们来快速扼要地回顾一下在我的上一篇推送中我为解释区块链而使用的魔法类比。一个公有区块链可以想象成这样:
● 同样一份共识被书写在一叠被附魔的的文档上。
● 任何人都可以通过拥有这些文档中的一份来参与维护这一共识。
● 规则指定了你可以在文档中做出的更改。
● 任何对一份文档的有效更改都会自动应用到所有其它文档上。
这些魔法特质导致了每一位参与者都拥有一份对相同共识的一模一样的备份,即便该共识经历着持续不断的变更。
上文的魔法类比描述了遵循一系列规则的一组魔法文档(区块链)。不同组的魔法文档拥有不同的规则,这些规则明确了什么样的更新是有效的。最早的一组魔法文档就是所谓的比特币(Bitcoin),这组文档服从的规则包括:
每一份被施过魔法的文档都包含一份清单,记录着所有帐户和它们相应的余额。
人们拥有账户,也可以转让他们自己的比特币给其他账户。
本质上,这些规则创造了一种数字现金。下面是一幅关于一份通过比特币网络来维护的魔法文档的示意图。跟在每一个账户后面的数字标示了该账户中比特币的数量。
另一组魔法文档是所谓的以太坊。组成以太坊的魔法文档遵循着与比特币规则非常相似的规则:
每一份被施过魔法的文档都包含一份清单,记录着所有帐户和它们相应的余额。
账户的所有者可以转账到其他账户。
你们当中关注细节的人也许已经注意到了:以太坊的第二条规制和比特币的第二条规则在表述上存在细微的区别。这一区别乃是因为在以太坊区块链上,一些账户并不是由人来控制的。相反,这些账户的行动是由一系列内置于账户的指令来控制的。
下面是一幅关于以太坊区块链上的魔法文档的示意图。在该示意图中,账户B、账户E和账户G都是由指令而非人来控制的:
42 35075 42 14987 0 0 1709 0 0:00:20 0:00:08 0:00:12 3507span>
当一组指令内置于这些账户中的一个,该账户就被称为一份智能合约。这些指令只是计算机代码,本质上只是逻辑语句。如果它被来自其他账户的一笔交易“激活”,智能合约可以:
● 执行计算
● 储存信息
● 发送交易请求给其他账户
正如我们提到的,内置代码的账户不受任何人的控制,它是完全自主的!初始代码当然是由人写出来的,但是,一旦一个智能合约代码被上传到区块链上,只有账户中的逻辑语句才能命令该账户作出行动。
许多人批评“智能合约”这个名称。其中一个理由是:一个智能合约并不必然是智能的。它只是一系列任何人都可以写出来的指令,而人们完全可以创造一些非常愚蠢的智能合约。
在另一个层面上,智能合约这个名字也是具有误导性的,因为它并不真的是一个合约,至少在它乃是需要被遵循或维持的东西的意义上,它不是。在“现实生活”中,一份正常的合约具有法律后果。如果合约中有一方拒绝履行他们共识中的一部分,法律系统可以被用来让违约方负起责任。相反,一个智能合约并不需要被任何人支持,它只是一系列自动执行的指令。一个智能合约在“现实生活”中并没有任何优先权。它只是能在区块链上向另一个账户发送交易请求而已,任何其他优先权都必须通过创制一个围绕区块链共识的合法的包装才能获得。
▣ 代码便是法律
进入一个正常合约的时候,许多因素在你是否可以信任你正签字的文件上都具有重要作用。最明显的部分便是对合约文字内容的理解。合约会使用legalese(律师语言)罗列一份共识的条款和条件,也就是你正在承诺的东西。因此,理解这些legalese以及法律系统如何解释它们,就变得很重要。这就是为什么你总是仔细地阅读你的Spotify、Facebook以及其他共识的条款和条件。你绝不会在一份要求你为使用他们的服务而提供自己的长子作为支付的共识上签字,正如98%的人都不会这样做一样。
第二,罗列在一份合约中的条款和条件受到大部分现存法律的限制。这意味着你无法仅凭检视合约的内容便确定合约会如何执行。即便你自己同意,还是有法律禁止你拿自己的长子作为支付。因此,理解法律语境如何起作用,也是重要的。
这些相关的法律通常是作为守卫来运作的,在订立默示合约而非书面合约的时候。记者Matt Levine有一篇文章讲到:即便服从了合约上规定的所有条件,JP摩根还是收到了一张巨额罚单。该合约规范了电力市场,而JP摩根找到了一种方法来钻该合约的空子。JP摩根并不违反合约上注明的规则,他们很仔细地遵循它们,但他们的确违背了该合约的意图,并且被市场监管法律之网抓住了。
即便你奴役你的长子并试图履行合约中你的那一部分,仍然存在风险,即:这仍不足以偿还。你可以卖掉你所有的财产、将你的家人变为债奴,但这可能仍不足以履行你在共识中的义务,所以到最后其他人也没有获得支付。这种在进入一份合约的时候伴随着的、其他人无力实现其共识中的承诺的风险,被称为交易对手风险。这种风险在参与一份合约的时候必须被考虑进来。
最后,即使你理解了该合约以及相关的法律语境,你仍然需要信任法律规则。有时候,法律上的并不等于现实中的(de jure ≠ de facto)。这就是为什么你在腐败之国与总统的儿子参与合约的时候会犹豫再三。那合约甚至还不如书写它的纸张有价值。
那么,这些因素怎么跟智能合约进行比较呢?一个智能合约本质上仅由两种你需要理解/信任的因素组成:
代码,以及如何解释这些代码
区块链的不变性
一如正常的合约,在与一个智能合约互动的时候,理解它的实际内容是重要的。但与正常合约不同的是,正常合约用法律语言写成并由法律系统作出解释,智能合约的内容用计算机代码写成并由计算机作出解释。那么,智能合约的代码实际上是什么样的呢?下面就是一个例子,一份智能合约的节选部分(别担心,没指望你理解它):

这些智能合约代码便是你在与一个智能合约互动的时候,签署的条款和条件。只要你还信任该智能合约所在的区块链,你就知道,这些代码将如它们被编制的那样准确地执行——所以,没有违约行为能存在。但是,有必要提醒的是:如编程好的那样工作,并不意味着它会如期望中的那样运作,如果代码中存在错误的话。
▣ 智能合约运用
正如我们已经确定的,智能合约是一系列内置于区块链中的、以计算机代码写就的指令。代码可以用无数种方式来编写,正如说明一份正常合约的条款和条件的文字可以用无数种方式书写一样。但正如句子中的词语那样,智能合约中也有无数种的编排代码的方式是无效的。这没什么意思,也没有人关心它。但是,有意思的地方在于,有一些安排逻辑语句的方式是有效的。那么到底是什么东西起了作用?
在我们为智能合约回答这个问题之前,让我们回顾一下、考虑一下人们设想的区块链的潜在应用。
在比特币的原始文件公开以后,人们开始认识到:其他类型的共识也可以用同样的基础性技术来维护。人们设想了可以指明不同类型资产的所有权的不同共识,以及相应的关于这些共识如何被更新的规则。这些其他应用包括:
● 数字身份(如:网站)
● 非数字资产如黄金、石油以及不动产
● 一国的货币,以及其它新型的货币
● 金融工具如股份、抵押和债券
● 被证明是公平的投机和赌博
● 一个数据存储市场的规则
● 一个计算机运算市场的规则
区块链上、而非每一种应用建立一个新的区块链。本质上,你在同一个区块链上拥有了许多区块链。
举个例子,指定不同类型资产的所有权的区块链,其“魔法文档”在本质上只是一份清单,描述了谁拥有什么。不同于为这一应用使用一整个区块链,这些信息可以被包括进一个智能合约。就像区块链,智能合约在本质上也将是一份关于账户及其所有权的清单,伴随着指定对该清单的有效更新的规则。
智能合约与区块链有着同样的应用
智能合约同样允许你去创建更小的恶作剧共识,而要为它创造一整个全新的区块链是永远也不可行的。想象一下,我想跟我在一个互联网论坛上遇到的一些人打赌,我们可以做一个智能合约,将我们的资金冻结10天,然后随机支付给我们中的某个人。为这一具体的用途制造一整个全新的区块链真的说不通,但在一个智能合约区块链中创造一个利用现存基础设施的智能合约就说的通。
在你考虑到不同应用之间的互动的价值之前,智能合约区块链的威力无法完全显现。举个例子,如果你拥有两个智能合约,一个针对美元的所有权,另一个针对不动产的所有权,你可以使用一个第三方智能合约作为履约保管,许可一个没有第三方中介的不动产购买。
许多实际用法正在区块链上部署,而将它们部署为同一平台上的智能合约,创造了一个应用之间相互补充的生态系统。
▣ 可编程的共识
区块链是一种用去中心化的方式维护一个共识的新方法。智能合约则允许任何人在这一更大的共识上去定义他们自己的共识。
尚不清楚的是,在未来,何种共识会交由区块链来维护,但智能合约使得任何人去创建他们认为有前途的应用都变得更为容易。比如货币,可以说是区块链技术的杀手级应用,我乐于作一个回顾,以探视这一幅更大的图景:
自文明发源、货币初现,人们可以拥有货币。后来,人们想象之实体,如国家、如公司,可以拥有货币。如今,有史以来第一次,一个机器(逻辑语句)亦能独立拥有货币。
这一事实的结果难以预料,但我相信,可以说,我们拥有光明前景。
原文链接: https://hackernoon.com/blockchain-for-non-techies-3-smart-contracts-104f77277297
作者: William Rode
翻译&校对: 阿剑 & Sihang