人类文明从出生到灭亡
也许只不过是
上帝签署的一纸智能合约?
以太坊白皮书里面谈到一个最重要的话题,就是智能合约的普及。比特币也是一个智能合约,只是这个智能合约太过单一,以太坊要让世界成为智能合约的产物。
那么,什么是智能合约?
你给马斯克设定的智能合约钱包打了一个比特币,SpaceX公司马上给你打印了一张通往火星的航票,这就是智能合约。
在现实生活中最好的例子是售货机。放一个硬币进去,就会触发让你选商品的选项,选择商品以后售货机里的加多宝就会掉下来。这就是智能合约,即在区块链上进行IFTT逻辑编程,并且运行各个节点、自动更新所有人可见的透明总账。
也就是说,如果我们在区块链上创建并且这份合约声了一份代码(合约)声明: 假设一个人将一笔钱转到这份合约,合约就会执行下个动作一一这会触发区块链上的合约执行一些其他的事件。
溯源: 智能合约的定义
比特币核心(Bitcoin Core)的开发者之一Peter Todd,普总结智能合约的现状:“从智能合约讨论中得到的结论: 没有人理解智能合约究竟是什么,如果我们要实施智能合约,应该需要预言机(oracles)
到底何为智能合约?
1.1合约
合约,常被称为“契约”,其为一种合约,依此合约,一人或数人对于其他一人或数人负担给付、作为或不作为的债务。从本质上说,合约是双方当事人的合约,双方当事人以发生、变更、担保或消灭某种法律关系为目的的协议,就叫合约(契约)。
1.2 智能合约
“智能合约(Smart contract)"概念由计算机科学家、加密大师尼克萨博(NickSzabo) 在1993年左右提出来,1994年他写成了《智能合约》论文,那是智能合约的开山之作。作为一位因为比特币打下基础而受到广泛赞誉的密码学家,尼克萨博为智能合约下的定义:“一个智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。
1.2.1数字形式
数字形式意味着合约需要被写入计算机可执行的代码中,只要参与者达成协定,智能合约建立的权利和义务,就由一台计算机或者计算机网络执行。
(1) 达成协定
智能合约的参与方在什么时候达成协定呢? 答案取决于特定的智能合约实施。一般而言,当参与方通过在合约宿主平台上安装合约,致力于合约的执行时,合约就被发现了。
(2) 合约执行
“执行”的真正意思也依赖于实施。一般而言,执行意味着通过技术手段积极实施。
(3)计算机可读的代码
另外,合约需要的特定“数字形式"非常依赖参与方同意使用的协议。
1.2.2 协议
协议是技术实现(technlealimplementation) 在这个基础上,台約承诺被实现,或者合约承诺实现被记录下来。选择哪个协议取决干许多因素,最重
要的因素是一一在合约履行期间被交易资产的本质。
再次以销售合约为例。假设,参与方同意货款以比特市支付,选择的协议很明显将会是比特币协议,在此协议上,智能合約被实施。因此,合约必须要用到的“数字形式”就是比特币脚本语言。比特币脚本语言是一种非图风完备的、命令式的、基于栈的编程语言。
萨博认为,“智能合约的基本理念是,许多合约条款能够嵌入到硬件和软件中。”他认为,嵌入式合约最初的应用实例是自动贩卖机、销售点终端、大公司间的电子数据交换和银行间用于转移和清算的支付网络SWIFT、ACH、FedWire。另一个嵌入式合约的例子是数字内容消费,例如音乐、电影和电子书等领域的数字版权管理机制。
寻根: 智能合约的真容
2015年以太坊出现的时候,区块链社区遭受到了风暴般的冲击。以太坊用事实证明,相比较仅使用数字货币,我们可以用这项技术实现更多事情。突然之间,全新一类的分布式应用都可以被构想出来,并部署到一个可以支持它们的区块链上。
2.1本质
从本质上而言,智能合约是一种直接控制数字资产的电脑程序。通过在区块链上写入类似if-then语句的程序,使得当预先编好的条件被触发时,程序自动触发支付及执行合约中的其它条款,也就是说,它是储存在区块链上的一段代码,由区块链交易触发。
举一个简单的例子:
这样一个if-then语句,意思就是,如果事件X发生,则合约给爱丽丝发送1000美元; 否则,给鲍伯发送1000美元。这就是最简单的合约。
智能合约是部署在区块链上的计算机程序: DAPP (分布式应用) 的基础单元。DAPP可以看作为一组相互关联的智能合约,它们共同促成高级功能的实现一一就像大型IT系统是由多个子系统或模块组成的,它们共同产生“整体大于部分之和"的效益,DAPP是通过在区块链层部署一组智能台约,然后与这些智能合约进行交互而实现的。例如:
(1) 供应链跟踪和交易解决方案,像Provenance,IBM和沃尔玛的试点;
(2) 预法市场,像Augur和Gnosis;
(3) 分布式组织,像The DAO;
(4) 以太猫。
智能合约的实现需要底层协议支持,选择哪个协议取决于许多因素,最重要的因素是在合约履行期间,被交易资产的本质。
2.2 工作原理
基于区块链的智能合约构建及执行分为如下几步:
(1) 多方用户共同参与制定一份智能合约;
(2) 合约通过P2P网络扩散并存入区块链;
(3) 区块链构建的智能合约自动执行。
“多方用户共同参与制定一份智能合约”的过程,包括如下步骤:
(1) 首先用户必须先注册成为区块链的用户,区块链返回给用户一对公钥和私钥。公钥做为用户在区块链上的账户地址,私钥作为操作该账户的唯一钥匙。
(2) 两个以及两个以上的用户根据需要,共同商定了一份承诺,承诺中包含了双方的权利和义务,这些权利和义务以电子化的方式被编程为机器语言,参与者分别用各自私钥进行签名,以确保合约的有效性。
(3) 签名后的智能合约,将会根据其中的承诺内容,传入区块链网络中。
“合约通过P2P的网络扩散并存入区块链”的过程,包括如下步骤:
(1)合约通过P2P的方式在区块链全网中扩散,每个节点都会收到一份。区块链中的验证节点会将收到的合约先保存到内存中,等待新一轮共识时间,触发合约的共识并处理。
(2) 共识时间到了,验证节点会把最近一段时间内保存的所有合约,一起打包成一个合约集合(set),并算出这个合约集合的Hash值,最后将这个合约集合的Hash值组装成一个区块结构,扩散到全网。其它验证节点收到这个区块结构后,会把里面包含的合约集合的Hash取出来,与自己保存的合约集合进行比较,同时发送一份自己认可的合约集合给其它的验证节点。通过这种多轮的发送和比较,所有的验证节点最终在规定的时间内对最新的合约集合达成一致。
(3) 最新达成的合约集合会以区块的形式扩散到全网,如下图所示,每个区块包含以下信息: 当前区块的Hash值、前一区块的Hash值、达成共识时的时间戮、以及其它描述信息。同时区块链最重要的信息是带有一组已经达成共识的合约集,收到合约集的节点,都会对每条合约进行验证,验证通过的合约才会最终写入区块链验证的内容主要是合约参与者的私钥中,签名是否与账户匹配。
“区块链构建的智能合约自动执行”的过程,包括如下步骤:
(1) 智能合约会定期检查自动机状态,逐条遍历每个合约内包含的状态机、事务以及触发条件。将条件满足的事务推送到待验证的队列中,等待共识,未满足触发条件的事务将继续存放在区块链上。
(2) 进入最新轮验证的事务,会扩散到每一个验证节点,与普通区块链交易或事务一样,验证节点首先进行签名验证,确保事务的有效性。验证通过的事务会进入待共识集合,等大多数验证节点达成共识后,事务会成功执行并通知用户。
(3) 事务执行成功后,智能合约自带的状态机会判断所属合约的状态,当合约包括的所有事务都顺序执行完后,状态机会将合约的状态标记为完成,并从最新的区块中移除该合约。反之将标记为进行中,继续保存在最新的区块中等待下一轮处理,直到处理完毕。整个事务和状态的处理都由区块链底层内置的智能合约系统自动完成,全程透明、不可篡改。
比较: 智能合约和传统合约
经过对智能合约定义与本质的剖析,我们已经知道,什么是智能合约以及智能合约是如何运作的。或者说,我们可以知道,智能合约和传统合约之间有着某种密切关系,不可否认的是,智能合约将被归类为与合约、法律相关的行为。
3.1相似之处
合约与合同形影不离,合约是双方的合约,而合同,则是两方面或几方面在办理某事时,为了确定各自的权利和义务而订立的共同遵守的条文。我们现在在这个社会上做的种种经济行为都涉及到大量的合同,所使用的传统合约(合同) 主要有以下四个部分内容:
A.合同主体:即甲方和乙方。这里面包括有自然人,还有法人和机构等。
B.合同条款: 规定甲乙双方的权益和义务。合同条款尽可能详细地书写法律规定之外的内容。
C.仲裁机构和执法机构: 当出现违约,或合同双方主体对合同条款产生歧义时需要仲裁机构和执法机构来判决权益和义务的归属。
D.仲裁对象: 合同里定义(或现行法律保护当合同里没提到) 的权益和义务。
与之对应的,智能合约也有现行合同制度里的四部分内容:
A.合约主体: 拥有数字身份的甲方和乙方。
B.合约条款: 由代码构建的甲乙双方的权益和义务。传统合同还兼容法律规定的内容,但智能合约不接受现行法律的约除非智能合约束,完全由代码详尽定义,除非智能合约被推翻。
C.仲裁平台: 智能合约是在某个平台(如以太坊,又如根链) 上由合约主体去安装,然后代码自动判断执行合约的所有代码条款,包括违约和合约条款,都由代码出。判决过程不需要其他机构代理。
D.执法对象: 合的里约定的数字资产,或智能财产。
3.2 两者区别
随着区块链技术热度不断上涨,智能合约也成为了经常被谈论的新鲜对象。而为什么传统合约未能像其一样风靡一时,除去两者的相似之处,智能合约自然有着其不同之处。我们从以下几个方面来明晰智能合约与传统合约的区别:
(1) 自动化方面
智能合约可以对于触发条件进行智能判断,而传统合约则只能进行人为判断。也就是说,智能合約可以自动判断触发条件,从而选择相应地下一一步事务,而传统合約需要人工判断触发条件,在条件判断准确性、及时性等方面均不如智能合约。
(2) 主客观方面
智能合约中的惩罚等条件是提前进行明晰的,适用于客观的请求场景,而传统合约则更适用于主观请求场景。智能合约中的约定、抵押及惩罚需提前明确,而主观性判断指标很难纳入合约自动机中进行判断,也就很难指导合约事务的执行。
(3) 消耗成本方面
智能合约的成本要明显低于传统合约成本。因为智能合约中的各项执行条件等已经被提前写入代码,执行时候不需要再耗费更多的人力物力即可进行。
(4) 执行时间方面
智能合约和传统合约在执行时间有着事前事后的区别。智能合约属于事前预定,预防执行模式。而传统合约采用的是事后执行,根据状态决定奖惩的模式。
(5) 惩戒方式方面
智能合约中,合约依赖于抵押品、保证金、数字财产等具有数字化属性的抵押资产,若有违约行为发生,违约者会有资产的损失。但传统合约中,违约则将通过法律手段进行制裁,也就是违约惩罚主要依赖于刑罚,一旦违约,可以采用法律手段维权。
(6) 适用范围方面
智能合约可以在全球范围内进行推广并投入使用,但传统合约则因为地域文化、习俗、具体法律法规的不同而有特定的使用范围,广度与智能合约有着很大差别。
3.3 新形式合约优势
智能合约与传统合约相比具有许多优势:
(1) 不依赖第三方执行合约。消除中间人,大大减少了花费在合约上的总金额。
(2) 消除第三方供应商也意味着合约验证和执行的整个过程随着用户间的直接交易而变得快速。
(3)由于合约条款不能更改,用户受骗的风险较小。智能合约不受各种人为干预。
(4) 智能合约不容易出现断电、节点故障等问题。合约保存在分布式账本上时,不存在放错或丢失的风险。这意味着连接到网络的每个设备都有一份合约副本,并且数据会永远保存在网络上。
智能合约的革命性
尽管如此,有些人仍然认为智能合约不具有革命性,认为本质上它与传统合约并无不同。真的没有本质上的区别吗? 我们用一些现实的场景来进行描述下,假设:
你在网上看中了一辆特斯拉,谈好价格后你去银行签署支票再回到经销商那,经销商再确认支票并让你签署了一堆文件,表明拥有这辆车的所有权并最终获得这辆车。而这个买车的过程可能需要花费好几天的时间。
但是,如果在智能合约上有这么一辆特斯拉的所有权、价格和所有的细节、汽车的提供等信息被上传到区块链。你只要支付了相应价值的比特币,就马上可以拥有这辆车的所有。
传统的方法就是我上面提到的去银行办理所有交钱、签署文件、提车这些事情,而在区块链上则是可以实时下单,执行的一个智能合约。你要做的是用加密货币,或者甚至只需要一个携带加密信息的Token,就可以去买下这辆车的所有信息、所有权(存储在区块链总账上的电子身份)。整个区块链系统的每个电脑,每个节点都会实时更新总账,然后每个人都会知道,在这个网络中,这辆车刚刚被卖给了你。
这确实是一件非常酷的事情,从这里我们也可以看出,其实智能合约是一种透明化的宏观确认,而传统合约只是一种非透明的微观确认。
对智能合约的反思
那智能合约是万能的吗? 这要取决于设定智能合约时是否合理,或者没有任何漏洞。
人类真的能躲在编制好的一系列智能合约里,进化到更高级的文明? 代码是否真的能完全代替人类,毫无纰漏地处理好未来一切?
在智能合约的领域内,最起码我们看到了以太坊里的Dao带给了我们一个非常可怕的先例。当人不能发挥主观能动性时,当Dao受到攻击时,我们惊讶地发现,整个以太坊社区只能眼睁睁地看着黑客作案,而且黑客所有的操作在数学上竟都是合法的,黑客利用了一个简单的递归函数的漏洞,就盗走了价值2亿美元的数字资产,因为智能合约是由代码认可的,所以人性在这里几乎无能为力!
如果我们过于相信智能合约,那就是我们过于相信自己的预测能力,而忽视了自己在未来的创造力。
结语:智慧型契约社
如今,智能合约已经开始扎根发芽了。区块链的智能合约是条款以计算机语言而非法律语言记录的智能合同。作为区块链最重要的特性之一,智能合约也是区块链能够被称为颠覆性技术的主要原因,更是各国央行考虑使用区块链技术来发行数字货币的重要考量因素,是可编程货币、可编程金融的技术基础。
从尼克.萨博提出智能合约概念到真正的实践,区块链技术的出现,解决了可编程合约缺乏数字系统技术的问题。人类文明已经从“身份社会”进化到了“契约社会”,而区块链下的智能合约,则有望带领人类从契约社会过渡到智慧型自动社会。