智能的合约

houbenben 发布在 链圈子 1 4594

download (5)

题图来自Shutterstock。

智能合约(smart contract)一词,最早由尼克 · 萨博(Nick Szabo)于1996年在题为Smart Contracts: Building Blocks for Digital Markets的论文中提出,比实际意义上的智能合约(例如以太坊,Ethereum)的诞生早了19年。那什么是智能合约,智能合约究竟意味着什么呢?咱们今天就来说道说道。

要说智能合约,倒不如先看看合约。合约的英文是contract,翻译成“合同”理解起来似乎更为容易。如果说货币是经济的血液,那么合约就是商业文明的基石,没有合约,一切商业活动都无从谈起。小到日常的交易,大到企业间的合作,合约无时不刻不在发挥着重要,但又容易被人忽略的作用。如果你给了小卖部的阿姨一块钱,而阿姨没有给你矿泉水,那么阿姨就违反了你们之间达成的“隐性”的合约。如果人人可以如此,社会必将乱套。

合约是人与人之间最为基本的关系。卢梭在《社会契约论》中对合约(契约)的意义有着详尽的描述。在他看来,社会秩序来源于原始的朴素的约定,这不仅包括个人与个人之间的约定(比如婚姻),还包括个人与集体,个人与政府,政府与政府之间的约定。无论是原始社会还是现在,艰难的外在条件使得人们依靠个人的力量难以生存下去。为了生存,人们自然倾向于彼此依靠,形成集体。而集体一旦形成,随之而来的就是集体意志的决策问题。

在丛林中遇到分叉路口,究竟应该往左走还是往右走?身处集体之中,我们和集体达成了一种隐性的合约,集体的决策由大家共同完成,而一旦决定,个人就必须服从集体的决策。如果个人破坏了约定,就面临离开集体,进而难以独立生存的风险,这使得个人和集体约定的强制性和有效性得到了保障。

在丛林的例子中,外在条件使得人们出于利益最大化的选择,自觉遵守合约。这是一种天然的,利益驱动的,去中心化的合约,但仅适合特定情况下的小型群体。在群体人数变多,人际关系变得复杂的情况下,就需要有一套体系来确保每个人都能够遵守合约,以维持社会稳定,提高社会效率。人类社会集合了数千年的智慧,对这个问题有了一个比较完善的解决方案,那就是法律。政府的本质,从某种程度上来说,就是法律的强制执行机构。一旦有人违反合约,就需要承担法律后果,因此在违反合约的代价高于利益时,人们会选择自觉遵守合约。在这样的框架下,人类社会的各项活动有条不紊地进行着。

合约很美,但有一个最基本的问题,就是对仲裁机构的依赖。仲裁机构最大的作用,是确保合约的顺利执行,以及在产生纠纷时合理仲裁。淘宝就是一个买家和卖家的仲裁机构,买卖双方不需要互相信任,但他们都相信,如果对方失约,淘宝会维护自己的权益。在更为寻常的场景,例如餐厅消费,我们往往看不到仲裁机构,但这并不意味着仲裁机构不存在。如果你不付钱,会被餐厅的保安痛打一顿,如果保安打不过你,还有警察叔叔在门口等着你。

说了这么半天,什么是智能合约呢?智能合约其实就是数字化的仲裁机构。大家可以把它理解为一个机器人,这个机器人清楚交易双方合约的每一个细节,并会按照事先编写好的程序,在特定条件发生时正确执行合约里的条款。自动售货机恐怕是最容易理解的“智能合约”了,它本身包含了交易的条款(投硬币 -> 释放商品 -> 找零),也能在特定条件发生时(收到硬币后),正确地执行条款。

chain vending machine

2017年纽约共识大会上展出的“智能合约”自动售货机,可以通过数字货币完成支付

随着计算机和互联网的普及,智能合约的想法应孕而生。我们既然能用代码完成复杂的计算,编写应用程序,可不可以也通过代码将合约数字化呢?所以在这里要强调的是,智能合约并不是简单的“数字化的合同”(比如word文档),而是具有合约观察,合约验证以及合约执行能力的数字实体(也就是仲裁机构),这是大家理解智能合约的主要难点。

想像一下,一款运行在Windows上的软件,要怎样才能成为“智能合约”。以公司给员工发工资为例,在这个合约情景下,公司通过软件的录入功能告诉软件,每个月的1号要给员工A发3000人民币的工资。如果这款软件能够正确地完成这个功能,我们就可以简单地说它是智能合约。如果这款软件可以检测到员工的迟到,旷工,请假,加班行为并自动调整工资额度,并且能够根据员工的绩效考核自动给员工加薪,那么它就是一款比较完备的智能合约了。有了它的存在,会大大降低公司的人力成本和人为出错的可能性,提高薪资的透明度,从而提升生产效率,降低生产成本(可不要小看这两句话,工业革命以来的历次科技革命,所做的无非就是这两件事情)。

当然,上述的例子在今天看来,依然过于理想化。其中一个很大的问题,是怎样让计算机程序,将3000块人民币从公司的银行账号里,转移到员工的银行账号里。这个过程本身很难通过程序来完成,因为银行是绝对不会跟程序打交道的。另一个直到今天的智能合约都难以解决的问题,就是计算机程序怎么知道员工旷工了?唯一的解决办法就是设专人在员工旷工时手动将信息录入程序,但这样一来,又增加了额外的人力成本,和没有智能合约又有什么区别呢?

比特币的出现,在很大程度上解决了第一个问题,就是程序对钱的操作问题。比特币本身作为数字货币,其地址的控制者,可以是实体人,也完全可以是一个程序。一段简单的Python程序,就完全有能力独立处理比特币的接收和发送。比特币的交易本身,也可以进行简单的编程。在发出一定数额的比特币时,可以指定把这个数额的比特币发送到一个特殊的地址里(以3开头),并且在特定的时间内,释放给另一个地址。这个以3开头的地址,其实就相当于一个中间机构。

如果能对中间机构进行编程,使得它可以根据程序员的设定,在特定条件下发出特定的交易,那就是智能合约了。比特币本身不支持过于复杂的编程(又称图灵完全,turing complete),因此我们说比特币不支持智能合约。第一款支持智能合约的数字货币,就是于2015年7月正式上线的以太币(Ethereum)。也有人把Ethereum翻译为以太坊,因为它可编程的特性更像一款平台。基于Ethereum编写的智能合约,可以对Ethereum上的流通数字货币ETH进行任意的操作(接收,发送,销毁)。

Ethereum没有解决的,是智能合约和现实世界的沟通问题。想要解决这个问题,物联网和数字身份是必不可少的环节。如果有一天人们的身份(证)信息,日常的一切行为(去了哪里,跟谁说了什么话,做了什么事,完成了怎样的交易),以及法律本身都在区块链上得以数字化,那么一旦有人违背合约,智能合约就可以以数字化的法律为依据,对这个数字化的人做出相应的惩罚。比如如果某个人酒驾,一旦被检测仪检测到,检测仪就可以直接将这个信息汇报给“交警大队”智能合约,“交警大队”合约会向“交通法”合约询问,这样程度的酒驾应该受到怎样的惩罚。这个惩罚会以一个数字化的形式呈现,比如封锁这个人的数字身份一天。这样当酒驾者第二天去餐厅吃饭时,会发现自己的数字身份被封锁从而无法下单点菜,因为下单点菜需要他的数字身份和“餐厅”合约进行交易。

由此可见,数字货币的出现,可谓是打开了智能合约通向现实世界的第一扇大门,因为大多数的合约都涉及金钱交易。在酒驾的例子里,如果涉及罚款,也可以通过数字货币完成。而要成为像互联网一样的基础设施,还需要数字身份和物联网等技术的支持。

关注微信公众号“数字货币说”,第一时间阅读最新的文章!

版权声明: by nc" sa 作者保留权利。文章为作者独立观点,不代表巴比特立场。
发文时比特币价格 ¥30102

评论:1

您需要登录后才可以回复 登录|注册
    Author Image
    reswz 22 天前

    通俗易懂,有点过于直白,缺少一点技术含量…

    +1
    +1
    我要点评