智能合约风险的控制

余涛 腾讯金融研究中心特约研究员

观点速览:

智能化的智能合约是程序化智能合约与区块链技术相结合的产物,对智能合约的理解必须从内容层和技术层这两个方面来理解。前者所面临的主要风险是代理风险,需要我们为智能合约底层技术代码人员设置相应的激励机制。后者所面临的主要风险是技术风险,需要我们设置一定的风险熔断机制,来消解智能合约在错误坚持方面的固执性。

智能合约的三层意思

智能合约的思想源头可追溯至20世纪70年代。在那时候,就有人开始探索将电子数据交换(electronic data interchange, EDI)技术用于合同领域,其基本目的是把所有纸质合同或类纸质合同的契约用电子数据交换的形式来表达。[1] 1994年,智能合约的英文单词——smart contract——由计算机科学家Nick Szabo首次提出,它意指一项电子化地达成、检验和执行合同的电脑协议。彼时的智能合约,因为缺乏区块链技术的支持,尚无法实现如今智能合约所能实现的可信任性。

不过,先前的智能合约与如今的智能合约,在逻辑学原理上是一致的。从逻辑学的角度来看,它们都是一个假言命题,它的基本表达式为“若A则B”,用计算机语言对其进行表达则为“if……then……”。[2]

2008年,中本聪首次提出了区块链的概念,尤其是区块链最为成功、影响最大的应用——比特币——更是将社会各界对此种技术的崇拜助推至无以复加的地步。各行各业都在迫切地寻求区块链技术与本行业相结合的切入点。智能合约领域也不例外。区块链技术与传统智能合约的结合是当前智能合约最大的特点。从技术层面来看,区块链技术对智能合约最大的贡献就在于它首次较为彻底地实现了智能合同的可信任性。

上述梳理表明,我们可以将智能合约的发展分为三个阶段:第一阶段(1994年以前),智能合约主要是传统纸质合同的电子化,可以将之称为电子化的合同;第二阶段(1994年至2008年),智能合约主要是指在电子合同的基础上,进一步实现合同内容的编程化,可将之称为程序化的合同;第三阶段(2008年至今),智能合约又在程序化合同的基础上更进一步,它与区块链技术相结合,解决了传统程序化合同面临的信任问题,可将之称为智能化的合同。

所以,从理论上讲,智能合约包含电子化合同、程序化合同和智能化合同这三层意思。我们现如今所说的智能合约主要是指第三层次的智能化合同,即引入了区块链技术的智能合约。正是因为如此,学术界也有一些观点将智能合约称为区块链智能合约。不过,主流观点还是将第三个层次的智能合约直接称为“智能合约”。本文所采的称谓与学界主流的观点一致。

如何理解智能合约

我们一提到智能合约,就会本能地将其当成是一种合同。在这种前见的主导下,国内外的学术界中产生了很多将智能合约与传统合同相对比的研究成果。

比如,国外有学者致力于探讨智能合约是否是传统意义上的合同,具体内容涉及到对传统合同构成要素、合同主体、抗辩要素、合同形式的讨论。[3]

在国内,这方面的研究成果就更多了。此类研究大致可以分为三类:

(1)智能合约属于合同的研究。此类观点认为智能合约在承诺、要约、合同效力判断等方面都未突破传统合同法的范畴。[4]

(2)智能合约不是合同的研究。该观点认为,“智能合约完全摒弃了合同救济、合同争议的法律执行、合同语言的解释、合同不完整性等经典理论或规则”,“将之理解为协议的一套履行机制或执行程序,更符合事实,也更能解决相关争议”。[5]

(3)回避回答“智能合约是否是法律意义上的合约”的研究。该观点从权利义务内容、要约与承诺、附条件与否、法律责任等角度比较了智能合约与合同的异同,认为“智能合约能否落入合同法规制范畴值得进一步探讨”。[6]

事实上,无论将智能合约等同于传统合同,还是不将其看成是传统合同的形式表达,都比较武断和极端。因为我们对智能合约的理解,必须从其所表达的内容和其所依赖的技术两个层面进行理解。国外有学者敏感地捕捉了这一点。比如,有观点认为,智能合约可以被看成是一种在预先约定或被数字化证明的事件的基础上,发动、控制、记载与法律相关的行为的软件或硬件。在特定的情况下,通过这种方式可以订立具有法律约束力的合同。[7]这一观点就是把智能合约分为技术和内容两个层面来界定的。一层含义就是指智能合约技术,另一层含义就是具有法律约束力的智能合同。

如何控制智能合约的风险

如前所属,智能合约的含义包含具有约束力的智能合同和智能合约技术两个层面。对智能合约风险的控制,也应该从这两方面分别入手。

一、具有约束力的智能合同的风险及其控制

众所周知,合同交易的基本法理就是意思表示一致(meet of the mind)。如果将智能合约看成是具有约束力的智能合同,那么它也必须符合合同交易的一般法理。

从根本上来说,合同意义上的智能合约所面临的最大风险就是智能合约底层技术代码对用户层的绝对控制,与合同所强调的意思自治理论产生了张力。在智能合约中,从合同条款的拟定、合同的签署、合同效力的判断、合同的执行,到违约责任的追究,交易双方都严重依赖智能合约的底层代码。

笔者认为,在智能合约语境下,问题的关键不在于我们能否将智能合约所具有的关键技术节点与传统合同的要素一一对应起来,而在于交易双方是否对智能合约底层代码具有自主的控制力。

如果具有自主的控制力,也就意味着智能合约符合了传统合同所要求的意思自治法理,进而,智能合约在本质上与传统合同并无二致。传统合同中所蕴藏的风险也就是智能合约所蕴藏的风险。如果交易双方对智能合约底层代码不具有自主控制力,那么我们就需要仔细分析这种情形中到底存在着什么样的风险。从现实情况来看,交易双方在主客观方面都不可能对智能合约的底层代码进行自主的控制。

所以,我们讨论的重心就转移至,在交易双方对智能合约底层代码不具有自主控制力的情况下,智能合约中蕴含了什么样的风险。要解答这一问题,我们有必要分析一下智能合约的功能。

我们知道,智能合约的主要目的是在功能上取代传统的中介机构,以促进更加高效且安全的交易:

其一,智能合约的高效性体现在它对传统中介机构的替代上。由于智能合约的采用,中心化的中介机构被省略,这不仅节约了交易成本,还跨越了交易的时空限制,扫除了交易双方必须通过中心化的机构进行协商的障碍,使交易变得更加直接、高效。

其二,智能合约的安全性体现在它对区块链技术的采用上。区块链技术是一种分布式的共识机制,它可以确保每一笔交易的唯一性、真实性、有效性、不可更改性,进而实现不同交易主体所需的信任。从理论上讲,智能合约的采用的确会使交易变得更加高效和更加安全。

然而,智能合约对交易效率和交易安全的推动与保障,构成了硬币的两面。一方面它省略了传统中心化的交易构架,另一方面它自己又成了新的中心化主体。根据经济学中的代理理论(agency theory)可知,智能合约底层代码技术人员就是代理人,使用智能合约的用户则是委托人。代理人利益和委托人利益的不一致,肯定会使委托人利益受到一定的不利影响。所以,在交易双方对智能合约底层代码不具有自主控制力的情况下,智能合约中蕴含的最大风险就是代理风险。

根据代理理论,解决这一问题最为直接有效的办法就是,将撰写代码的技术人员的利益与智能合约用户的利益绑在一起。借用代理理论中经常出现的一个表达式来说就是,要为技术人员设计一套合理的激励机制,让他们有动力为智能合约用户的利益而行事。

二、智能合约技术的风险及其控制

2016年6月,建立在以太坊上的区块链智能合约项目——The DAO——由于其智能合约中存在的漏洞而受到黑客攻击,给投资者造成了巨大损失,引起了全世界的广泛关注。从技术层面上讲,智能合约一旦被启动,它就会自动执行到结束。这就使智能合约具有“将错就错,一错到底”的弊端。在特殊情况下,这种固执地坚持“错误”的方式,很可能会造成灾难性的后果。当然,智能合约所面临的技术风险并不仅仅是固执地坚持“错误”。有研究还详细列举了智能合约所蕴含的六大技术风险。

具体来说,这些风险包括:(1)整数溢出:智能合约中危险的数值操作;可能导致合约失效、无限发币等风险。(2)越权访问:智能合约中对访问控制处理不当;可能导致越权发币风险。(3)信息泄露:可能导致重要信息的泄露。(4)逻辑错误:代理转账函数缺失必要校验;可能导致基于重入漏洞的恶意转账等风险。(5)拒绝服务:循环语句、递归函数、外部合约调用等处理不当;可能导致无限循环、递归栈耗尽等拒绝服务风险。(6)函数误用:伪随机函数调用和接口函数实现问题;可能导致可预测随机数、接口函数返回异常等风险。[8]

这六大具体风险也仅仅是当前可被人们发现的风险。随着智能合约应用的越来越广泛和人们对智能合约底层技术的深入研究,智能合约所暴露出来的技术风险也会越来越多。不管具体的风险有哪些,它们都会表现为固执地坚持“错误”这一特性。所以,在智能合约语境下,一个防范或化解技术风险负面影响的有效做法就是在智能合约底层技术中嵌入“风险熔断机制”。一旦具体的风险出现以后,它就会自动地触动风险控制阈值,进而切断技术风险“固执”的一面,以减轻技术风险所带来的危害。

结语

智能合约的发展经历了电子化、程序化和智能化三个阶段。智能化的智能合约是程序化智能合约与区块链技术相结合的产物。所以,如今的智能合约也被称为区块链智能合约。对智能合约的理解必须从内容层和技术层这两个方面来理解。前者所面临的主要风险是代理风险,需要我们为智能合约底层技术代码人员设置相应的激励机制。后者所面临的主要风险是技术风险,需要我们设置一定的风险熔断机制,来消解智能合约在错误坚持方面的固执性。当然,本文只是从宏观上勾勒出了智能合约的风险及其控制思路。随着智能合约具体应用的进一步展开,越来越多的风险也会随之而来,彼时就需要我们对智能合约风险及其控制进行进一步的精细研究。

本文仅代表作者观点

注释:

[1]JeremyM. Sklaroff, Smart Contracts and the Cost of Inflexibility, 166 U. Pa. L. Rev.263 (2017).

[2]Reggie O’ Shields, Smart Contracts: Legal Agreements for the Blockchain, 21N.C. Banking Inst. 177 (2017).

[3]Reggie O’ Shields, Smart Contracts: Legal Agreements for the Blockchain, 21N.C. Banking Inst. 177 (2017).

[4] 周建峰:《论区块链智能合约的合同属性和履约路径》,载《黑龙江省政法管理干部学院学报》2018年第3期。

[5] 金晶:《数字时代经典合同法的力量——以欧盟数字单一市场政策为背景》,载《欧洲研究》2017年第6期。

[6] 赵磊:《信任、共识与去中心化——区块链的运行机制及其监管逻辑》,载《银行家》2018年第5期。

[7]28) Simon Geiregat, Cryptocurrencies Are (Smart)Contracts, 34 Computer Law & Security Review 1144 (2018).

[8]高枫:《区块链智能合约漏洞 修复困难》,载《计算机与网络》2018年第12期。

END

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181029B12TUR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券