div#pop_ad { opacity: 0; }
AD
首页 > 数字货币 > 正文

王延川 | 智能合约的构造与风险防治

[2021-01-29 06:45:41] 来源: 编辑:wangjia 点击量:
评论 点击收藏
导读: 王延川,西北工业大学人文与经法学院教授。内容摘要:传统合同的核心是追求法律效力的意志,且围绕该意志的执行产生了所谓的中心式架构。智能合约则相反,专注于交易方意志的自动执行,这使得意志表现为特殊的代码



王延川 | 智能合约的构造与风险防治

王延川,西北工业大学人文与经法学院教授。

内容摘要:传统合同的核心是追求法律效力的意志,且围绕该意志的执行产生了所谓的中心式架构。智能合约则相反,专注于交易方意志的自动执行,这使得意志表现为特殊的代码。同时,该意志追求的并非法律执行,而是机器软件的执行,从这一点来看,智能合约并非法律合同。智能合约由代码、代码验证与代码自动软件构成。代码表现交易方的意志,代码经过验证成为区块链上的有效代码,有效代码被合同软件自动执行。借助于三者之间的无缝衔接,智能合约弱化了意志,并消解了传统合同不可缺少的中心架构。从这个角度而言,智能合约是一种高度结构性与一体化行为。基于智能合约的三个构成要件的自有风险,分别是代码瑕疵、代码漏洞、交易方丧失“悔约权”,目前对风险救济的途径主要是代码之治,未来亦有建构法律之治的必要性和可能性。

关键词:智能合约;结构性行为;自有风险;代码之治;法律之治

目次一、智能合约的运行逻辑二、智能合约的构造三、智能合约构造的自有风险四、智能合约的风险防治五、结语

传统合同是一种“中心式”的运行架构,除了交易方的意志之外,合同的缔约、担保、支付、执行等均借助于律师、银行、登记机构和法院,正是这些中心机构保障使意志得以实现。如何对传统合同“去中心”,进而降低交易成本和避免交易风险成为许多学者的研究目标。智能合约这个概念于上世纪90年代由法律学者兼密码专家萨博提出,其目的在于追求不受政府干预的“去中心”交易工具。但是,当时所谓的“智能”只是“去纸质”的电子形式,可以让合同产生不同于传统合同的数字性、自动执行等特质,提高了交易效率。“智能合约”依然未突破传统合同的“中心式”架构。直到2009年区块链出现,萨博设想的真正智能合约才得以落地,在一定程度上实现了“去中心架构”的目的,对此学者们给予了很高的赞誉。

作为新的交易工具,学者们纷纷将其与传统合同进行比较,提出了法律合同说与非法律合约说。笔者认为,要真正了解智能合约并与法律合同比较,必须深入了解智能合约的运行逻辑、构成要件以及特殊风险,这对于智能合约的良性发展与法律有效应对创新交易工具方面具有重要价值。

一、智能合约的运行逻辑

智能合约的主要功能在于确保交易方得到预定的执行效果。在实现该效果的过程中,智能合约也与传统合同出现分野:一方面交易方意志被弱化,另一方面中心架构也被消解。

(一)智能合约的适用例

智能合约是一段存储在区块链上的代码,由区块链交易触发,并且该代码在区块链数据库中被写入和读取。智能合约与区块链属于互补和共生关系。后者是一种俗称“分布分类账”的底层技术,而前者是该技术的运用,被称为区块链2.0。

智能合约的具体适用如下:李某将出售一部二手电脑的信息发布到区块链上,王某看到后拟购买该电脑。王某将一笔货币转换成数字货币,汇入区块链上的虚拟托管账户,该账户自动控制和管理进入的资金。双方拟定合约条款并通过编程语言编写代码(code),最简洁的代码为“If,李某将二手电脑转让给王某,Then,王某支付李某1,000块钱。”。代码设定的条件被验证后,软件自动将二手电脑释放给王某。王某收到相应商品后,向托管账户发送一个数字签名的区块链消息,托管账户将购买金额释放给李某。在正常情况下,无需任何受信任第三方就可以完成交易。如果电脑未交付或有缺陷,双方向第三方仲裁员(一个基于人类的预言机)提交相关信息,仲裁员做出一个裁决,向王某的账户回滚资金。

除了买卖之外,智能合约还广泛用于各种价值和消息传输,在全球支付、银团贷款、抵押品管理、代理投票、证券发行、交易等方面有较为成熟的适用例。然而,智能合约目前适用最多的还是相关的衍生品,比如期货、掉期和期权等金融交易领域。

(二)智能合约的运行逻辑之一:去意志

传统合约的核心是意志,先有交易方的意志,后有意志有效与执行。交易方意思表示一致,合同成立。合同不违反法律、行政法规、公序良俗即为有效。有效合同被执行。但是,上述三个环节均处于割裂状态,而能够维持或者弥补这些断裂关系的则是交易方的意志,这也就是“意思自治”作为合同法基本原则的缘由。

智能合约是一种“去意志”操作。代码吸收交易方意志后,一旦交易方按了按钮,便不可能再掌控代码的运行,其不能被变更和撤销,也不存在瑕疵给付问题。如果代码并非当事人的真实意志,或者当事人将意志转变为代码后又反悔,原则上都难以再行改变。此时,除非代码中另有规定,否则各方只能通过事后撤销交易确保价值的返还。

由于智能合约具有机器可读性,它们也可以被自动设备和人工智能所使用。通过智能合约,连接到互联网的设备可以进行“机对机”交易,譬如一辆自动驾驶汽车可以通过智能合约自动支付燃气或电力,不需要人力干预。此时,智能合约彻底摆脱了人的意志。

(三)智能合约的运行逻辑之二:去中心

传统交易建立在权威机构的信用之上,即交易方意志有效和执行均需借助于第三方权威机构。之所以如此,是因为交易方的意志里包含追求法律效力和法律强制执行的意志。

智能合约用机器执行代替法律执行,也就是说,交易方没有让交易具有法律效力和法律强制执行的意志,而是让交易具有区块链意义上的效力以及由机器执行的意志。因为智能合约的最大特征是法律执行不需要,甚至不可能。所谓不需要,是指合约可以自动执行;所谓不可能,是指法律无法介入机器的执行。从这个角度而言,智能合约不属于法律的合约。

智能合约中事先约定的条件被触发后,资金或者信息的自动释放与转移,没有任何一方可以控制或停止程序的执行。智能合同的执行具有自动性和强制性:前者只要基于计算机运行,虽然还有些部分仍然需要人力输入和控制;后者基于权利和义务的强制与防篡改执行。

可见,智能合约改变了传统合同的架构,不再以交易方意志和权威机构作为基础,对合同法律体系形成了挑战。

二、智能合约的构造

传统合同的核心是意志,然后围绕意志的执行产生所谓的中心架构。智能合约属于倒逼法,为了自动执行使得意志呈现为特殊形式。智能合约表现为交易方意志的运行系统,通过一系列的事先设计而得以执行,体现为合约与代码合二为一:合约由代码表示,同时由代码执行。关于智能合约的性质虽然有不同解读,但在笔者看来,智能合约只是一种结构性行为,不存在传统合约意志产生、有效与执行的断裂,其存在的目的就是实现缔结和履行的一体化。代码的关键不在于对意志的承载,而是可以按照技术逻辑运行,这就是“代码即法律”的原因。代码使得智能合约高度确定,其运行不再需要人为的自由裁量,从而排除法律的介入。

(一)合约成立:代码

交易方协商彼此之间的权利和义务,开发人员将这些权利与义务通过编程语言转换为代码。

首先,代码是象征性的逻辑语言,其可以通过将交易方承诺转变为客观可验证的技术规则让合同内容变得确定,从而纠正传统合约语言上存在的模糊性,减少交易摩擦。使用代码,智能合约成为以确定性方式执行的逻辑位列(bits),交易各方得以可靠地识别客观可验证义务的履行。

其次,智能合约是格式化的合约形式,交易方只需将自己的意志填写在代码的空白处即可。代码的核心内容为两项:一是触发合约自动执行的条件,二是合约的权利和义务。比如,“if X occurs, then Y will be triggered” ,该语句则是计算的基础。智能合约的执行只不过是设定条件满足后的软件触发。

最后,关于代码的编写应该贯彻“the less is more”理念,即通过代码进行的操作应尽量简约,只要具有合约的最基本内容即可。以太坊官方的编程语言是solidity语言,它是一种图灵完备语言,可以编写一切复杂的交易,但是简约主义依然是行业规矩,因为代码内容越复杂,部署合约的成本也就越高。

(二)合约有效:区块链验证

在传统合约中,交易方的意志首先仅是私人意志,是否能够成为法律上受到保护的意志要经过法律评价,出现争议时由法院认定。智能合约也存在有效问题,只不过该种有效并非来自于符合法律规定和公序良俗等规则,而是要经过区块链上的验证程序。

首先,代码要经过区块链节点的验证,才成为区块链意义上的有效合约,也才可以被执行。此过程俗称为挖矿。挖矿就是网络节点(Node)用各自的计算资源创建一个区块,该区块是一系列交易的合集(Set)。网络上的所有节点都可以验证区块。每个节点在提交一个区块时都必须提供一个解决数学难题的“工作量证明”,以保证这个区块有效。

其次,区块链上的验证方式既是民主化的,也是形式主义和功利主义的,这一点与传统合同的验证方式迥然不同。代码验证通过矿工的计算力进行,并采用了多数同意而非一致同意原则,这不仅节省了验证资源,也让交易尽量有效。

最后,智能合约一旦经过验证即成为区块链意义上的有效代码,不能篡改。区块链自动执行该代码,交易方无法通过各自的意志来阻碍执行,因此智能合约不存在有效与执行的割裂。

(三)合约执行:自动软件

首先,智能合约借助计算机软件自动执行。智能合约由程序来判断是否满足执行条件,一旦具备执行条件,计算机软件就会做出“决策”并自动执行。譬如,王某和李某约定10号交付房租后给对方钥匙,王某在4号即打房租给李某,合约的条件被触发,李某的钥匙也即释放给王某。正是因为计算机软件自己“决策”并执行,代替了法律执行,所以也有人称智能合约为智能代理。

其次,为了让自动执行成为可能,交易方需要“担保”。智能合约交易方应该事先将虚拟货币与虚拟财产保存在区块链上,一旦执行条件触发,系统将自动划拨货币与财产,如果触发条件失败,自动执行就会回滚。

最后,执行条件触发是否满足需要借助预言机。智能合约是一种事件驱动程序(event-driven programs ),基于设定条件的触发而自动执行。譬如,在以上适用例里,区块链中并没有“李某将二手电脑转让给王某”这个条件,如何让网络得知该条件已经具备,就需要借助某种机制引入外部信息,以实现虚拟世界和现实世界的沟通,这个机制就是预言机。预言机是一种可信任的实体,它通过签名引入关于链外现实世界的信息,从而允许确定的智能合约对不确定的外部世界作出反应。链外信息的提供者最好不是智能合约的编写者,而是没有利益关联的第三方。

三、智能合约构造的自有风险

智能合约运行过程中会出现许多风险,这里只揭示最基本的自有风险。所谓自有风险,就是智能合约基于自身构造而产生的不可避免的风险。

(一)代码瑕疵

1.简单的代码与复杂的世界。由于以下原因,代码可能难以体现交易方的意志:第一,代码能否准确记录交易方的意志存在疑问。程序员在起草智能合约代码时,需要对潜在不确定的未来事件做出主观判断、解释和实质性决策,这在一定程度上会掩盖甚至扭曲各方的意志。第二,代码可能无法应对现实世界中交易的复杂性。在商业交易中,交易方的权利义务往往难以一开始就确定下来,所以双方经常以开放式条款履行协议,且条款不断修改,以解释不可预见的事件或双方关系的变化。这就是所谓的关系合同理论。但是,代码并不适合于承载关系性的合约安排。第三,满足交易方所有想法的代码成本可能过高。智能合约奉行简约原则,代码越简单越好,这样消耗的以太币相对较少。相反,如果代码过于复杂,消耗的以太币就多。

2.代码违法。智能合约很容易被犯罪分子利用,原因有三:第一,代码是一串数字符号,验证节点无法知晓代码的真实内容;第二,代码经过加密,更让验证节点无法获知代码内容;第三,智能合约奉行假名主义,验证节点无法知晓真正的当事人身份。所以,代码一旦被部署在区块链中,即使违法,只要有足够的动力让矿工来支持区块链,这些系统将继续运行。

(二)代码漏洞

开源软件必然存在漏洞(bug)。英国学者通过对将近100万份智能合约分析后发现,其中有34,200份智能合约很容易受到黑客攻击。又对3,759份智能合约抽样调查后发现,3,686 份智能合约有89%的概率含有漏洞。

2016年6月17日,出现了以太坊历史上最大的代码漏洞“The DAO事件”。黑客利用以太坊上运行的私募基金合约The DAO的代码漏洞,将价值5,000万美元的以太币转移到其私人账户,且黑客的操作手法完全符合代码的逻辑。

该案的启示意义在于:其一,开发者如果没有认真审核,有漏洞的代码无法以足够快的速度被修补,就无法促使基于区块链的协议成为高度可靠的系统。其二,有漏洞的代码一旦被发布,根本无法修补。在上述The Dao事件前夕,已经有专家发现了代码漏洞之所在,但却无法修复该漏洞,因为代码已经发布到区块链上,无法改变。其三,传统合约文本由于锁在抽屉里,相对安全。但智能合约代码是透明公开的,任何用户都可以下载,这就给黑客研究代码漏洞提供了条件。其四,符合代码要求的合约操作是否属于一种盗窃行为,虚拟世界规则与现实世界规则的关系开始为学者们所关注。

(三)悔约权丧失

传统合同法的基本原则是合同自治,交易方不仅基于意志缔结和履行合同,也可以基于意志修改与违反合同,甚至决定拒绝履行合同。由于智能合约的自动执行性质,一旦当事人的意志被记载入代码中,在默认情况下合同软件开始运行,除非各方在智能合约中加入修改或停止程序执行的逻辑。

智能合约奉行平等主义理念,不对交易方身份进行区分。同时,基于假名机制,在智能合约运行中,也根本无法对交易方进行身份区分。智能合约这种封闭的技术运行无法将弱者保护的人文理念植入,使得消费者保护法和金融消费者保护法形同虚设。

四、智能合约的风险防治

智能合约虽然不属于法律合同,但由于涉及交易方的权利义务变动,且其中又存在一定的风险,因而又属于具有法律意义的合约。就目前实践而言,对于智能合约的风险防范主要采取非法律方式,这种方式依然在代码之治的范畴之内,其中包括交易方的自救措施和智能合约社区的自治措施。未来的风险防范可以尝试引入法律之治,即行政和司法对智能合约进行干预。

(一)代码之治

1.自救机制。自救机制的核心是在代码设计时加入人力因素,让第三方对智能合约进行判断,以预防交易风险的发生。这种机制主要针对代码瑕疵和悔约权丧失问题。(1)混合协议。代码中多设定付款条件,条件满足时自动付款。但如果买方坚持要求代码中包括缺陷产品损害赔偿条款,则难以实现,代码无法载入。将智能合约制作成混合协议(Hybrid Agreements ),即智能合约主要用传统法律语言撰写,同时将其纳入代码,这种同时要求区块链和法院执行的智能法律合约就是数字和自然语言的混合。这种合约也被称为智能法律合约。(2)多重签名。智能合约代码需要密钥签名,如果代码由2/3密钥确认,就属于多重签名。这其实是在交易方之外引入第三方,由其充当仲裁员,三方建立一个联合账户。如果交易双方同意,他们的密钥就足以完成交易,如果一方不同意,第三把密钥的持有人就可以通过自己的判断来打破僵局。譬如,买方因为产品质量不合格而不同意,第三方经过认定可以退还买方一定的金额。(3)预言机。预言机与智能合约绑定在一起,其功能有二:一是调整智能合约的义务履行,二是传达人类的见解或支持私人争议解决和私人仲裁系统。如果发挥预言机的第二个功能,就可以在智能合约中引入裁判机制,即设定信息提供的第三方为司法机构、仲裁机构,或从互联网上召集的陪审团,第三方可以通过签名的方式介入,阻止有风险的智能合约执行。

2.自治机制。自救机制由智能合约平台及其矿工做出,主要针对代码漏洞行为。

(1)民主决议:矿工的作用。矿工通过集体行动维护区块链的底层协议。如果代码出现普通瑕疵,矿工依然会维护“代码即法律”这一原则。但是,如果出现类似“The DAO事件”那样严重的代码漏洞,为了应对黑客攻击,可以在社区内发起投票机制,修改区块链底层协议,以阻止代码的运行。(2)软件更新:平台作为法庭。在“The DAO事件”中,以太坊基金会分别采取冻结账户和软件更新措施,以阻止黑客利用代码漏洞盗窃以太币的行为。其中软件更新与矿工表决的功能相同,都是旨在修改区块链底层协议与阻止代码运行。

无论是民主决议还是软件更新,都需要得到大多数矿工的同意。另外,如果有矿工不同意上述内容,就会导致区块链出现分叉。

(二)法律之治

1.管理机制。管理机制的意思是引入政府机构,主要针对上述所有的智能合约风险进行预防性管理。

首先,目前并没有通用的自动化手段可以检验一段代码是否包含漏洞或者瑕疵,只能依赖于开发者自身的水平,未来政府可以规定代码开发人员资质应该经过考核,并制定代码测试标准和流程。

其次,针对代码瑕疵与漏洞有两种纠正办法:一是超级用户,二是离线模式。前者将政府作为管理者引入,其可以在特别程序下修改区块链数据库。后者依然是引入政府权威,但与前者不同的是,政府不会直接修改记录,而是追踪特定用户,迫使他们修改记录。政府可以通过硬件开发商、软件开发商、网络服务提供商与搜索引擎对智能合约用户进行追踪。

政府还可能采取以下较为极端的措施降低智能合约风险,比如废除假名机制,要求交易方以真名注册交易账户;在每个计算机节点上建立后门来监控智能合约运行;给平台施加压力,要求客户将法律直接编入代码等。

2.司法机制。区块链世界奉行“代码即法律”,技术规则决定智能合约的运行。现实的法律能否介入智能合约运行目前存在争议。但是,有越来越多的学者认为,法院最终保留对智能合约法律效力的管辖权,并根据存在已久的合同法解释原则,在必要时借助技术专家帮助,对底层代码进行解释。在发生争议的情况下,当事人也可以向法院或仲裁团体寻求救济,以撤销智能合约。即使智能合约允许基于第三方预言机的替代性争议解决系统,如果仲裁员未能遵守协议中记录的仲裁条款或明显无视法律,法院也可以裁定预言机所做的任何裁决无效。

但是,司法介入的前提是在法律上承认代码系合约表现形式。目前美国有多个州承认智能合约的效力。但是,实践中对代码是否可被认定为“语言”存在分歧。智能合约使用的是人造语言而非自然语言,这种语言形式与书面形式、口头形式、电子形式均有不同,可以称之为区块链形式,对该形式的研究有待深化。

智能合约的特质给司法介入带来了很大难度。譬如,法官和律师对代码并不了解,所以司法介入需要法官和律师懂得代码的意义或者借助于“技术翻译”,这样做的成本将大大上升。再譬如,区块链用户的假名性质使得执法机关很难追踪到违法犯罪嫌疑人,法院难以确定管辖权、启动诉讼,确立交易方资格,以及对不知名的交易方进行救济。

五、结语

智能合约虽然具有很广阔的运用前景,但同时也显示出潜在的技术上和法律上的隐患。智能合约奉行代码之治,本可以自足发展,但其毕竟是为人服务的,涉及现实世界人的利益,加上技术本身存在疏漏,为了保护社会以及交易方利益,不仅需要自救和自治这种非法律治理方式,在一定程度上也需要行政与司法这种法律治理方式。前者已经开始施行,后者正在探索之中。虽然代码之治与法律之治的关系还存在争议,但二者并不冲突,因为代码主要为了执行,而法律主要为了救济。不过,由于智能合约的特殊性,法律介入的方式需要修正。笔者认为,智能合约要成为重要的商业工具,就需要代码之治与法律之治携手前行。

文章来源:《法学杂志》2019年第2期

相关阅读:

王延川|商法的双向运动与现代商法的生成逻辑

本文由作者授权“商法界”刊载

为方便阅读,全文省略注释

欢迎分享转载,转载请注明出处

本期编辑:赵新驰

本期校对:赵宇


添加新手交流群:币种分析、每日早晚盘分析

添加助理微信,一对一亲自指导:YoYo8abc

查看更多:

为您推荐