靳毅:区块链是多种技术的集大成者


一、数字货币初探

目前,数字货币尚没有公认的标准定义。从广义上讲,数字货币泛指一切以电子形式存在的货币。狭义的数字货币一般特指以非对称密码技术为基础的“密码货币”,这也是本文的主要研究对象。按照数字货币的发行者不同,可以被分为私人发行、不受法律保护的私人数字货币(比特币、以太币等)和中央银行发行并进行监管的法定数字货币。

随着计算机和互联网技术的迅猛发展,除了数字货币外,还出现了多种新的“货币”概念,如虚拟货币和电子货币。三者概念既有不同也有重合之处,法定数字货币和电子货币因均由央行发行容易被混淆,私人数字货币和虚拟货币因均由私人机构发行容易被混淆。我们首先对这些概念进行区分,以界定本文所研究的数字货币的范围。

电子货币和法定数字货币。1)电子货币是指法币的电子化,即纸币在银行或其他相关金融机构将法定货币电子化和网络存储和支付的形式,并没有创造新的货币类型,只是现有货币的电子形式。按照其发行主体的不同又可分为银行卡、储值卡(如公交卡、购物卡)和第三方支付(如支付宝、财付通)等。2)法定数字货币本身是货币(属于M0的范畴),与纸币、硬币共同构成现金,不仅仅是支付工具,如中国央行即将发行的央行数字货币。

虚拟货币和私人数字货币。1)虚拟货币通常指基于网络的虚拟性,由网络运营商提供发行并应用在网络虚拟空间的类货币,如腾讯公司发行的Q币,各大网游公司发行的游戏币等,一般只在自身生态内流通,政府出于稳定金融体系的目的规定其不可与法币双向流通。2)私人数字货币是指无发行主体或私人机构发行的可以被用于真实的商品和服务交易的“货币”,其不仅仅局限在虚拟空间中,如比特币、以太币等。

二、区块链:多种技术的集大成者

数字货币的产生及应用涉及复杂的底层技术,在梳理其发展历史之前,通俗的理解这些技术是必要的。与名噪一时的比特币等数字货币一起声名鹊起的,莫过于区块链技术。也正因为区块链经常与比特币一起出现,所以很多人容易将两者混淆,更有甚者认为区块链就是比特币。

事实上,比特币只是区块链技术的一个具体应用,区块链不仅可应用于比特币等数字货币,还可以应用于所有数字化的领域,如数字票据、征信、政务服务、医疗记录等。数字货币也不一定应用区块链技术,我国央行相关人员也多次指出“法定数字货币未必使用区块链技术,区块链只是央行数字货币备选的底层技术之一”。那么,区块链技术究竟是什么呢?

当前,对于区块链的定义,业界尚未有唯一的明确答案。从形式上看,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构。每个区块主要包含三个部分:1)数据信息,具体的信息类型与区块链协议规定相关。例如,在比特币系统中是转账信息,包括付款人、收款人、比特币数量等。2)哈希值,表明区块内包含的所有信息。3)哈希指针,包含上一个区块的哈希值,表明上一个区块的信息。哈希指针可以将区块一个个连接起来形成“区块链”。


从技术本质上看,区块链可以理解为一个由多个节点共同维护、能够系统运转的数据库储存系统。它是多种技术的集大成者,包括去中心化技术(P2P网络技术和分布式存储)、信息加密技术(密码学哈希函数和非对称加密技术)、共识机制(拜占庭容错算法、工作量证明机制、权益证明机制)等。

2.1、去中心化:P2P网络架构+分布式存储

P2P网络是区块链实现去中心化的基础,解决了节点与节点之间数据传输的问题。P2P网络又称对等网络,是一种在对等者之间分配任务和工作负载的分布式应用架构。在目前网络中传统的服务端/客户端结构中,数据传输传输需要经过一个中央服务器。

以发微博为例,用户发送的图文先通过网络传输发送至新浪服务器,新浪服务器再将图文发送给其他用户。在P2P网络中,不存在中央服务器这样的中心化节点,每个节点都是对等的,节点之间可以直接进行数据传输。

根据网络中不同节点之间如何建立连接通道,P2P存在四种不同的模式,不同的区块链应用可能采用不同的模式,具体分为:集中式、纯分布式、混合式、结构化模式。

1)集中式P2P网络是指存在一个中心节点保存了其他所有节点的索引信息,但数据传输无需经过中央服务器,可以直接点对点传输。例如,MP3共享软件Napster就使用这种P2P系统,Napster存在一个中央索引服务器保存所有用户上传的音乐文件索引和存放位置信息,当某个用户A需要某个音乐文件时,首先在Napster中央服务器进行检索,检索到存有该文件的用户B后,A可以请求B直接将文件传输给A。

2)纯分布式P2P结构式不存在中央服务器或中心节点,节点之间建立随机网络。数据传输时,某节点将信息传送给相邻节点,以此类推,以扩散的形式在网络中蔓延,直至传送到另一节点。比特币区块链即使用的这种P2P系统。

3)混合式P2P网络将集中式和分布式结构混合,网络中存在多个超级节点组成分布式网络,每个超级节点式则由多个普通节点与其组成局部的集中式网络。从Libra发布的白皮书可以推断,Libra即使用这种P2P系统。

4)结构化P2P网络是指所有节点按照某种结构有序组织,如环网网络和树状网络。


P2P技术解决了点对点之间数据传输问题,而分布式存储解决了去中心化系统中数据储存的问题。在传统的储存方式中,所有数据都集中储存在一个中心化的节点中,而在P2P网络中,不存在中心化节点,需要使用分布式存储技术。简单来说,分布式存储就是将数据存储在多个计算机节点中。应用到区块链中,即各节点进行信息传输时,需要将该信息广播在系统中,收到信息的节点均储存该条信息。


2.2、信息加密及验证:非对称加密技术+密码学哈希函数

在P2P网络系统中,节点之间数据传输采用广播的形式,例如A节点向B节点传输信息,A节点首先向相邻节点扩散信息,以此类推,直到信息传送至B。但在此过程中存在两个问题:1)当节点A向节点B发送信息时,由于数字信息可以轻易复制,用户身份容易被冒充或伪造,节点B如何验证信息发送人的身份是否是A;2)信息在传输过程中可能被恶意篡改,如何保证信息在传输过程中没有被篡改。

非对称加密技术可以用于身份验证。非对称加密又称公钥加密,与对称加密只有一个密钥(该密钥可以加密也可以解密)相比,非对称加密具有两个密钥:公开密钥和私有密钥。公钥和私钥是一对,如果用私钥加密,只有对应的公钥才能解密。公钥是公开的,可以表示节点的身份,发送者在发送信息时用私钥将信息加密,接收者收到信息后,用公钥进行解密,即可确认发送者的身份。

哈希函数的性质可以用于验证信息是否被篡改。哈希函数y=H(x)可以将任意长度的信息(输入值x)转化成固定长度的二进制字符串(输出值y),该输出值称为哈希值或散列值。哈希函数具有三个性质:1)不可能存在两个不同的输入值x对应同一个输出值y,即不可能有不同的信息对应同一个哈希值。2)输入x很容易通过哈希函数转化成y,但逆向计算可不行,即已知输出值y,不能计算出输入值x(只能使用穷举法,但解空间为2256)。3)输入值x的微小变动,哈希函数的输出值y都大相径庭且没有规律。


哈希函数的三个性质可以验证信息是否被篡改,具体流程如下:首先,发送者将信息输入哈希函数,得到一个哈希值,并将哈希值用私钥加密。其次,发送者将原始信息、加密的哈希值以及公钥一起发送给接收者;最后,接收者收到后用公钥将哈希值解密,并将原始信息输入哈希函数,将得到的哈希值与收到的哈希值对比,即可验证原始信息是否在传输过程中遭到篡改。


2.3、共识机制:拜占庭容错算法、工作量证明、权益证明

节点之间数据传输问题解决后,数据存储问题接踵而至。在中心化存储系统中,中心机构负责数据存储的完整性和准确性,而在分布式存储系统中,各节点记录、储存数据可能会出现以下问题:1)信息在记录和存储时被恶意篡改;2)信息无效、损坏或丢失,比如,由于通信网络无法正常工作,导致部分节点没有收到信息;3)信息传送延迟,由于各节点的地理位置、网络状况不同,不同节点对某一条信息收到的时间不同。

这些情况的存在,导致各节点对信息的记录和存储无法达成一致。解决方案是各节点向其他所有节点传递将要储存的信息内容,各节点根据收到的消息采用少数服从多数的原则来确定数据存储的一致性,但这一过程仍可能存在恶意节点向其他节点传输错误节点以破坏一致性,这就是著名的“拜占庭将军问题”。

“拜占庭将军问题”是分布式系统达成一致性的重要难题,由Leslie Lamport等科学家于1982年提出。基本思想如下:拜占庭帝国各军队分别驻扎在相隔很远的营地,只能靠信使传递消息,由于至少一半以上的军队同时攻击才能能够攻下帝国,将军们需要就是否攻击敌军达成共识。军队中可能存在叛徒,叛徒可能擅自变更进攻意向或进攻时间,以破坏将军之间的共识。

例如,共有 11 名将军,其中有一名反叛者,如果5名将军选择“进攻”,另外 5 名选择“撤退”,反叛者在收到这些消息后,向选择进攻的将军发送“进攻”消息,向选择撤退的将军发送“撤退”消息。由于反叛者的存在使得将军无法形成共识,5名将军选择“进攻”,5名将军选择“撤退”,结果必然是失败。

对标到分布式存储系统中,各营地驻扎的军队即是各个节点,节点之间要对某一信息达成共识,需要向其他节点传送自己记录的信息,达到半数以上认可的信息即可作为统一的储存信息。但在此过程中,可能存在恶意破坏一致性的节点。例如,某个节点,向网络中一半节点发送“A”信息的同时,向另一半节点发送“B”信息,使得尽管只有一个恶意节点,系统也无法形成统一的数据库。因此,需要一种机制以保证即使存在恶意节点,其他节点依然能够达成一致结果。

因此,共识机制是区块链技术的核心问题。目前,主流区块链的共识机制主要有三种,分别为拜占庭容错机制、工作量证明、权益证明。

(1)拜占庭容错算法

1999年,Miguel Castro和Barbara Liskov提出了实用拜占庭容错算法,可以保证系统中的恶意节点不超过1/3,即可达成共识。其基本思想为各节点收到其他节点发送来的信息后,并不立即根据多数做出判断,而是将收到的信息再传给其他节点,通过信息交换做出一致决定。在这种情况下,只要系统中恶意节点不超过1/3,则能解决拜占庭将军问题,即当超过2/3的节点宣布储存的信息一致时,即可实现共识。

为什么恶意节点不能超过三分之一?原因如下:假设系统中共有n个节点,其中恶意节点有f个,则忠诚节点有n-f个,忠诚节点发出n-f个真实信息。若通信网络中不存在信息传递延迟现象(各节点能立即收到其他节点发来的信息),要求真实信息的数量要大于错误信息时n-f>;f(即f<;1/2n),才能达成一致,也就是当收到一半以上的一致信息时,即可达成共识。但现实情况下,信息传递会出现延迟现象,在收到的n-f个信息里,可能最多有f个恶意节点发的错误信息,因此至少有n-f-f条真实信息大于错误信息时,才可以达成共识,即n-2f>;f,可得出f<;1/3n。

(2)工作量证明——比特币区块链的共识机制

工作量证明(Proof of Work,简称PoW)由比特币引入,可以保证恶意节点不超过51%即可达成共识,是目前区块链最经典、也是最久经考验的共识机制。其基本流程如下:

1)当节点进行数据传输时,传输的信息不会被各节点立即储存,而是被标记为“未确认的”存入内存池。

2)区块链系统中每隔一段时间产生一个新的区块,不同的区块链协议产生的时间不同(例如比特币区块链中是10分钟产生一个区块)。各节点在内存池将收集所有未确认的信息,打包在新的区块中,构造出候选区块。由于我们上述提到的问题,对于给定的信息集合,各节点区块中打包的信息可能不一致。

3)区块打包信息后会设置一个“密码谜题”,即在信息后添加一个随机数,然后对整个信息列表(包括随机数)使用哈希函数转换成一个哈希值。

4)各节点需要利用所得到的哈希值计算出该随机数。根据上文所提到的哈希函数的性质,逆向计算不可行,只能使用穷举法,因此,要计算出这个特殊数字需要进行海量的计算,这个过程就叫做工作量证明,可以简单理解为解“数学谜题”的过程。

5)当网络中某个节点率先找出随机数时,该节点会向全网广播,其他节点进行有效性进行验证,当51%的节点验证通过后,则区块会被自动链接到区块链的后面,无法通过验证的将重新进行计算。率先完成工作量证明的可以获得一定的奖励,既能激励全网各节点进行主动存储信息,又能避免节点存储错误信息——因为验证失败后的收益远远小于其成本。

例如在比特币区块链中,区块中包含一定量的币基,既率先找出随机数的节点通过验证后,即可获得区块中的新币奖励。由于这个过程与挖金矿有相似之处,因此使用PoW机制的数字货币的产生过程被称形象地称为“挖矿”。


PoW的意义在于增加了各节点广播信息的成本,且该成本远大于发布虚假信息的收益,各节点就不会有做“叛徒”的动机。因为如果节点对信息有任何的修改,就会完全改变哈希值,哈希函数虽不易逆解但容易验证,当无法通过51%节点的验证时,该节点必须重做工作量证明,既会花费大量成本,又会降低率先完成的概率从而降低获得奖励的概率。其次,由于率先算出谜题的节点是随机的,所以我们无法得知下一个争得记录权的节点,各节点也无法掌控自己将获得哪个区块的记录权。

以上过程通过PoW机制解决了单个区块内信息储存的共识问题,但不能保证系统(整个区块链)的最终一致性。因为两个不同节点同时挖出区块(解出谜底)的情况也可能出现(由于网络通信问题,每个节点的区块信息可能不一致),这时区块链会出现分叉,网络各节点需要对哪条区块链上的交易能够得到确认形成共识。

整条区块链的共识遵循最长链原则,只有最长链上的交易能够得到确认,也就是包含的工作量最大的那条区块链。“分叉链”不可持续,在下一次区块竞争时,每个节点会选择在某条分叉链上进行下一次记账权的竞争,由于存在巨大的工作量证明,同一时间内两个节点同时挖出区块的概率将呈指数级下降,因此,很快就会有“最长链”出现,最长链上的交易将获得确认,同时,较短链上的交易信息也会随之释放,重新标记为“未确认”,打包在下一个区块中。


但PoW机制并非完美,它有以下三个缺点:

1)51%攻击:当攻击者掌握了全网51%的算力时,其攻击总能成功,因为他总可以让自己的链成为最长的链。因此,全网节点越多,抗攻击能力越强,安全性越好。

2)高延迟:区块出现时间的间隔不能太短,出块时间过短意味着挖矿难度降低,会增加多个节点同时算出答案的概率,导致频繁分叉。但出块慢意味着确认时间长、高延迟。

3)资源浪费:计算机计算密码谜题需要大量的算力,需要高性能的计算机设备、消耗大量电力等资源。根据Digiconomist的评估,比特币2018年度排放的二氧化碳达 34.73 百万吨,相当于丹麦的碳排放量;耗电量达 73.12 兆千瓦时,相当于奥地利的耗电量;产生电子废物 9.8 克拉,相当于卢森堡产生的电子废物。


(3)权益证明——以太坊区块链的共识机制

权益证明机制(Proofof Stake,简称PoS)是对PoW机制的改进,与节点需要做计算工作证明不同,PoS按照各节点拥有的密码货币的数量和时间竞争记账权,这种模式下持有密码货币的数量越多、时间越长,率先“挖出”区块的概率就越高。这种机制类似于利息制度,PoS算法中有一个名词叫做“币天”,是货币数量与持有天数的乘积,例如若持有 100 个密码货币 10 天,则币天为 1000,各节点每发现一个区块,拥有的币天就会被清零,每清空 365 个币天,可获得一定数量的新币奖励,相当于持币利息。

PoS作为PoW的一种升级共识机制,成功地改进了PoW机制的一些缺陷。1)低延迟:根据每个节点所持有代币的数量和时间,等比例的降低挖矿难度,在一定程度上缩短了共识达成的时间。2)资源消耗少:不再需要消耗大量能源进行计算。


厘清以上数字货币的范围及背后的复杂技术后,能够帮助我们更好地理解数字货币的发展。目前,比特币、以太币等私人数字货币热度不断攀升,各国央行的法定数字货币也呼之欲出。数字货币的出现,提出了一系列值得思考的问题。以比特币为代表的私人数字货币能否成为真正的货币?法定数字货币的研究进展如何?数字货币未来何去何从?我们接下来的系列报告,将会把客观的历史逻辑与主观的认识逻辑结合起来,通过梳理数字货币的发展轨迹,来探寻数字货币未来的发展方向!

三、风险提示

密码算法安全性、协议安全性不足。