在区块链的相关讨论中,“智能合约”是一个出现频率极高的词汇。“智能合约”是区块链技术的重要组成部分,也是区块链技术实现核心价值“信用”的重要环节之一。然而人们往往通过“智能合约”的字面意思对其做出简单的解读,将之描绘为一种能够在未来取代“合约”和“公证”的技术。在各类媒体报道文章中,“智能合约”被大量的曲解和误读着。笔者特在此围绕“智能合约”概念对以下问题逐一展开解读:“智能合约”到底是什么?“智能合约”和传统意义上的合约有什么区别?“智能合约”到底能否取代法律概念上的“合约”和“公证”?
“智能合约”到底是什么?
对于“智能合约”的定义是各种各样的。有的文件将“智能合约”定义为“一种用计算机语言取代法律语言去记录条款的合约”。作为法律从业人员而言,这种定义方法是完全错误的。
还有文件将“智能合约”定义为“基于区块链的图灵完备的编程脚本语言,适合各种区块链数据结构和共识协议”。这种定义方法也不准确。比特币所采用的语言是“图灵不完备”的,但是比特币语言中同样植入了“智能合约”。
中国电子技术标准化研究院联合数十家单位于2017年5月16日发布的《中国区块链技术和产业发展论坛标准 CBD-Forum-001-2017》中,将智能合约(smart contract)定义为“以数字形式定义的能够自动执行条款的合约 ”,“注:在区块链技术领域,智能合约是指基于预定事件触发、不可篡改、自动执行的计算机程序。”
备注里的这句话揭示了“智能合约”的本质。“智能合约”本质上是一种“计算机程序”,而不是“合约”。不要通过“合约”的基本特征去理解“智能合约”,而要通过“计算机程序”的基本特征去理解“智能合约”。
不过这种定义仍然没有清楚的解释“智能合约”到底是什么。
要理解“智能合约”,得从中本聪设计比特币的转账功能说起。
假如你是2009年的中本聪,你已经找到了解决双重支付的方法,现在要设计比特币的转账功能了。你会怎么做呢?通常的设计方案会是这样:
发送方向比特币网络发一份广播,其内容是这样的:“从A地址转账1 BTC给B地址。同时附上A地址私钥的签名”。网络各节点收到广播,校验签名合法。于是从A地址扣掉1 BTC,给B地址加上1 BTC。
简洁明了对不对?但是如果是这样的设计,我们就无法看到今天区块链技术在各领域的落地扎根、欣欣向荣。中本聪的设计方案是这样的:
发送方向比特币网络发一份广播,其内容是这样的:“我要转账1 BTC,并且我提供了一段脚本,这段脚本作为钥匙可以打开这1 BTC上的锁;同时,我根据接收方的要求为这1 BTC加个新的锁”。
网络各节点收到广播,运行脚本,发现确实能“开锁”,于是根据发送方的指令给这笔比特币换上一把“新锁”,这笔比特币也就有了新的主人。当接收方想使用这1 BTC时,只要能提供一段新的脚本作为钥匙打得开这把新锁就行。
乍一看,中本聪的设计似乎非常繁琐和反直觉,然而这样的设计却另辟蹊径,打开了一个全新的天地。脚本是一种简单的计算机语言,比如Java就是一种脚本。比特币的脚本可以表述的内容非常灵活,远远超出了一对一转账的范畴。例如:A可以按照约定加锁,设置必须由收款人B和担保人C同时签名才能支配某笔比特币(担保交易),也可以设置B、C、D中任意两人签名就能支配(联名账户);也可以设置B必须在一年后才能动用某笔比特币(延时支付),也可以设置任何人都能支配(撒钱)或者都不能支配(烧钱)。通过这套内置的脚本编程语言,你可以灵活地编写出各种各样的约定——而这其实就是“智能合约”的来源。用比特币脚本编写的合约系统,使得比特币成为了人类历史上第一种可编程的货币。
注意,中本聪这种设计思路和传统方式最大的变化就是,货币移交的重心不在于从一方转移到另一方,而是在权属变化的同时预设了“开启条件”。这个“开启条件”的预设思路是根植于区块链技术的本身设计思想的。因为区块链去中心化,分布式存储,所有数据每个参与节点都有相同的一份,那么大家拥有同样的数据,怎么才能分清各自的权益呢?方法就是给所有的数据都加上对应的“锁”,某个人或某组人用自己的专属钥匙才能开启对应的“锁”,从而获得对自己权益的处分权。传统货币动用前也会验证签名和密码,但是验证的目的仅仅在于校验身份。比特币则不仅仅是校验身份,而且还校验是否符合“开启条件”。这个预设的“开启条件”就是区块链所说的“智能合约”。
对于区块链技术应用的其他领域,此处的比特币转账替换成价值的传递、转移、交换即可。
“智能合约”和传统意义上的合约有什么区别?
了解了“智能合约”的来源,我们就可以比较一下“智能合约”和传统意义上的“合约”有什么不同了。
合约,即合同。《中华人民共和国合同法》对合同的定义为“本法所称合同是平等主体的自然人、法人、其他组织之间设立、变更、终止民事权利义务关系的协议。”
在中华人民共和国合同法中规定了十五种典型合同,买卖合同,供用电、水、气、热力合同,赠与合同,借款合同,租赁合同,融资租赁合同,承揽合同,建设工程合同,运输合同,技术合同,保管合同,仓储合同,委托合同,行纪合同,居间合同。其他常见的合同如抵押合同、质押合同、留置合同、探矿权合同、土地使用权出让合同、承包合同等物权性质的合同在没有特别法规范的情况下适用合同法总则或类推适用合同法相关分则。
合同的内容由当事人约定,一般包括以下条款:当事人的身份信息,标的,数量,质量,金额,履行期限、地点和方式,违约责任,解决争议的方法以及参与各方的权利、义务,中止、终止、解除条件等。
合同的订立步骤可以分解为:
1,一方发出要约。
2,受要约人同意要约内容,做出承诺。
3,承诺生效时合同成立。
“智能合约”完整的订立步骤为:
1,参与方经过商议,约定合约的具体内容。这一步是人与人的谈判、讨论、商议的结果,是人的活动。
2,用编程脚本语言编写脚本,将约定好的内容通过程序的形式表现出来。这一步是将特定的“锁”制造出来。
3,原权益方开启自己的权属,并将区块链货币或价值按照约定加上上一步制作的“锁”,从而实现权属的转移。但是权益并不直接进入新的权益方,而是等待新权益方用“钥匙”开启。
4,在预设的开启条件达成时,新权益方相当于通过特定的“钥匙”打开了“锁”,编程脚本自动运行,新权益方获得区块链货币或价值的处分权并进行处分,也许是加一把新的“锁”。
对于“合约”而言,是由参与各方签署成效后,再由参与各方各自按照约定执行;而“智能合约”存在本身就意味着其已经在执行过程中了,约定内容在“智能合约”诞生之前已经商定好了。“智能合约”更像以程序“if-then”的基本逻辑中的一个触发条件,一旦条件触发就自行执行程序的下一步。所以“智能合约”本质上是一个脚本程序,以程序“if-then”的基本逻辑为基础来运行。这种脚本程序之所以叫“智能合约”,是因为其编写目的是为了实现事先商定好的合约内容的。反过来看,只有能够通过编程实现的合约内容才能成为“智能合约”的实现对象,这就注定了“智能合约”的实现对象是非常有限的,因为不是所有的人类活动都能够通过编程实现的。
对于“合约”而言,在执行过程中,参与各方都有违反合约的可能,“智能合约”则没有这种“人性风险”,“智能合约”一旦设定好,只有作为“钥匙”的脚本满足“锁”的“开启条件”时,才会执行。
“合约”的执行是参与各方进行的人类活动,而“智能合约”的执行其实是执行一段程序,对虚拟价值进行处分。
对于“合约”而言,环境条件的改变可能会导致合约需要用补充协议、变更协议的形式加以调整。“智能合约”则不具备这种灵活性。“智能合约”更适合在稳定的环境中进行大量重复性运作的应用场景。
“智能合约”到底能否取代法律概念上的“合约”和“公证”?
很多对“智能合约”的介绍文字都宣称“智能合约”将能够替代法律概念上的“合约”和“公证”,通过以上对比和分析,显然我们能得出否定的结论。
“合约”的使用广泛渗透在人类活动的层层面面,其双方只要合意达成一致即可成立的特性,使得“合约”具备最大限度的灵活性,从而方便的应用在各个场景。
“智能合约”是以程序为基础的虚拟世界当中的特有产物,是在特定应用环境内反映了某种合约关系的程序,按照“if-then”的基本逻辑运行,适用于特定的场景,其功能较为单一,执行较为简单,适用于在稳定的环境中进行大量重复性运作的应用场景。
“智能合约”相对于“合约”,就跟“机器人”相对于“人类”类似,前者缺乏灵活性,但在稳定环境、单一功能、大量重复性运作的应用场景能发挥替代后者的威力。
“智能合约”会随着区块链应用的普及使用而逐步渗透到人类生活中。由于区块链应用还是发展的初级阶段,“智能合约”对人类社会的影响还微乎其微。
即使将来区块链应用普及了,“智能合约”仍然只能局部替代“合约”,因为,再一次强调,不是所有的人类活动都能够通过编程实现的。
要注意的是,“智能合约”所要调节的未必是人与人之间的关系,也可能是物与物之间的关系,机器与机器之间的关系。“智能合约”在虚拟世界中,以及“合约”在人类世界中,会发挥各自专属领域的作用。
“公证”是一个很好的比较例子。
确实有区块链应用在尝试在做线上“公证”应用。2015年9月,初创公司Stampery尝试用比特币区块链技术解决数据的认证问题。“你可以为任何文件生成不可改变的、准确的证明,证明其存在和完整性。世界上的任何人都可以自动证明某个文件是在何时创建的,且之后再未改动过,”“使用 Stampery 的理由与为文件做公证的理由一样。它能很好地保护知识产权,证明遗嘱、宣誓、合同、家庭纠纷中的通讯等等的有效性。”2017年4月,微软将Stampery技术整合到了Microsoft Office Outlook。
尽管Stampery有其优势和价值所在,但在宣传上和一些新生事物一样,总是拼命的夸大其词。
根据中华人民共和国司法部令第103号《公证程序规则》,公证机构受理公证申请后,应当根据不同公证事项的办证规则,分别审查下列事项:
1,当事人的人数、身份、申请办理该项公证的资格及相应的权利;
2,当事人的意思表示是否真实;
3,申请公证的文书的内容是否完备,含义是否清晰,签名、印鉴是否齐全;
4,提供的证明材料是否真实、合法、充分;
5,申请公证的事项是否真实、合法。
公证机构可以采用下列方式,核实公证事项的有关情况以及证明材料:
1,通过询问当事人、公证事项的利害关系人核实;
2,通过询问证人核实;
3,向有关单位或者个人了解相关情况或者核实、收集相关书证、物证、视听资料等证明材料;
4,通过现场勘验核实;
5,委托专业机构或者专业人员鉴定、检验检测、翻译。
公证机构经审查,认为申请公证的事项符合《公证法》、本规则及有关办证规则规定的,应当自受理之日起十五个工作日内向当事人出具公证书。
通过以上分析和比较,我们可以看出两者的重要区别是,一份公证书在出具之间会经过详尽的实质性审核;而Stampery所谓“公证”的前提是假定文件的实质性审核已经完成,文件是真实有效的,即没有虚假材料的可能,也没有当事人恶意欺诈的可能,其对文件的证明作用仅限于表面性、格式性审核。
要说Stampery所谓的“公证”能够取代法律概念上“公证”的作用,显然是低估了人性的复杂程度。
结语
“智能合约”本质上是一种“计算机程序”,是以程序为基础的虚拟世界当中的特有产物,是在特定应用环境内反映了某种合约关系的程序。
“智能合约”所要调节的未必是人与人之间的关系,也可以是物与物之间的关系,机器与机器之间的关系。
“智能合约”在虚拟世界中,发挥其专属领域的作用,就像“合约”在人类世界中,发挥其专属领域的作用。两者未来会并存,谁也不会完全取代另一方。
一份公证书在出具之间会经过详尽的实质性审核,而区块链技术的“公证”仅对文件进行表面性、格式性审核,所以它不可能取代法律概念上的“公证”。
评论
查看更多