区块链法律问题专题
文章编号:1001-2397(2020)02-0108-13
区块链技术的算法规制
赵磊
(中国社会科学院 法学研究所,北京 100720)
摘要:互联网与计算机系统是区块链技术的基础设施,加密算法是区块链的技术基础,算法信任是区块链技术的核心机制。籍此,区块链技术实现了人际信任、制度信任到机器信任。区块链算法以客观数据为基础,依赖特定运算方法自动运行,不受任何人控制和支配,交易双方完全信赖算法而非第三方。区块链算法既是决策自动化的体现,也是决策自动化的执行机制。参与者之间的权利义务必须在事前写入特定的计算机程序,以充分保障所有参与者的权益。区块链算法改变了传统法律下的担保与信用机制。智能合约是区块链算法的核心,也是区块链技术对传统法律制度冲击最大的部分。区块链算法的规制要做到在传统法律框架下运行,依法治链与“以链治链”相结合。
关键词:区块链;算法;共识机制;法律规制
中图分类号:DF522
文献标志码:A
DOI:10.3969/j.issn.1001-2397.2020.02.08
开放科学(资源服务)标识码(OSID):

市场经济活动中存在众多各种各样的信息中介和信用中介,原因在于交易双方的信息不对称导致交易双方无法建立有效的信用机制。区块链是一种去中心化的共识机制,为解决这一问题提供了全新的思路。互联网与计算机系统是区块链技术的基础设施,加密算法是区块链的技术基础,算法信任是区块链技术的核心机制。籍此,区块链技术实现了人际信任、制度信任到机器信任。区块链技术涉及哈希算法、非对称加密以及智能合约等几种算法,它们的技术特点与功能各不相同,一起构成区块链技术的共识机制。
区块链是去中心化的,其数据的真实性、不可篡改性以及参与者对其的认可,都是通过算法保障的。但是,当推向逻辑极限时,算法治理可能会最终导致系统具有高度规范性和确定性;人们可以自由决定他们要遵守的特定规则集的系统,但在做出选择之后,就不能再偏离这些规则。
[1]2016年发生的The Dao事件,就是不法分子利用智能合约算法存在的漏洞盗取客户巨额资金的典型案例。
[2]因此,算法是一把双刃剑,既可以提高交易效率、保障交易安全,甚至重塑信用机制,也可能会侵害当事人利益,乃至社会利益。算法规制既是技术问题,又是法律问题。
一、区块链的算法逻辑
区块链技术是一种参与者“点对点”电子系统,这首先依赖信息的分布式存储,而参与者在信息交换过程中数据的真实性、不可篡改性以及工作量证明则通过特殊的算法逻辑实现。
(一)区块链算法即“上帝”
在一项交易中,双方当事人之间由于信息不对称,通常要经过长期交往形成的信用机制保障,或者依赖第三方来保障交易安全。如果没有类似于银行或者政府这样的第三方机构确认信息,我们依然无法确认交易对方的身份,无法建立商事活动所需的信任关系。这些中间机构极有可能会因为商业目的或者国家安全,搜集我们的数据和侵犯我们的隐私。
[3]在比特币发明者中本聪看来,这类系统内生性地受制于“基于信用的模式”的弱点,无法实现完全不可逆的交易,因为金融机构总是不可避免地会出面协调争端。金融中介的存在,也会增加交易的成本,并且限制了实际可行的最小交易和支付规模。
[4]
只要交易中存在第三方,势必会产生机会主义、代理成本以及交易成本,上述问题都是不可避免的。那种能够克服人性弱点又没有任何利益追求的第三方是不存在的,除非是上帝。著名的密码学者Nick Szabo在1997年发表的一篇文章就做了这样的设想:“可以想象一种理想的协议,它拥有最值得信赖的代表所有人利益的第三方——上帝。所有各方都将其信息发送给上帝,上帝可靠地确认并向各方反馈结果。上帝是交易过程的最终自由裁量者,一切涉及隐私的信息都由上帝保存,所有参与方都不能获知与己无关的信息。”
[5]在现实生活中,上帝是不存在的,Nick Szabo的想法在当时只能是观念上的、理想化的,在实际操作层面并不可能实现。直到十一年后,中本聪发明了比特币,其底层技术——区块链使得这一空想变成了现实。
在比特币系统中,参与者之间的交易“点对点”进行,通过区块链技术建立起一个去中心化与去第三方的参与者共同协作的机制。区块链是共享的、受信任的分布式公共账本,网络中的每一个节点参与所有比特币交易的认证和备份,当有用户发起一个交易时,信息会被广播到整个网络,通过算力比拼而获得记账权的矿工将交易记录成一个新的区块连接到区块链中。所有交易信息一旦被记录,就不可能被篡改。在区块链系统中,算法以客观数据为基础,依赖特定运算方法自动运行,不受任何人控制和支配,交易双方完全信赖算法而非第三方。因此,算法扮演了上帝的角色。
(二)确认交易的真实性——区块链中的密码学算法
区块链交易之所以不需要第三方信用,根本原因在于其采用密码学原理保障交易安全。可以说,没有现代密码学的发展,就不可能产生比特币与区块链技术。区块链通过对交易信息数据化,再对这些数据加密传输,所有人都可以见证,只有当事人才有权解密、知悉信息内容。上述交易过程,通过两种密码学算法共同完成:一是非对称加密算法;二是哈希算法。
非对称加密算法是指对数据进行加密和解密时,需要两个不同的密码完成。与之相对的,是对称加密算法中加密和解密只需要一个密钥即可。非对称加密算法在区块链中的运用,将交易中的密码分为公钥(public key)和私钥(private key)。区块链系统的参与者因其角色不同而持有不同的密钥,当其为交易的见证者时,其仅仅持有公钥,当其为一项交易的当事人时,其既持有公钥也持有私钥。在区块链中,数字签名可以用于验证信息发送者的身份,用户可以公布自己的公钥,然后发送可以被公钥所验证的、已经通过私钥加密过的信息。如果信息的接收者能够使用公钥解密加密过的信息,即可证明这条信息的身份属实。
[6]区块链系统采用非对称加密算法,一方面赋予全网用户通过公钥对所有交易予以验证的权利与义务,保证了交易的真实性;另一方面只有交易当事人才能通过私钥获取每一个交易的具体内容,保证了在分布式存储网络中点对点信息传输的安全性与当事人的隐私。
区块链(blockchain)之所以使用这个名字,是形象地把对每一个交易信息数据的载体比喻成一个区块(block),下一个区块对上一个区块验证,所有区块按照产生的先后顺序相互连接起来,是为区块链。上一个区块的信息数据传递给下一个区块,是通过哈希(Hash)算法完成的。哈希算法也叫“安全散列函数”,又称信息摘要。文章摘要是对文章内容的概括总结,看了文章摘要,我们就能大致了解文章的主要内容。哈希算法也有这样的功能,它可以把任意的信息集,用非常简单的信息予以描述。它是一个特别的数学函数:给定输入很容易得到输出,但是从输出计算回输入不可行。
[7]
区块链使用哈希算法把交易生成数据摘要,当前区块里面包含上一个区块的哈希值,后面一个区块又包含当前区块的哈希值,以此类推,一个个包含哈希值的区块串连起来,形成一条区块链。在一个区块链系统中,除创世区块以外,其他区块都有一个标头(Header)。区块标头包含的是本区块以及前一个区块的相关指示信息,包括:一个区块的版本号、时间戳、难度目标、前一个区块的哈希值、随机字符串,等等。哈希算法是区块链的底层技术,其上述特性赋予了区块链技术的可靠性。
(三)共识算法即共识机制(Consensus)
非对称加密算法与哈希算法的一并运用,构成了区块链系统最为重要的因素——共识算法,也称共识机制。区块链如果想达到去中心化的目的,必须通过共识算法实现。因为区块链上记录的数据对所有人可见,而且很难否认和回溯性修改,所以彼此不认识并因此不信任的群体可以依赖这个新的数据结构来协调他们的活动。
[8]最初的区块链都是公共区块链,参与者在无中心化的情况下分布式存在。
[9]而在分布式存储的计算机系统中,实现参与者之间的信任是非常困难的。
区块链解决这一问题的方案,是为发送信息加入成本,降低信息传递的速率,并加入一个随机数以保证这一段时间内只有一个参与者(矿工)可以进行传播。它加入的成本就是“工作量”,区块链的每一个参与者必须完成一个随机哈希算法的计算工作量才能向各城邦传播消息。
[10]如前所述,区块链系统的各个节点进行分布式记账,通过哈希算法保证了每个交易区块信息传递的连续性与真实性,又通过非对称加密技术保证了信息传递的正确性与所有节点一致性。于是,各个节点对区块链系统内的所有信息与数据达成一致认识,而按照同一套协作策略行动,是为形成共识机制。
区块链的类型不同,其共识算法亦不同。因为参与者越分散,越没有权威的中心化机构存在,共识机制的形成越难。区块链系统的中心化程度越高,共识算法越简单,中心化程度越低,共识算法越复杂。因此,对于区块链的主要三种类型来说,公有链的共识算法最为复杂,相对而言,效率最低,资源消耗最大;私有链的共识算法最为简单,效率最高,资源消耗最小;联盟链居中。
一般来说,公有链的共识算法为工作量证明(Proof of Work,POW)、权益证明(Proof of Stake,POS),比特币和以太坊分别采用上述两种共识算法。这种共识算法下的数字货币是工作量证明的表现形式。而对于不需要数字“代币”的联盟链或者私有链而言,共识算法大多采用较为传统的一致性算法,如拜占庭容错(PBFT)、Paxos与RAFT,等等。
(四)区块链算法——信任机器
区块链通过自己的算法逻辑,使得陌生参与者在没有任何第三方介入的前提下,实现了相互信任、达成交易。在这一过程中,交易当事人之间的信息不对称、代理成本与机会主义等影响交易安全的不确定性因素并未消除,只是通过不依赖人主观意志的算法,使得参与者均认可系统内客观交易数据的真实性。从某种意义上说,这保障了交易的绝对安全。这一切并非人与人之间或者机构与机构之间等任何传统意义上的信任关系和信用机制,而是参与者对区块链技术的信任。因此,《经济学人》2015年十月号刊文称:区块链是信任机器,可以让相互并不信任的人们进行协作,而不必经过任何中心化机构。
[11]
二、区块链算法的决策自动化
作为一种计算机技术,区块链之所以能够去中心化,一方面是其独有的算法机制使得所有参与者集体协作,保证了信息的共享性与真实性;另一方面系统的运行必须脱离任何人或者机构的控制,才能保障信息的客观真实、全网一致与不可篡改。区块链算法既是决策自动化的体现,也决策自动化的执行机制。参与者之间的权利义务必须在事前写入特定的计算机程序,以充分保障所有参与者的权益。区块链的这一特性,为智能合约(Smart Contract)在社会生活各个领域的广泛运用提供了最佳技术支持。
(一)区块链算法与智能合约
区块链是分布式系统,各个节点是分布式分类账本,其不只记录其他节点传递来的信息。作为共识系统的一部分,其必须确保记录的交易已经完成,与共识相匹配。就比特币而言,这意味着系统会自动执行财务汇款。用户不能在发起比特币的交易后又反悔,汇款对账和达成的同步也是交易程序的一部分。这一机制被称为智能合约。权利和义务规定以及契约协议的执行都在该平台有所体现。
[12]
智能合约的出现远远早于区块链技术,是Nick Szabo在20世纪90年代提出的。Nick Szabo认为智能合约是一组以数字形式指定的承诺,包括各方当事人在其中执行这些承诺的协议,由计算机系统自动执行。
[13]智能合约是信息化时代电子化、理想化的契约形式,但囿于技术发展水平,在很长一段时间内,其仅仅停留在概念上,直到区块链技术的出现。作为区块链技术的最早应用形式,比特币交易过程完全是自动执行的。比特币系统建立在“可复制、共享的账本”之上,每个参与者均拥有一个完整交易账本的副本。智能合约是运行在区块链系统可复制、共享账本上的计算机程序,可以处理信息,接收、储存和发送价值。基于区块链技术的智能合约,不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可篡改。同时,由区块链自带的共识算法构建出一套状态机系统,使智能合约能够高效地运行。
[14]
如果把区块链看作是一个数据库,智能合约就是能够使区块链技术应用到现实中的应用层,是利用计算机代码构建并存储在区块链中的去中心化协议,一旦满足代码所设定的条件便会自动触发合约执行。可以说,智能合约与区块链技术两相成全,前者拓展了后者的应用领域,后者保证了前者的性能。
[15]最新发展趋势是区块链允许人们将小的代码片段,即智能合约上传至区块链,这样就可以实现智能合约在互联网每个节点上分散执行的效果,即区块链作为基础技术可以自动执行智能合约条款,即使这些条款与法律或合同条款并不存在实质性关系。
[16]
(二)智能合约的运行机制
作为自动决策程序,智能合约既具有计算机程序代码,也具有传统合同元素,二者相对独立又相互联系。智能合约的运行机制一般包括三方内容:
一是每一个智能合约都必须有特定的条件框架(Conditional Framework),这一条件框架既符合合同法规则,也是计算机编码必需的。在
合同法中,当事人作出允诺以换取其他当事人承诺:如果x这样做,y就会这样做。同样,在智能合约和构成它的计算机代码中,条件框架是其核心。在智能合约的编写中,条件语句是必不可少的。本质上,智能合约的自动运行是按照一定条件框架设计的计算机代码执行其编写的程序而已。
[17]条件框架由多方参与者共同制定,完成智能合约的构建。
二是架构在区块链系统上的智能合约通过哈希算法进行数据存储。用户在某一区块链系统上部署智能合约以后,系统会自动分配给其一个合约账户,该账户里保存着智能合约的可执行字节码。一旦编码完成,智能合约就会被上传到区块链系统,全网验证节点都会收到相关信息,交易数据存储在区块链上,智能合约账户的状态数据存储在自己的账户内。所有数据均会在区块链系统中永久留下历史记录。
三是智能合约的执行是通过验证程序代码完成的。各个节点收到交易信息后,自动会对其进行签名验证,以确保交易的有效性。各验证节点对某一交易达成共识后,智能合约将自动执行,并通知交易当事人及全网。同时,智能合约自带的状态机会判断所属合约的状态,当合约中所有事务都顺序执行完后,状态机会将合约的状态标记为完成,并从最新的区块中移除该合约;反之将标记为进行中,继续保存在最新的区块中等待下一轮处理,直至处理完毕。
2016年诺贝尔经济学奖授予了奥利弗·哈特和本特·霍尔姆斯特伦。
[18]哈特的主要贡献在于不完全契约理论方面。所谓不完全契约是指缔约双方不能完全预见契约履行期内可能出现的各种情况,从而无法达成内容完备、设计周详的契约条款。一般而言,导致不完全契约的原因有二:一是有限理性;二是交易成本。这是所有传统合同难以避免的问题。智能合约将当事人之间的权利义务转化成计算机代码,通过区块链系统保证其运行的客观理性与自动化。一方面,智能合约是基于软件的比特算法,可以排除掉影响合同履行的人为因素,保障了交易安全;另一方面,区块链算法的自动化决策大大提高了合同履行的效率,降低了交易成本。从这个意义上说,智能合约中的代码不同于现有合同形式,与其说代码代表了合同,还不如说代码本身就是合同。
[19]
(三)以太坊:区块链算法决策自动化的最佳例证
比特币是区块链技术的最初应用,其十几年的成功运行充分验证了区块链技术的可行性与应用价值。但是,比特币是封闭的区块链平台,用户无法在其协议基础上对外扩展。而且,比特币仅仅是一种虚拟货币,除了在少数用户之间具有替代法定货币的价值交换功能,并不能满足社会生活其他方面的需求。基于此,作为比特币的底层技术,区块链被抽象出来并被尝试超越数字货币而应用到更为广阔的领域中去。
2013年,一位普通的比特币社区程序员Vitalik Buterin提出以太坊(Ethereum)的构想——“下一代加密货币与去中心化应用平台”,
[20]意图建立一个开源的有智能合约功能的公共区块链平台,并于2015年7月将这一构想付诸实践。与比特币系统不同,以太坊采用了图灵完备(Turing Completeness)
[21]的编程语言。图灵完备本来就是指由虚拟的图灵机替代人类进行数学运算,将其与区块链技术结合,完美地为区块链算法决策自动化提供了代码解决方案。基于以太坊平台的应用是智能合约,采用多种编程语言实现协议,为区块链技术的广泛应用提供了无限可能性。
三、区块链算法对现行法律制度的挑战
区块链的去中心化特点决定着其是颠覆性的技术手段,甚至被认为掀起了“第四次工业革命”的浪潮。
[22]与此同时,区块链技术尤其是其特有的算法势必对现行法律制度也带来极大的挑战和机遇。
(一)区块链算法对担保与信用机制的改变
商事交易活动绝大多数情况下是在陌生人之间发生的,陌生人之间发生交易的基础是相互信任,彼此相信对方会如约履行承诺。一项交易达成、履行与完成的过程,充满着许多不确定性因素,对当事人来说蕴含着交易目的不能实现的风险。
[23]为了保障交易安全,传统法律制度设计了较为完备的担保体系。不过,无论是人的担保,还是物的担保,都是在商事交易本身以外引入“第三方”,抵御交易可能产生的风险。在没有任何担保的前提下,交易安全很大程度上则取决于当事人的信用是否良好。商事交易因信用机制而达成交易,也未能完全脱离“第三方”的干预。
区块链技术产生伊始,其目的就是“去中心化”或“去中介化”,在当事人之间直接进行“点对点”的交易,排除任何第三方的干预。这一功能的实现是由于区块链技术采用了特殊算法机制。区块链技术的算法机制充分消除了交易当事人之间的不信任,降低了交易不确定性,使得当事人之间的道德风险与机会主义难以发生。换句话说,区块链算法使得交易不再考虑人与人之间的信任、不再考虑是否有物的担保,甚至不再考虑交易相对人的信用如何,算法保证了交易安全。因此,传统法律框架下的担保机制与信用机制在区块链世界中,已无太大的用武之地。