信用超导重塑社会经济:区块链创新理论与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第一节 区块链的五个框架技术

区块链是信息技术综合体系(将在第五章详尽论述),主要组成是五种框架性信息技术(“五大技术”)以及其他相关支持技术。在区块链1.0(比特币)诞生之前,这“五大技术”已经独立发展并且基本完成了。它们分别是:第一,密码学的新进展,主要包括哈希算法和非对称加密/解密技术;第二,分布式网络架构和通信技术;第三,不可篡改可溯源的链式数据记录模式;第四,作为交互合约的数字化形式验证和触发机制的智能合约;第五,对于分布式异步网络必备且高效的同步和激励机制合一的共识算法。其他相关支持技术则包括但不限于演化和融合中的数据库技术、时间戳技术、默克尔树技术、数字签名技术等。

一、密码学的新进展

本节内容均基于经典计算机架构来讨论。关于量子计算和量子密码学的挑战将在本书第八章讨论。

密码学是区块链技术体系的最基本构件。

区块链技术最初的应用是比特币,被寄希望于支付应用,这样的系统对安全性的需求是不言而喻的。可以说,没有20世纪70年代以来现代密码学的新进展,区块链技术是不可想象的。密码学提供了不依靠中心化权威机构确保安全,而能确保信任的另一种方案,即基于密码学技术来实现的点对点交易和交互的内置信任网络。

现代密码学在三方面为区块链技术体系提供安全性:一是哈希算法,二是非对称加密/解密算法,三是数字签名。这里主要阐述前两者,第三项可以简单理解为数字加密的虚拟签名验证方法,在本节末简述。

哈希算法贯穿了区块链技术体系的方方面面。哈希算法的实质是通过一个方法将一段任意长度字符串作为输入,算出一个固定长度的值,可以看作该字符串的摘要或者身份证号(ID)。哈希算法是单向的,无法通过结果倒推出原始数据。哈希算法适合一些身份验证场合,也适合比对数据传输的准确性和完整性,因为只要原始数据变化即使1字节,其ID都将大相径庭,ID不同即提示数据已经不准确或者不完整了。

哈希算法作为一个函数,满足如下三个要件。

一是抗冲突性,即不同的数据输入获得相同的数据ID的可能性极小,小到在实际有价值的时间长度里不可能实现这种可能性。

二是信息隐藏性,就是从ID不可能倒推原信息,这可以使得即使非授权截获原信息ID,也不可能还原获得信息本身。

三是可隐匿性,就是预先知道某数据ID后,由于上述信息的隐藏性,原信息不可能通过某种算法计算被还原,只有通过随机测试暴力破解获得原信息。这个特性保证在足够长的时间段内暴力测试破解不能成功。

哈希算法常用的有MD5SHA1SHA2SHA256SHA512SHA3等,此处不赘述。

哈希算法在区块链技术体系中,主要使用在保障数据链和数据块的安全性、完整性、决定某些系统记账权(如比特币的解题“挖矿”决定记账权模式)等,在本章第二节中说明。

公开密钥算法,也称为非对称加密算法或公钥/私钥加密算法等。一般而言,加密、解密过程是对称的。例如,谍战片中经常出现的密码本既用来加密也用来解密,一旦敌方获得了密码本,整套密码系统就对敌透明了,必须即刻废除。数学家图灵率领的破解小组对德军引以为豪的“enigma”密码的破解,为盟军最终击败纳粹德国做出贡献。这说明了在只有对称加密技术的时代,一旦“钥匙”丢失,后果非常严重。

直到公开密钥算法出现,才解决了钥匙丢失导致锁不再可靠这个问题。我们不再担心密钥丢失或者所托非人,可以向特定对象分享秘密而其他对象无法得知。

公钥和私钥是作为现代密码学分支的非对称加密技术的术语。对于一段需要保护的信息,使用公钥加密,使用私钥解密。例如,受信方要从发信方处通过网络获得一段可能承载权益价值的信息。受信方先发送公钥给发信方,发信方使用该公钥对信息加密,然后传给受信方。受信方使用自己的私钥即可解密并获得信息,而受信、发信两方之外的第三方即使中途截获加密信息也由于没有私钥无法解密。公钥可以用来加密,但不能用于解密,发信者无法使用公钥获取受信方的其他加密信息。这就构成了非对称的、可定向并单向传送加密信息而避免无相关方截获的加密与解密模式。

通常,非对称加密与解密算法使用公钥对信息加密较慢,使用私钥对加密信息解密的过程很快。这种不对称性保证了受信方能以极低成本获得信息。

一些数学函数的天然特性适合以上不对称性要求:由输入计算输出非常容易,倒过来由输出倒推输入则非常困难,以至于在经济的时间长度内根本没有可能。

RSA算法是最常见的非对称加密算法,由三位发明者姓名的首字母命名。这种算法既可以用于加密,也可以用于数字签名。椭圆曲线加密算法则是另一种常用算法。事实上,比特币就是采用椭圆曲线加密算法作为公钥编码的基础,其他很多区块链系统也是如此。

密码学这些近年来的成果是构成区块链技术体系的基础构件,如果没有这些基础构件,区块链的大厦就将坍塌而不复存在。

以下举数例说明密码学在区块链技术体系的几方面的应用方式。

(一)权益账户地址的生成

生成一对密钥,公钥作为对外的权益账户地址可公开外发,而账户拥有者掌握的私钥则用于作为任何使用该账户动作的验证。这样生成的账户具有天然的可验证性。

(二)权益传递的安全保护

假如A正向B传递某项权益,这个过程须满足两个条件:一是系统应保证转出的权益确实是来自A的账户,而非假冒伪装的信息;二是保证只有B才能解码这个承载权益的加密数据从而获得这项权益。在这个权益转移过程中,A使用自己的私钥a对转移权益行为的数据进行数字“签名”,以证明确实是A在进行转移权益动作;同时,A使用B发来的公钥b加密权益转移信息然后发送给BB收到加密信息后,使用公钥a验证A的数字签名,验证通过即证明这个信息确实来自AB使用自己的私钥b对权益传递信息解密,确认权益转移的完成。这个过程完美解决了分布式网络上仅依赖系统内置信任认证即可完成点对点权益转移验证的需求。

(三)数据完整性证明

区块链技术体系中链式数据结构确保了系统中交互数据的可追溯防篡改。本节第三部分将详述。这里哈希算法起到了重要作用。

(四)权益的确权证明

在一般网络系统中,想完成对权益的确权证明,方法是提交密码进行验证即可证明。但是这样使得账户信息暴露了,账户中的权益也处于危险中。区块链系统的方案则是,使用私钥与公钥算法,解码一段与交易内容相关但并不直接包含账户权益内容信息的编码,即可完成权益的确权。

二、点对点分布式网络技术

应用离散数学的分支——图论来讨论互联网系统涉及的网络连接和构型问题是合适的。图3-1和图3-2使用了图论的表达模式,通过节点来表示系统中的客户端、中央服务器,通过节点之间的直线来表示各类系统中主体之间的交互连接关系。图3-1表示一种星型、中心化的网络结构;图3-2表示一种点对点(所有点都可以与其他任意点直连交互)、全连接的网络结构。从图论和网络科学理论而言,这两种网络结构各自是一种极端类型。[1]

图3-1 星型、中心化的网络结构

图3-2 点对点、全连接的网络结构

典型的传统互联网使用的是“中心化服务器+客户端”的星型模式。在这个网络连接里,我们可以看到任何一个客户端都与中心服务器直接连接,利于直接申请中心服务器的服务或资源。从一个客户端到另一个客户端则必须经过中心服务器间接连接,即客户端之间的交互必须以中心服务器为中介甚或必须经申请而获许可。

区块链1.0技术体系采用了P2P(Peer-to-Peer,P2P)网络技术,使得其网络连接模式为一个单纯的节点全连接、全平权的P2P网络,每个客户端节点都可以一步连接到其他任意节点,而无须经过其他第三方节点中转。

本章第二节和第五章将对这两种网络构型各自的优势劣势进行较为详尽的分析。

基于分布式和P2P全连接形式的信息网络先于区块链技术已经出现。著名的eMule下载软件即采用了P2P共享存储下载技术。用户只需要下载并安装客户端,就可以将自己计算机里的文件资源分享给其他用户,同时可以搜索下载其他客户分享的资源。整个系统并没有传统的中心存储节点,也没有传统的FTP下载服务器这样的中心资源服务节点,更没有接入客户数限制,所有用户之间随时可以直接上传、下载。这是一个典型“人人为我、我为人人”的朴素而实用的互联网具现。但是,这一共享模式的创举因严重涉嫌版权侵犯,一直被抑制而难以广泛应用,也不具备主流资本市场的价值。

三、可溯源、防篡改的链式数据存储结构

仅有不对称加密、全连接网络架构不足以成为区块链系统。区块链最显著的特征是具有一种可溯源、防篡改的链式数据存储结构。

例如,在图3-3中,用户A想转账给B,首先A发布意图转账的全网广播,当前记账者听到广播,将交易申请记录到当前数据块中,并再次向全网发出记账广播。此时在线活跃的众多节点对于这个数据块中的交易申请进行“审批”(节点自动动作,用户A的公钥与私钥进行加密和解密验证)、“投票”通过。半数以上“投票”通过的交易作为合法交易被记入账本。该数据块打包一系列交易数据后完成封装、拼接在历史数据链的尾部成为了新的历史数据链。

图3-3 图示链式数据结构(以比特币为例)

区块链技术体系中,链式数据存储结构是至关重要的一个部分。这里应用了密码学技术中的哈希函数(Hash Function,散列函数,一般SHA256用得比较多)。散列函数把消息或数据压缩成摘要或指纹,使得数据量变小,将数据的格式固定下来。SHA256会产生一个256位的二进制哈希值。

数据链中数据块的内容如图3-4所示。图3-4的上部表示数据块之间的链接,下部详细显示了每个数据块内部的构成。当前数据块的交易内容通过哈希函数反复对两两交易信息进行摘要(梅克尔树),最后得到全体交易信息的总摘要,记录在数据块头中。数据块头内容还包括上一个数据块头内容的哈希函数摘要、数据版本号、时间值等信息。全部信息再次经过哈希函数摘要演算后,成为下一个数据块头的一部分。

图3-4 区块链技术体系中关键的链式数据存储结构

假定有黑客修改了某用户节点存储的数据链的区块2(见图3-4上)中的交易内容图谋窃取利益,那么该用户节点的区块2主体的内容将被随之更改。区块2头的内容必然再次经过哈希函数计算,与之前已经存入区块3头的区块2头的哈希值对比后发现差异,这样立刻证明这个用户节点本地存储的数据链已经被破坏而不安全了。现在要做的是,用占多数的、“正确”的数据块覆盖这个遭破坏了的节点本地存储的数据块,从而纠正错误,保证数据的安全和一致。

上述设计的数据链结构有着极强的安全性、可追溯性和数据防篡改能力。风险只是在于,如果黑客或者篡改者成功掌握了超过系统半数算力的节点,那么他们可以肆意决定区块链中的哪些区块会被全网采信。如果系统是规模大到一定程度(如比特币系统是600万以上),这样篡改者需要耗费巨大的成本才能取得多数共识,那么可以认定事实上就已经是不可能实现篡改了。

四、智能合约

1994年,计算机科学家和密码学家尼克·萨博首次提出了“智能合约”概念,早于区块链概念的诞生。尼克·萨博描述了什么是“以数字形式指定的一系列承诺,包括各方履行这些承诺的协议”。2008年出现的比特币并未将智能合约的形式纳入系统,直到2013年,作为以太坊智能合约系统的一部分,智能合约首次出现在区块链系统中。

智能合约作为一种特殊协议,是以太坊的灵魂,承载着节点之间传递价值逻辑的使命。区块链技术体系成为社会和经济生活中拥有巨大潜力的信息技术系统架构,应从以太坊成功纳入智能合约算起。

智能合约是一个沙盒、一个虚拟平台、一种编程语言、一种逻辑描述体系,可以描述基于条件判断的复杂场景下的行为序列。以太坊智能合约的出现使得区块链技术体系商用成为可能,使得区块链技术进入了2.0时代。

以太坊设计了一套图灵完备的脚本语言用以编写合约,编译并运行在系统的虚拟机上。在以太坊价值网络中,智能合约是自动执行的脚本,通过可编程并部署在区块链网络节点上的智能合约,使得节点间的交互行为得到如商业合同一样的规定。智能合约成为了区块链技术体系的潜力和实用性的根本保证。

智能合约是区块链系统具有内置可信度的重要原因之一,允许在不需要第三方参与的情况下,执行可追溯、不可逆转和安全的交易。

智能合约通过编码记录交易的所有要件,如同纸质合同,但唯独不需要罚则。因为在区块链系统里,代码执行是根据预设条件触发的,触发后代码是自动、必然且不折不扣地执行。通过这些特性,区块链系统保证了人际社会难以保证的“有约必践,有责必偿”,从而打造一种现实人际社会从未存在过的、信用不会磨损的“信用超导系统”的理想从不可能到有现实性。这在后续章节中详尽论述。

智能合约开创了以计算机执行代码表达社会和经济约定或合同的历史,为可编程社会和经济活动开创了道路。

五、共识算法

共识算法是分布式网络技术的灵魂。

分布式系统要实现一定的功能,需要以一致性或同步来保障。共识算法是解决一切非中心化、分布式网络同步问题的必需技术手段。而同步或共识本质上与选举或表决并无二致。

所谓共识,简单理解就是大家都达成一致的意思。在现实生活中,有很多需要达成共识的场景,如开会讨论形成决议、双方或多方签订一份合作协议等。而在区块链系统中,每个节点必须要做的事情就是让自己的数据记录与其他节点的保持一致。在拥有一个绝对权威个体的人群中,数据记录同步是非常容易的,一声令下即可;而在一个权威平均的群体,选举或表决往往更有可能。在分布式系统中,共识算法类似上述选举或表决方法。

在分布式系统中,多个用户节点通过异步通信方式组成网络集群。在这样的异步系统中,需要用户节点之间以某种达成共识的方式保证它们的数据状态达成一致。然而,在这样的异步系统中,某些用户节点可能出现故障,或者性能下降,或者发生网络拥塞,这些都可能导致错误信息在系统内传播以及系统内各用户节点的数据记录不一致,造成了用户节点之间数据记录同步的困难。因此需要在上述这样不可靠的系统中确定一些规则,以确保各节点达成安全可靠的状态一致。

简单地说,共识算法是选出系统交互数据的记录者,对多个记录者的不同记录版本进行筛选,同时对系统内各种交互的合法性进行验证投票的规则。共识算法有三个功能:一是选出记录者,可能同一时刻不止一个;二是对不同记录者产生的不同版本数据记录进行筛选并决定最终版本用于系统同步;三是选出一个群体,对系统交互进行合法性验证和投票,由简单多数或其他比例规则决定。第二个功能在比特币中就是“最长链原则”,即当一个节点收到两个记录有不同的最新区块,节点选择最长的数据链作为最新区块,而类似的情况在以太坊中是GHOST协议。

共识算法的由来可以追溯到“拜占庭将军”悖论。该悖论实际上是提出了一个互不信任的个体之间如何不借助外部或中心权威认证而通过具体算法技术能同步协调行动。共识算法解决了这类问题。

共识算法保证了分布式系统的一致性,节点之间基于算法实现了共识,从而实现了信任。因此,区块链是关于信任的技术,算法本身创造了信任,信任内置于系统中,可以不需外部信用(外部权威或者信用中介)的参与。

区块链系统中存在着多种这样的共识算法方案,如PBFTPractical Byzantine Fault Tolerance,实用拜占庭容错算法)、PoWPoSDPoS等。

(一)PoWProof of Work,工作量证明)

比特币作为区块链1.0技术体系的应用,采用了PoW的共识算法。

比特币通过竞争记账的方式解决去中心化的记账系统的一致性问题,即以每个节点以计算能力(CPUGPU或者特定芯片的计算力)解一道算法题来决定记账权的机制,称为“工作量证明”(Proof of WorkPoW)的机制。

在比特币系统中,大约每10分钟进行一轮算力竞赛系统验证节点的工作量证明,竞赛的胜利者就获得一次记账的权力,并向其他节点同步新增账本信息。

PoW的主要特征是计算的不对称性。工作端的工作难度较大,而验证方验证PoW较容易,这样利于系统设置的算力竞争,同时保持其他节点验证的快速、便捷。

PoW机制的短板首先在于巨大的资源浪费。其“工作量”除了参与记账权竞赛之外没有任何意义,但耗费大量的CPUGPU或特定芯片的计算时间(现在有算法采取替代的内存占用或者硬盘存储占用等),最终体现为耗时和耗电量。一个相对全球经济规模微不足道的几百万节点的小系统,2018年消耗掉了全球耗电量的0.24%

PoW机制的短板其次在于计算力垄断带来的共识决策霸权。起初计算力分布较为均衡,随着大规模算力专业“矿场”机构和使用专门ASICApplication Specific Integrated Circuit,专用集成电路)低能耗低成本的计算芯片技术出现,算力垄断也就是共识霸权形成了。这使得比特币共识形成已经异变成了彻头彻尾的富人政治、寡头政治类型。

(二)PoSProof of Stake,权益证明)

PoS类似财产存在银行,由持币数和持有的时间的乘积构成币龄。有的根据币龄占系统总量的百分比来决定用户可以获得下一个区块记账权的权重,有的以币龄为权重随机选择(如点点币),有的则是直接选择币龄最大节点(如以太坊2.0)。

简单说,P o S就是一个根据持有数字币的量和时间,给持有者发利息的一个制度。比如币龄的概念是,每个币每天产生1币龄,如持有100个币,共持有了30天,那么币龄就是3000。如果获得了记录权,那么币龄会被清空为0。每被清空365币龄,持有者将从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么利息=3000×5%/365=0.41个币。然后,重新开始累积币龄。

PoS算法减少了PoW的算力和物质资源的巨大浪费,但其机制实际上类似公司股东会决策机制,类似一种富人政治。

(三)DPoSDelegate Proof of Stake,委托权益证明)

PoS机制虽然考虑到了PoW的不足,但依据权益结余来选择,会导致首富账户的权力更大,有可能支配记账权。DPoS正是基于解决PoW机制和PoS机制的不足而提出的。

DPoS机制是期望通过引入一个技术民主层来减少中心化的负面影响。DPoS的原理是让每个持有区块链系统虚拟权益的人进行投票,由此产生如101位代表,可以将其理解为101个超级节点,而这101个超级节点彼此的权利是完全相等的。从某种角度来看,DPoS有点像是代议政治制度(议会制度或人民代表大会制度)或者公司的董事会。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。

一定程度上,DPoS避免了如PoWPoS的富人政治和共识垄断。但实际上,委托人很大程度仍然由系统内一些最有权势(持系统内虚拟财富多)的超级节点垄断。

上述诸多共识算法,从“大民主”的PoW到“股份制”的PoS、“董事会制”的DPoS逐渐集中,走向了一开始宣扬的极端乌托邦思维的去中心化的反面。原因在于,任何群体的共识(包括选举、表决等),包括区块链系统内的共识算法,都必须在效率与民主之间妥协。而这是千百年来政治学、社会学和政治经济学的一个老话题。

区块链发展到现在,已经出现了更多的共识算法。由于单个共识算法总有不足,因而当前区块链系统更多采取混合式共识算法。

六、其他技术集成

(一)数据库技术进展、演化和融合

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,产生于20世纪60年代。随着信息技术和市场的发展,特别是20世纪90年代以后,数据库不再仅仅是存储和组织数据,而转变成用户所需要的各种数据管理的方式。

数据库有很多种类型,从最简单的存储检索(各种数据表格)到能够进行海量数据存储检索的大型数据库系统都在各方面得到了广泛的应用。

数据库是存放数据的仓库,存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,而是遵循一定的规则,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,如出行记录、消费记录、浏览的网页、发送的消息等。文本、图像、声音都是数据。数据库是一个按数据结构来存储和管理数据的计算机软件系统。数据库的概念实际包括两层意思:其一,数据库是一个实体,是能够合理保管数据的仓库,用户在该仓库中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库;其二,数据库是数据管理的新方法和技术,能更合适地组织数据、更方便地维护数据、更严密地控制数据、更有效地利用数据。

数据库先后经历了层次数据库、网状数据库和关系数据库等阶段。数据库技术在各方面快速发展,特别是关系型数据库已经成为目前数据库产品中最重要的一员。

20世纪80年代以来,几乎所有数据库厂商的数据库产品都支持关系型数据库,因为关系型数据库可以比较好地解决管理和存储关系型数据的问题。随着云计算的发展和大数据时代的到来,关系型数据库越来越无法满足日益增多的各类需要,越来越多的半关系型和非关系型数据需要用数据库进行存储管理。

与此同时,越来越多的非关系型数据库开始出现,其中包括分布式数据库技术。这类数据库与传统的关系型数据库在设计和数据结构有了很大的不同,更带来了数据库数据的高并发读写、存储大数据优势以及分布式存储和检索带来的安全优势。这类数据库一般被称为NoSQLNot only SQL)数据库。传统的关系型数据库在一些传统领域依然保持了强大的生命力。

分布式数据库技术和因此延伸的技术演化直接催生了上述的分布式网络技术、分布式数据账本的萌发,并间接催生了的链式数据存储结构技术。

(二)时间戳技术

时间戳技术在区块链技术体系中具有重大的意义,是可溯源且防篡改链式数据存储结构的关键组成技术之一。

时间戳是指19700101日格林尼治时间00:00:00(北京时间1970010108:00:00)到描述当时时刻的总秒数。很多编程语言起源于UNIX系统,而UNIX系统确定1970110点是时间纪元,所以区块链技术系统沿用此设定。

在区块链系统中,每个新区块生成时都会被打上时间戳,最终依照区块生成时间的先后顺序相连成区块链,每个独立节点通过P2P网络建立联系,这样就为信息数据的记录形成了一个去中心化的分布式时间戳服务系统。

例如,比特币网络中,大约每10分钟产生一个新的区块,并盖上时间戳,广播发送给全网各节点,这样每个节点都有一份这个区块的所有信息,包括时间戳,形成了一个分布式时间戳。时间戳的这种设计使得更改一条记录的困难程度按时间的指数倍增加,越老的记录越难更改,区块链运行时间越久,篡改难度越高。

(三)默克尔树(Merkle Tree)技术

默克尔树技术是可溯源且防篡改链式数据存储结构的一种关键技术。

默克尔树是一种哈希二叉树。在计算机科学中,二叉树是每个节点最多有两个子树的树结构,每个节点代表一条结构化数据。二叉树常被用于实现数据快速查询。

默克尔树由一个根节点、一组中间节点和一组叶节点组成。叶节点包含存储数据或其哈希值,中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成的。所以,默克尔树也被称为哈希树。

默克尔树的结构参见图3-4,其主要特点是:底层(叶子节点)数据的任何变动都会逐级向上传递到其父节点,一直到默克尔树的根节点使得根节点的哈希值发生变化。这使得任何一笔交易的记录都无法实现无痕迹改动。

(四)数字签名

数字签名,又称为公钥数字签名、电子签章,是一种类似写在纸上的普通的物理签名,使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。数字签名生成了只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串也是对信息的发送者发送信息真实性的一个有效证明,主要用于数据更改的签名者身份识别和抗抵赖。数字签名本身是非对称密钥加密技术与数字摘要技术的一种应用,又是公开密钥算法实现信息定向和单向传输的关键技术保障之一。