1、区块链定义
区块链技术本质上是一个去中心化的数据库,它是比特币的核心技术与基础架构,是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式加以保证的不易篡改、不易伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构验证和存储数据、利用分布式节点共识算法生成和更新数据、利用密码学方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约,来编程和操作数据的一种全新的分布式基础架构与计算范式。
区块链上存储的数据需由全网节点共同维护,可以在缺乏信任的节点之间有效地传递价值。相比现有的数据库技术,区块链具有以下技术特征。
1.块链式数据结构
区块链利用块链式数据结构验证和存储数据,通过前文对区块链基本概念的介绍可知,每个区块打包记录了一段时间内发生的交易,是对当前账本的一次共识,并且通过记录上一个区块的哈希值进行关联,从而形成块链式的数据结构。
2.分布式共识算法
区块链系统利用分布式共识算法来生成和更新数据,从技术层面杜绝了非法篡改数据的可能性,从而取代了传统应用中保证信任和交易安全的第三方中介机构,降低了为维护信用而造成的时间成本、人力成本和资源耗用。
3.密码学方式
区块链系统利用密码学的方式保证数据传输和访问的安全。存储在区块链上的交易信息是公开的,但账户的身份信息是高度加密的。区块链系统集成了对称加密、非对称加密及哈希算法的优点,并使用数字签名技术来保证交易的安全。
以上技术特征决定了区块链应用具有如下功能特征。
1.多中心
不同于传统应用的中心化数据管理,区块链网络中有多个机构进行相互监督并实时对账,从而避免了单一记账人造假的可能,增强了数据安全。
2.自动化
区块链系统中的智能合约是可以自动化执行一些预先定义好的规则和条款的一段计算机程序代码,它大大提高了经济活动与契约的自动化程度。
3.可信任
存储在区块链上的交易记录和其他数据都是不易篡改并且可溯源的,这样就能够很好地解决各方不信任的问题,无须第三方可信中介。
4.开放性
通常情况下,区块链系统的每个节点都有全网的账本,而且很多区块链项目开源了源代码。除了行业相关隐私数据会进行加密外,区块链的数据信息完全公开透明。
2、区块链相关概念
区块链以密码学的方式维护一份不易篡改和不易伪造的分布式账本,通过基于协商一致的规范和协议(共识机制)解决了去中心化的记账系统的一致性问题,其相关概念主要有以下3个。
- 交易(transaction):区块链上每一次导致区块状态变化的操作都称为交易,每一次交易对应唯一的交易哈希值,一段时间后便会对交易进行打包。
- 区块(block):打包记录一段时间内发生的交易和状态结果,是对当前账本的一次共识。每个区块以一个相对平稳的时间间隔加入到链上,在企业级区块链平台中,共识时间可以动态设置。
- 链(chain):区块按照时间顺序串联起来,通过每个区块记录上一个区块的哈希值关联,是整个状态改变的日志记录。
图1.1展示的区块链主要结构可以帮助大家理解这些概念。
图1.1 区块链主要结构
在区块链技术体系中,交易的可信和安全并不是通过某个权威的中心化机构来保证的,而是通过加密和分布式共识机制。区块链主要的技术创新有以下4点。
1.分布式账本
交易是由分布式系统中的多个节点共同记录的。每一个节点都记录了完整的交易记录,因此它们都可以参与监督交易的合法性并验证交易的有效性。不同于传统的中心化技术方案,区块链中没有任何一个节点有权限单独记录交易,从而避免了因单一记账人或节点被控制而造假的可能性。另外,由于全网节点参与记录,理论上讲,除非所有的节点都被破坏,否则交易记录就不会丢失,从而保证了数据的安全性。
2.加密技术和授权技术
区块链技术很好地集成了当前对称加密、非对称加密和哈希算法的许多优点,并使用了数字签名技术来保证交易的安全性,其中最具代表性的是使用椭圆曲线加密算法生成用户的公私钥对和使用椭圆曲线数字签名算法来保证交易安全。打包在区块上的交易信息对于参与共识的所有节点是公开的,但是账户的身份信息是经过严格加密的。
3.共识机制
共识机制是区块链系统中各个节点达成一致的策略和方法。区块链的共识机制替代了传统应用中保证信任和交易安全的第三方中心机构,能够降低由于各方不信任而产生的第三方信用成本、时间成本和资本耗用。常用的共识机制主要有PoW、PoS、DPoS、Paxos、Raft、PBFT等,共识机制既是数据写入的方式,又是防止篡改的手段。
- PoW:Proof of Work,工作量证明。按劳分配,谁工作量多,谁拿的多。体现在谁的挖矿设备CPU、GPU计算能力强,谁的工作量就多,缺点就是太费电。
- PoS:Proof of Stake,权益证明。按照持有此币的数量比例以及持有的时间,来进行发放利息。
- DPoS:Delegated Proof of Stake,授权股权证明。持有币的人可以进行投票选举,选举出一些节点做为代表来记账。
- Paxos:分布式一致性算法
- Raft:分布式一致性算法
- PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法。链上所有人参与投票,结果按照拜占庭共识算法来处理。
4.智能合约
智能合约是可以自动化执行预先定义规则的一段计算机程序代码,本身就是一个系统参与者。它能够实现价值的存储、传递、控制和管理,为基于区块链的应用提供了创新性的解决方案。
3、区块链分类
按照节点参与方式的不同,区块链技术可以分为:公有链(public blockchain)、联盟链(consortium blockchain)和私有链(private blockchain)。按照权限的不同,区块链技术可以分为:许可链(permissioned blockchain)和非许可链(permissionless blockchain)。在前述的三大类区块链技术中,联盟链和私有链属于许可链,公有链属于非许可链。
3.1、公有链
公有链,顾名思义,就是公开的区块链。公有链是全公开的,所有人都可以作为网络中的一个节点,而不需要任何人给予权限或授权。在公有链中,每个节点都可以自由加入或者退出网络,可以参与链上数据的读写、执行交易,还可以参与网络中共识达成的过程,即决定哪个区块可以添加到主链上并记录当前的网络状态。公有链是完全意义上的去中心化区块链,借助密码学中的加密算法保证链上交易的安全。在采取共识算法达成共识时,公有链主要采取工作量证明(proof of work,PoW)机制、权益证明(proof of stake,PoS)机制和股份授权证明(delegated proof of stake,DPoS)机制等共识算法,将经济奖励和加密数字验证结合起来,达到去中心化和全网达成共识的目的。在这些算法共识形成的过程中,每个节点都可以为共识过程做出贡献,也就是俗称的“挖矿”,来获取与贡献成正比的经济奖励,也就是系统中发行的“数字代币”。
公有链也称为公共链,它属于一种非许可链,不需要许可就可以自由加入或退出。当前最典型的代表应用有比特币、以太坊(Ethereum)等。因其完全去中心化和面向大众的特性,公有链通常适用于“虚拟加密货币”和一些面向大众的金融服务以及电子商务等。
3.2、联盟链
联盟链不是完全去中心化的,而是一种多中心化或者部分去中心化的区块链。在区块链系统运行时,它的共识过程可能会受指定节点的控制。例如,在一个有15个金融机构接入的区块链系统中,每个机构都作为链上的一个节点,每确认一笔交易,都需要至少对10个节点进行确认(2/3确认),这笔交易或者这个区块才能被认可。联盟链账本上的数据与公有链的完全公开不同,只有联盟成员节点才可以访问,并且链上的读写权限、参与记账规则等操作也需要由联盟成员节点共同决定。因为联盟链场景中的参与者组成一个联盟,参与共识的节点相对公有链而言会少很多,并且一般针对某个商业场景,所以共识协议一般不采用与工作量证明类似的挖矿机制,同时也不一定需要代币作为激励机制,而是采用PBFT、Raft这类适用于多中心化且效率较高的共识算法。同时,联盟链对交易的时间、状态、每秒交易数等与公有链有很大区别,所以它比公有链有更高的安全和性能要求。
联盟链属于一种许可链,不像公有链那样任何人都能自由加入,而是需要一定的权限许可才可以作为一个新的节点加入。当前联盟链典型的代表有Linux基金会支持的超级账本(Hyperledger)项目、R3区块链联盟开发的Corda,以及微众银行推出的FISCO BCOS等。
3.3、私有链
私有链是指整个区块链上的所有写入权限仅仅掌握在一个组织手里,而读取权限可以根据情况对外开放或者任意进行限制。所以,私有链的应用场景一般是企业内部总公司对分公司的管理,如数据库管理和审计等。相比于公有链和联盟链,私有链的价值主要体现在它可以提供一个安全、可追溯、不易篡改的平台,并且可以同时防止来自内部和外部的安全攻击。目前对于私有链存在着一些争议,有人认为私有链的意义不大,因为它需要依赖于第三方的区块链平台机构,所有的权限都被控制在一个节点中,已经违背了区块链技术的初衷,不能算一种区块链技术,而是已经存在的分布式账本技术。但是也有人认为私有链具有很大的潜在价值,因为它可以给当前存在的许多问题提供很好的解决方案,比如企业内部规章制度的遵守、金融机构的反洗钱行为以及政府部门的预算和执行,等等。
与联盟链一样,私有链也属于一种许可链,不过它的许可权掌握在单一节点中,在有些场景中,私有链还被称为专有链。当下私有链的应用不是很多,开创者还在努力探索之中。当前已经存在的应用主要有英国币科学公司(Coin Sciences Ltd.)推出的多链(multichain)平台,其宗旨是希望帮助各企业快速地部署私有链环境,提供良好的隐私保护和权限控制。
自诞生至今,区块链技术经历了3次大的技术演进,其典型代表平台为2009年的比特币、2013年的以太坊和2015年的Fabric和Hyperchain,其组织形态从资源消耗严重、交易性能低下、缺乏灵活控制机制的公有区块链,向高效共识、智能可编程、可保护隐私的联盟区块链转变。当前,Hyperchian平台的TPS(每秒事务处理量)已达到千甚至万量级,可以满足大部分商业场景的需要。将来,随着技术的进一步发展,基于联盟链的区块链商业应用将成为区块链应用的主要形态。
4、区块链发展历程
当下,对于区块链的发展阶段划分,一个被普遍接受的分类来自区块链研究者梅兰妮·斯万,在《区块链:新经济蓝图》一书中,她将区块链分为:区块链1.0,货币;区块链2.0,合约;区块链3.0,应用。
比特币所实现的基于零信任基础、真正去中心化的分布式系统,其实是解决一个30多年前由莱斯利·兰伯特(Leslie Lamport)等人提出的拜占庭将军问题。区块链技术从诞生至今,其发展历程大致可以分为4个阶段:技术起源、区块链1.0、区块链2.0和区块链3.0,如图1.2所示。
图1.2 区块链发展历程
4.1、技术起源
区块链技术源于中本聪创造的比特币。比特币是中本聪站在巨人的肩膀上,基于前人的各种相关技术和算法,结合自己独特的创造性思维而设计出来的。下面简要介绍区块链相关基础技术的发展历史。
区块链利用工作量证明(proof of work,PoW)这种共识机制来实现交易更新和共享,解决了莱斯利·兰伯特(Leslie Lamport)等人在1982年提出的拜占庭将军问题(Byzantine Generals problem),这是一个非常著名的、具有容错性的分布式计算领域问题,即在一个存在故障节点和错误信息的分布式系统中保证正常节点达成共识,从而保证信息传输的一致性。
PoW机制源于辛西娅·迪沃克(Cynthia Dwork)在1993年提出的工作量证明思想,最初被广泛应用于过滤垃圾邮件。1997年,亚当·巴克(Adam Back)发明了Hashcash(一种工作量证明算法),该算法利用成本函数的不可逆性,具有难于破解却易于验证的特点。其算法设计理念被中本聪改进之后,成为比特币区块链节点达成共识的核心技术之一,可以达到防止伪造交易的目的,是比特币的基石。1998年,Wei Dai使用PoW机制提出了匿名的“分布式电子货币系统”B-money,这是第一个去中心化的“电子加密货币”。比特币区块链的许多思想就是借鉴了B-money。1999年,马库斯·雅各布森(Markus Jakobsson)和阿里·朱尔斯(Ari Juels)正式发表了工作量证明这个概念。2005年,Hal Finney提出可重复使用的工作量证明机制(reusable proofs of work,RPoW),结合Wei Dai提出的B-money系统与亚当·巴克(Adam Back)发明的Hashcash算法来创造“数字加密货币”。2008年,中本聪在一个隐秘的密码学论坛组发表了一篇关于比特币的论文,提出了利用PoW和时间戳机制构造出链式交易区块,实现了一种去中心化的匿名支付方式。而时间戳机制最早是由斯图亚特·哈伯(Stuart Haber)与斯科特·斯托尼塔(W. Scott Stornetta)提出的,用来确保电子文件安全,中本聪在比特币中采用了这一技术,对账本中的交易进行追本溯源。
为保证区块链中交易的安全性,区块链技术采用了1992年斯科特·范斯通(Scott Vanstone)等人提出的椭圆曲线数字签名算法(elliptic curve digital signature algorithm,ECDSA)。1985年,尼尔·科比次(Neal Koblitz)和维克多·米勒(Victor Miller)两人最先将椭圆曲线用于密码学中,独立提出椭圆曲线密码学(elliptic curve cryptography,ECC)。ECDSA正是在ECC的基础上提出的。ECC与之前的RSA同为建立公开密钥加密算法,但是ECC可用简短且快速的密钥达到与RSA相同的安全强度,且更加难以攻破。ECC逐渐成为保障网络安全与隐私的首选之策。在安全隐私方面,比特币很多设计与创新借鉴了密码学匿名现金系统eCash,这是大卫·乔姆(David Chaum)在1990年基于自己在1982提出的不可追踪密码学网络支付系统理念开创的。虽然eCash不是一个去中心化的系统,但它也是数字货币历史上重要的里程碑。
从上述技术发展历史来看,区块链技术并不是一蹴而就的,而是一定背景和技术发展下的必然产物。关于区块链的核心技术,后续章节会进行系统性的详细介绍。
莱斯利·兰伯特博士(Leslie Lamport):2013年图灵奖得主,美国计算机科学家,数学家,排版系统
LaTeX /ˈleɪteks/
的开发者,分布式系统的开创者,Paxos算法提出者。
辛西娅·迪沃克(Cynthia Dwork):美国科学院、工程院院士,微软杰出科学家,2020年Donald E. Knuth Prize(高德纳奖:授予为计算机科学基础做出杰出贡献的人,以计算机科学家高德纳(Donald E. Knuth)命名。)获得者。
亚当·巴克(Adam Back):密码学家,隐私保护/电子现金,Hashcash(被用作比特币挖矿)发明人,计算机科学博士,Blockstream联合创始人兼CEO。
戴维(Wei Dai):他是一名计算机工程师和密码朋克,以b-money的创造者和Crypto++库的开发者而闻名。
马库斯·雅各布森(Markus Jakobsson):计算机安全研究员,企业家和作家,其工作重点是数字安全问题,目前是Agari的首席科学家。
阿里•朱尔斯(Ari Juels):是雅各布以色列理工学院-康奈尔大学研究所(Jacobs Technion-Cornell Institute)以及康奈尔大学计算机系的一名教授。他是加密货币和合约倡议(IC3)的联合董事。他也是Chainlink Labs的首席科学家。
斯图亚特·哈伯(Stuart Haber)、斯科特·斯托尼塔(W. Scott Stornetta):密码学家,据newsbtc消息,1991年,密码学家Stuart Haber和Scott Stornetta首次发明了时间戳,,他们用加密散列算法为每个数字文档生成唯一ID,每次更改文档时,ID都会更改,最终它们推出了名为Surety的时间戳服务。1995年,他们开始每周在《纽约时报》分类版的一个小广告中发布新添加的哈希值,这是区块链技术应用的的第一个实例,比中本聪(Satoshi Nakamoto)发布比特币早十三年。
斯科特·范斯通(Scott Vanstone):是滑铁卢大学数学系的数学家和密码学家。他是该校应用密码研究中心的成员,也是网络安全公司Certicom的创始人之一。
尼尔·科比次(Neal Koblitz):是华盛顿大学数学教授。他也是滑铁卢大学应用密码研究中心的兼职教授。他是超椭圆曲线密码学的创始人,也是椭圆曲线密码学的独立联合创始人。
维克多·米勒(Victor Miller)博士:美国数学家,椭圆曲线密码学的独立联合创始人,曾在大学任职。
大卫·乔姆(David Chaum):是一位美国计算机科学家和密码学家。他是密码学和隐私保护技术的先驱,并被广泛认为是数字现金的发明者。他被称为“在线匿名之父”和“加密货币教父”。
4.2、区块链1.0:“数字货币”
在区块链1.0阶段,区块链技术的应用范围主要集中在“数字货币”领域。由于比特币区块链解决了双花问题和拜占庭将军问题,真正扫清了“数字货币”流通的主要障碍,很多“山寨数字货币”开始大量涌现。这些“数字货币”的技术架构一般都可分为3层:区块链层、协议层和“货币层”。区块链层作为这些“数字货币”系统的底层技术,是最核心的部分,系统的共识过程、消息传递等核心功能都是通过区块链达成的。协议层则主要为系统提供一些软件服务、制定规则,等等。“货币层”则主要作为价值表示,用来在用户之间传递价值。
在区块链1.0阶段,基于区块链技术构建了很多去中心化数字支付系统,对传统的金融体系有着一定的冲击。
4.3、区块链2.0:智能合约
在比特币和其他“山寨币”的资源消耗严重、无法处理复杂逻辑等弊端逐渐暴露后,业界逐渐将关注点转移到了比特币的底层支撑技术区块链上,产生了运行在区块链上的模块化、可重用、自动执行脚本,即智能合约。这大大拓展了区块链的应用范围,区块链由此进入2.0阶段。业界慢慢地认识到区块链技术潜藏的巨大价值。区块链技术开始脱离“数字货币”领域的创新,其应用范围延伸到金融交易、证券清算结算、身份认证等商业领域。涌现了很多新的应用场景,如金融交易、智能资产、档案登记、司法认证,等等。
以太坊是这一阶段的代表性平台,它是一个区块链基础开发平台,提供了图灵完备的智能合约系统。通过以太坊,用户可以自己编写智能合约,构建去中心化的DAPP。基于以太坊智能合约图灵完备的性质,开发者可以编程任何去中心化应用,例如投票、域名、金融交易、众筹、知识产权、智能财产,等等。目前在以太坊平台运行着很多去中心化应用,按照其“白皮书”说明,主要有3种应用。第一种是金融应用,包括“数字货币”、金融衍生品、对冲合约、储蓄钱包、遗嘱这些涉及金融交易和价值传递的应用。第二种是半金融应用,它们涉及金钱的参与,但有很大一部分是非金钱的方面。第三种则是非金融应用,如在线投票和去中心化自治组织这类不涉及金钱的应用。
在区块链2.0阶段,以智能合约为主导,越来越多的金融机构、初创公司和研究团体加入了区块链技术的探索队列,推动了区块链技术的迅猛发展。
4.4、区块链3.0:超越“货币”、经济和市场
随着区块链技术的不断发展,区块链技术的低成本信用创造、分布式结构和公开透明等特性的价值逐渐受到全社会的关注,在物联网、医疗、供应链管理、社会公益等各行各业中不断有新应用出现。区块链技术的发展进入了区块链3.0阶段。在这一阶段,区块链的潜在作用并不仅仅体现在货币、经济和市场方面,更延伸到了政治、人道主义、社交和科学领域,区块链技术已经帮助特殊的团体来处理现实中的问题。而随着区块链技术的继续发展,我们可以大胆构想,未来它将广泛而深刻地改变人们的生活方式,并重构整个社会,重铸信用价值。或许将来当区块链技术发展到一定程度时,整个社会将进入区块链时代,每一个个体都可作为区块链网络中的一个节点。社会资源的分配使用去中心化技术,区块链或将成为一个促进社会经济发展的理想框架。
5、区块链关键技术
5.1、基础模型
图1.3所示是区块链的基本架构,该图的绘制参考了《区块链技术发展现状与展望》和工信部《中国区块链技术和应用发展白皮书(2016)》中的区块链架构图。区块链基本架构可以分为数据层、网络层、共识层、激励层、合约层和应用层:
- 数据层封装了区块链的链式结构、区块数据以及非对称加密等区块链核心技术;
- 网络层提供点对点的数据通信传播以及验证机制;
- 共识层主要是网络节点间达成共识的各种共识算法;
- 激励层将经济因素引入区块链技术体系之中,主要包括经济因素的发行机制和分配机制;
- 合约层展示了区块链系统的可编程性,封装了各类脚本、智能合约和算法;
- 应用层则封装了区块链技术的应用场景和案例。
在该架构中,基于时间戳的链式结构、分布式节点间的共识机制和可编程的智能合约是区块链技术最具代表性的创新点。一般可以在合约层编写智能合约或者进行脚本编程,来构建基于区块链的去中心化应用。下面将对本架构中每一层所涉及的技术展开具体介绍。
图1.3 区块链基本架构
5.2、数据层
数据层是区块链的核心部分,区块链本质上是一种数据库技术和分布式共享账本,是由包含交易信息的区块从后向前有序连接起来的一种数据结构。该层涉及的技术主要包括:区块结构、Merkle树、非对称加密、时间戳、数字签名和哈希函数。时间戳和哈希函数相对比较简单,这里重点介绍一下区块结构、Merkle树、非对称加密和数字签名。
1.区块结构
每个区块一般都由区块头和区块体两部分组成。如图1.4所示,区块头部分包含了父区块哈希值、时间戳、Merkle根等信息,而区块体部分则包含了此区块中所有的交易信息。除此之外,每一个区块还对应着两个值来识别区块:区块头哈希值和区块高度。
图1.4 区块结构
2.Merkle树
前面介绍了区块头哈希值、区块高度和区块头的结构,接下来看看区块体。区块体存储着交易信息,在区块中它们是以一棵Merkle树的数据结构进行存储的,而Merkle树是一种用来有效地总结区块中所有交易的数据结构。Merkle树是一棵哈希二叉树,树的每个叶子节点都是一笔交易的哈希值。
下面通过一个实例来对Merkle树进行进一步的介绍。图1.5是一棵只有4笔交易的Merkle树,即交易A、B、C和D。
图1.5 Merkle树
第一步,使用两次SHA256算法对每笔交易数据进行哈希运算,得到每笔交易的哈希值,这里可以得到HA、HB、HC、HD这4个哈希值,也就是这棵Merkle树的叶子节点。例如,
HA = SHA256(SHA256(交易A))
第二步,对两个叶子节点HA、HB的哈希值同样使用两次SHA256进行组合哈希运算,将会得到一个新的哈希值HAB,对HC、HD进行同样的操作将获得另一个哈希值HCD。例如,
HAB = SHA256(SHA256(HA+HB))
第三步,对现有的两个哈希值HAB、HCD进行第二步中的组合运算,最后将得到一个新的哈希值HABCD。
HABCD = SHA256(SHA256(HAB+HCD))
此时我们已经没有了其他同高度节点,所以最后的HABCD就是这一棵Merkle树的Merkle根。之后将这个节点的32字节哈希值写入区块头部Merkle根字段中。Merkle树的整个形成过程结束。
因为Merkle树是一棵二叉树,所以它需要偶数个叶子节点,也就是偶数笔交易。但是在很多情况下,某个区块的交易数目会出现奇数笔。对于这种情况,Merkle树的解决方案是复制最后一笔交易,以此构造成偶数个叶子节点,这种偶数个叶子节点的二叉树也称为平衡树。
3.非对称加密与数字签名
非对称加密是区块链技术中用于安全性需求和所有权认证时采用的加密技术,常见的非对称加密算法有RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)和ECDSA(椭圆曲线数字签名算法)等等。与对称加密算法不同的是,非对称加密算法需要两个密钥:公开密钥(public key)和私有密钥(private key)。基于非对称加密算法可使通信双方在不安全的媒体上交换信息,安全地达成信息的一致。公开密钥是对外公开的,而私有密钥是保密的,其他人不能通过公钥推算出对应的私钥。每一个公开密钥都有对应的私有密钥,如果我们使用公开密钥对信息进行了加密,那么必须有对应的私有密钥才能对加密后的信息进行解密;而如果是用私有密钥加密信息,则只有对应的公开密钥才可以进行解密。在区块链中,非对称加密主要用于信息加密、数字签名等场景。
图1.7 信息加密
而在数字签名场景(如图1.8所示)中,发送者A先用哈希函数对原文生成一个摘要(digest),然后使用私钥对摘要进行加密,生成数字签名(signature),之后将数字签名与原文一起发送给接收者B;B收到信息后,使用A的公钥对数字签名进行解密得到摘要,由此确保信息是A发出的,然后再对收到的原文使用哈希函数产生摘要,并与解密得到的摘要进行对比,如果相同,则说明收到的信息在传输过程中没有被修改过。
图1.8 数字签名
5.3、网络层
网络层是区块链平台信息传输的基础,通过P2P的组网方式、特定的信息传播协议和数据验证机制,区块链网络中的每个节点都可以平等地参与共识与记账。下面将详细介绍区块链平台网络层中的P2P网络架构、信息传输机制和数据验证机制。
5.3.1、P2P网络架构
区块链网络架构一般采用的是基于互联网的P2P(peer-to-peer,点对点)架构,在P2P网络中,每台计算机的每个节点都是对等的,它们共同为全网提供服务。而且,没有任何中心化的服务端,每台主机都可以作为服务端响应请求,也可以作为客户端使用其他节点所提供的服务。P2P通信不需要从其他实体或CA获取地址验证,因此有效地消除了篡改和第三方欺骗的可能性。所以P2P网络是去中心化和开放的,这也正符合区块链技术的理念。
在区块链网络中,所有的节点地位均等且以扁平式拓扑结构相互连通和交互,每个节点都需要承担网络路由、验证区块数据、传播区块数据等功能。在比特币网络中,存在着两类节点:一类是全节点,它保存着区块链上所有的完整数据信息,并需要实时地参与区块链数据的校验和记录来更新区块链主链;另一类是轻节点,它只保存着区块链中的部分信息,通过简易支付验证(SPV)方式向其他相邻的节点请求数据以便完成数据的验证。
5.3.2、传输机制
在新的区块数据生成后,生成该数据的节点会将其广播到全网的其他节点以供验证。目前的区块链底层平台一般会根据自身的实际应用需求,在比特币传输机制的基础上重新设计或者改进出新的传输机制,如以太坊区块链集成了所谓的“幽灵协议”,以解决因区块数据确认速度快而导致的高区块作废率和随之而来的安全性风险。
5.3.3、验证机制
在区块链网络中,所有的节点都会时刻监听网络中广播的交易数据和新产生的区块。在接收到相邻节点发来的数据后,会首先验证该数据的有效性:若数据有效则按接收顺序为新数据建立存储池来暂存这些数据,并且继续向邻近节点转发;若数据无效则立即废弃该数据,从而保证无效数据不会在区块链网络中继续传播。验证有效性的方法是根据预定义好的标准,从数据结构、语法规范性、输入输出和数字签名等各方面进行校验。对于新区块的校验同理,某节点产生新区块后,其他节点按照预定义的标准对新区块的工作量证明、时间戳等进行校验,若确认有效,则将该区块链接到主区块链上,并开始争取下一个区块的记账权。
5.4、共识层
- PoW(工作量证明)机制
- PoS(股权证明)机制
- DPoS(股份授权证明)机制
- PBFT(实用拜占庭容错)算法
- Raft(信道可信条件下)共识算法
5.5、激励层
- 发行机制
- 分配机制
5.6、合约层
合约层作为在区块链系统中编程功能的实现,封装了各种智能合约、脚本算法等。作为全球账本的区块链系统,比特币本身就具备简单的脚本编程功能。而作为区块链2.0的代表,以太坊平台极大地强化了编程语言方面的功能,理论上可以使用特定的脚本语言来实现任何功能的应用(即DApp)。通过这些应用,以太坊可以被视为“全球计算机”,任何人都可以使用区块链系统中的共识性、一致性来上传和执行任意脚本程序,并通过共识机制来保证程序有效安全地运行,而不存在数据泄露以及恶意篡改等问题。
智能合约与区块链的结合极大地丰富了区块链的价值内涵,其特性有以下3点:
- 通过程序逻辑中的丰富合约规则表达能力实现了不信任方之间的公平交换,避免了恶意方中断协议等可能性;
- 最小化交易方之间的交互,避免了计划外的监控和跟踪的可能性;
- 丰富了交易与外界状态的交互,比如可信数据源提供的股票信息、天气预报等。
6、区块链产业现状
6.1、区块链发展态势
区块链最早应用在“数字货币”方面,数字资产众筹经历了从萌芽到爆发的过程,但随之而来的是资产发行无序,市场上各类项目良莠不齐,大部分功能型通证并无实际使用价值。2018年后,数字资产市场出现了合规化资产发行模式。2017年至2018年,数字货币热潮逐渐退却,向多元化技术体系延伸,链上扩容、链下扩容、DAG、跨链、隐私币等技术方案的热度不断攀升。从2019年开始,在较长一段时间内,区块链的产业发展会从思维理论为重到实体应用为主,从跟风发行“虚拟币”转向稳步造福实体产业。
6.2、区块链政府规划
图1.9 各地区块链发展战略与规划
6.3、区块链生态图谱
区块链技术是具有普适性的底层技术框架,可以为金融、经济、科技甚至政治等各领域带来深刻变革。
总的来说,区块链的应用可以分为两类。
第一类,基于区块链分布式记账的特点开发的应用,包括身份验证、权益证明、资产鉴证等。
第二类,利用区块链的去中心化体系开发的各种去中心化应用,从技术的可行性角度来看,目前所有涉及价值传递的行业皆可通过区块链技术进行底层重构。
图1.10 区块链产业生态图谱
7、区块链应用场景
7.1、数字票据
传统的纸质票据存在着易丢失、易伪造和被篡改等风险。通过引入区块链技术,可以将票据信息、状态记录在区块链平台。一笔票据交易一旦生成,区块链上的各节点首先对交易进行验证,一旦各节点达成“共识”,便把该条交易记录于区块链上,且不易篡改。区块链内存在多个副本,增加了内容被恶意篡改的成本,因此相对于传统票据,具有更高的安全性。另外,传统的票据行业,各个机构之间的对账与清算相对比较复杂,而区块链技术通过各个节点共同记账、相互验证的方式,可有效地提高资金清算的效率。同时,各个机构也保持了相对独立的业务自主性,从而实现了效率与灵活的完美平衡。由于参与方存在互信问题,传统的票据流通审核烦琐,变现困难,难以实现互通互利。通过将票据信息登记在区块链平台上,利用区块链扩展成本低、交易步骤简化的特性,将票据转变为客户可持有、可流通、可拆分、可变现的具有一定标准化程度的数字资产。
7.2、供应链金融
传统的供应链金融平台一般由单个金融机构主导,难以实现同业间的扩展和推广。区块链技术让参与方只需专注于业务系统对接区块链平台即可,可实现全行业的快速覆盖。供应链上企业之间的贸易信息、授信融资信息,以及贸易过程中涉及的仓储、物流信息均登记在区块链上,且信息不易篡改,保证了资产的真实有效,降低了企业融资成本和银行授信成本。跨机构信息通过区块链的共识机制和分布式账本保持同步,通过访问任意一个节点即可获取完整的交易数据,打破信息孤岛。机构通过访问内部区块链节点即可获得完整的交易数据,增强企业间的信用协作。通过将应收账款、承兑汇票、仓单等资产凭证记录在区块链上,并支持转让、质押等相关操作,实现了资产数字化,并通过区块链构造了一个数字化的、可以点对点传输价值的信用系统,实现了区块链上的价值传输。这一可信赖的价值传输系统既提高了需求方的融资能力,又提高了供应方的监管能力,为金融系统健康稳定提供了根本保障。通过智能合约控制供应链流程,减少人为交互,提升产业效率。无须中心平台审核确认,通过传感器探测真实仓储、物流信息,使用无线通信网络发送可信数据到区块链验证节点,保证满足合约条件时,自动触发相关操作,减少操作失误。
7.3、应收账款
传统的应收账款通过线下交易确认的方式完成,而伪造交易、篡改应收账款信息等风险的存在降低了交易参与方的信任感。将应收账款的全流程操作通过区块链平台进行,实现了应收账款交易的全程签名认证并且不可抵赖,同时使用智能合约实现权限和状态控制,使得应收账款更加安全可控,构建了高度可信的交易平台。应收账款交易流程中参与方众多,业务复杂,面对传统应收账款的融资申请,金融机构需要进行大量的贸易背景审查。区块链平台通过时间戳来记录整个应收账款的生命周期,从而使得所有的市场参与者都可以看到资金流和信息流,排除了票据造假的可能性。传统的应收账款由于存在互信问题,在交易市场上流通困难。应收账款以数字资产的方式进行存储、交易,不易丢失和无法篡改的特点使得新的业务模式可以快速推广,在提高客户资金管理效率的同时降低使用成本,并在不同企业间形成互信机制,使得多个金融生态圈可以通过区块链平台互通互利,具有良好的业务价值和广阔的发展空间。
7.4、数据交易
数据作为特殊商品具有独特性,存在被复制、转存的风险,按照商品流通中介模式建立的数据中介平台构成了对数据交易双方权益的潜在威胁,变成了数据交易的一个障碍。只有建立符合数据特性的信息平台,通过技术机制而不是仅凭承诺来保障数据的安全和权益,做到让数据交易双方真正放心,才能加速数据的顺畅流动。通过区块链技术对数据进行确权,能够有效保障数据所有方的权益,杜绝数据被多次复制转卖的风险,把数据变成受保护的虚拟资产,对每笔交易和数据进行确权和记录。利用区块链的可追溯和不易篡改等特性,可以确保数据交易的合规、有效,激发数据交易的积极性,促成数据市场的规模性增长。
7.5、债券交易
债券业务是需要多家机构共同参与的一项业务,在其发行、交易等流程中,各机构之间需要通过传统的邮寄或者报文转发的形式进行信息的同步与确认。债券发行交易如果通过中心化系统实现,可能会存在人工操作性失误或恶意篡改的风险。使用区块链技术之后,系统可以由区块链底层来保证数据的同步与一致,降低不同机构系统之间对接的时间、人力和资金成本,从依靠基于业务流的低效协同升级为不依靠任何中介而由平台保证基本业务流程的低成本、高效率、高可信协作系统。而且传统的中心化系统很多信息都封闭在机构内部,无法对外部系统进行及时、有效的监管,监管会存在盲区。利用区块链技术,监管机构以节点的形式加入区块链,实时监控区块链上的交易。同时,智能合约使得债券在整个生命周期中具备限制性和可控制性,也可以有效提高监管效能。由于区块链的数据完整和不易篡改性,对任何价值交换历史记录都可以追踪和查询,能够清晰查看和控制债券的流转过程,从而保证债券交易的安全性、有效性和真实性,有效防范市场风险。同时,基于区块链技术可避免第三方机构对账清算的工作,从而有效提升债券交易的清算效率。
7.6、大宗交易
基于区块链技术的大宗交易平台,可以实现各清算行之间大宗交易的实时清算,提高大宗交易效率,为业务开展提供便利。智能合约控制大宗交易流程,减少人为交互,提升处理效率。无须中心平台审核确认,保证报价满足撮合条件时,自动触发相关操作,减少操作失误。交易所和清算所可以互为主备,负责所有交易数据定序广播,发起共识。实时灾备容错,发生重大故障可以秒级切换主节点。接入节点发生故障,通过内置算法快速恢复历史数据,避免交易数据丢失。会员和银行接入端独立处理查询,数据实时同步,减轻主节点压力。监管节点实时获取相关交易数据,监管机构对大宗交易进行实时监管。
7.7、跨境支付
传统跨境支付由于存在币种、汇率的问题,十分依赖于第三方机构。这主要存在两个问题:一是流程烦琐周期长,二是手续费较高。传统的跨境交易都是非实时的,通常需要一天的时间。由于人工对账,成本自然会高。目前一些第三方支付公司如银联、财付通、支付宝等,跨境支付的流程大致如下。
- 国内用户在跨境电商平台购买商品的时候可以使用国内常用的支付方式(如网银、快捷支付、扫码等)。
- 支付公司去合作银行进行购汇(购汇成功后,外币进入支付公司的外币备付金账户)。
- 商户维护指定的境外收款人信息,支付公司向境外付汇(从支付公司外币备付金至境外收款人账户)。
在跨境支付场景中引入区块链技术,借助其分布式账本、数据不易篡改、全程可追溯、多方实时监督和验证等技术特性,可高效地实现资金流和信息流的可信共享,从而建立新型的去中心化价值转移模式和路径,打破原有基于第三方机构的信任构建模式,建立基于技术的客观、公正、可信、高效的跨境支付新模式。
7.8、其他场景
区块链是一种可以进行价值传输的协议,除了上述场景外,还可应用于其他一切与价值转移有关的场景,如数字版权、公证、身份认证、社会公益,等等。
在消费金融领域,阳光保险公司用区块链技术作为底层技术架构推出了“阳光贝”积分,用户在享受普通积分功能的基础上,还能以“发红包”的形式将积分向朋友转赠,并可与其他公司发行的积分进行互换。
在数字版权领域,针对知识产权侵权现象,利用区块链技术可以通过时间戳、哈希算法对作品进行确权,证明知识产权的存在性、真实性和唯一性,并可对作品的全生命周期进行追溯,极大地降低了维权成本。
在医疗领域,患者私密信息泄露情况时有发生,2015年4月,Factom宣称与医疗记录和服务方案供应商Healthnautica展开合作,研究运用区块链技术保护医疗记录以及追踪账目,为医疗记录公司提供防篡改数据管理。
在教育领域,由于学生信用体系不完整,无历史数据信息链,这就导致政府和用人企业无法获得完整、有效的信息。利用区块链技术对学生的学历信息进行存储,可以解决信息不透明及容易被篡改的问题,有利于构建良性的学生信用体系。
在社会公益领域,慈善机构想要获得群众的支持,就必须具有公信力,而信息的透明则是必要条件之一,蚂蚁金服等公司已开始把区块链技术应用于公益捐赠平台,这为加速公益透明化提供了一种可能。区块链技术也可用于政府信息公开领域,帮助政府部门实施公共治理及服务创新,提升政府部门的效率及效力。
区块链的其他应用场景还有很多,区块链的未来存在着无限的可能,这需要更多优秀的公司、企业和人才加入区块链技术的探索队伍中,这样才能使区块链技术得到更快、更好的发展。人们有理由期待在区块链技术的范式下,又一次“大航海时代”的来临,将给各行各业和社会带来一次重构。
8、区块链主流平台
比特币(Bitcoin)是第一个区块链应用,使用工作量证明机制来达成网络节点的共识。由于比特币网络任何人都可以加入,没有访问权限,因此它是一个公有链,不支持智能合约,但是可以支持一些图灵不完备的编程脚本来进行一些简单的操作编程。其公网TPS小于7。
以太坊(Ethereum)是一个开源的、图灵完备的且支持智能合约的公有区块链平台,也被称为“第二代区块链平台”。该平台以智能合约为核心构建了一个良好活跃的App生态圈,还提供了多种语言支持的客户端(如go-ethereum、pyethapp和Parity等),从而使开发更为便利高效。而用户可以通过使用该平台发布的“以太币”(Ether)以及基于Solidity的合约,搭建属于自己的DApp应用并发布至以太坊平台上。目前以太坊的公网TPS约为100。
Hyperledger Fabric是Linux基金会成立的Hyperledger联盟所推出的一个孵化中的项目,目前正在构建标准化的数字账本,它旨在使用区块链技术帮助初创公司、政府和企业联盟之间减少工作的花费,提高效率。因此,它不是面向公众的,而是服务于公司、企业、组织等联盟团体,属于联盟链。该平台使用的是Go语言,共识算法则是PBFT算法。同样,它也支持智能合约编程,在Fabric中有自己的学名,叫Chaincode。Chaincode仅在验证节点上执行,且运行在被隔离的沙盒中,目前采用Docker作为执行Chaincode的容器。Fabric的公网TPS约为3000。
EOS(Enterprise Operation System)是Block.one公司开发的全新的区块链智能合约平台,从其名字就可以看出,建立EOS的目标就是为商业级智能合约与应用带来完善便捷的“操作系统”,其采用的石墨烯技术解决了以太坊交易时间和吞吐量小的问题。因此,EOS的架构能够运行商业级别的程序调度和并行运算,EOS的普通用户可以通过抵押代币而不是消耗代币的方式来运行智能合约。EOS公网的TPS约为3600。
比特股(BitShares)是一个点对点的多态数字资产交易系统,是DPoS共识机制的鼻祖。它为下一代企业家、投资者和开发人员提供技术,以利用全球去中心化共识和决策去寻找自由市场的解决方法。比特股也希望将区块链应用到基于互联网的所有行业(如银行、证券交易所、彩票、投票、音乐、拍卖等),通过数字公共账本来建立分布式自治公司(DAC),并且其成本低于传统成本。比特股区块链是一个公有链,其核心技术框架采用C++语言进行开发,公网TPS大于500。
公证通(Factom)将区块链技术应用到商业社会和政府部门的数据管理和记录中,协助各种应用程序的开发,包括审计系统、医疗信息记录、供应链管理、投票系统、财产契据、法律应用、金融系统等。公证通根据用户权益来制定政策和奖励机制,在其机制中,只有当用户权益提交至系统时才能获取相应的投票权,而可转移的Factoid权益没有投票权,这就有效地避免了PoS机制“没有人进行PoS”和“股份磨损”的问题。公证通的核心技术框架采用Go语言进行开发,TPS约为27。
瑞波(Ripple)是世界上第一个开放的支付网络,实现了基于区块链的付款等功能,它引入了一种共识机制——RPCA。该共识机制将整个网络分成许多个子网络,然后在子网络上进行共识运算。由于子网络的信任成本很低,所以其交易速度更快更高效,同时为了保证数据一致,子网络必须保持与整个网络节点中的20%节点进行连通。瑞波核心技术框架采用C++语言进行开发,公网TPS小于1000。
“未来币”(Nextcoin,NXT)是第二代去中心化“虚拟货币”,是第一个采用100%股权证明PoS的“电子货币”,改掉了第一代币资源消耗大、易受攻击等缺点。这与未来币提出的透明锻造技术密不可分,该技术可以实现全网节点的自动分工,在明确矿工和无须寻找记账节点的情况下,大大提高了交易速度。同时,对没有活动的节点进行锻造点数清零的操作可以大大降低网络分叉的风险。未来币的核心技术框架所采用的开发语言是Java,TPS小于1000。
Hyperchain是杭州趣链科技开发的一个满足行业需求的联盟区块链技术基础平台,通过整合并改进区块链开源社区和研究领域的前沿技术,集成了高性能的可靠共识算法RBFT,兼容开源社区的智能合约开发语言和执行环境,同时强化了记账授权机制和交易数据加密等关键特性,提供了功能强大的可视化Web管理控制台,对区块链节点、账簿、交易和智能合约等进行高效管理。Hyperchain与Fabric一样,采用了模块化设计理念,分为共识算法、权限管理、多级加密、智能合约引擎、节点管理、区块池、账本存储、数据存储共8个核心模块,旨在服务于票据、存单、股权、债券、登记、供应链管理等数字化资产、金融资产商业应用,并且其系统吞吐量可达到每秒处理上万笔交易,这在当前的区块链平台中是首屈一指的。
FISCO BCOS是由国内企业主导研发、对外开源、安全可控的企业级金融联盟链底层平台,由金链盟开源工作组协作打造,并于2017年正式对外开源。
社区以开源链接多方,截止2020年5月,汇聚了超1000家企业及机构、逾万名社区成员参与共建共治,发展成为最大最活跃的国产开源联盟链生态圈。底层平台可用性经广泛应用实践检验,数百个应用项目基于FISCO BCOS底层平台研发,超80个已在生产环境中稳定运行,覆盖文化版权、司法服务、政务服务、物联网、金融、智慧社区等领域。
FISCO BCOS以联盟链的实际需求为出发点,兼顾性能、安全、可运维性、易用性、可扩展性,支持多种SDK,并提供了可视化的中间件工具,大幅缩短建链、开发、部署应用的时间。此外,FISCO BCOS通过信通院可信区块链评测功能、性能两项评测,单链TPS可达两万。
表1.3中列出了各个平台所使用的共识机制、所属区块链类型、平台开发所采用的语言、是否支持智能合约以及每秒事务处理量(TPS)性能指标,以供读者进行更直观的统计和对比。
表1.3 区块链平台比较
平台 | 共识机制 | 类型 | 语言 | 智能合约 | TPS |
---|---|---|---|---|---|
Bitcoin | PoW | 公有链 | C++ | - | <7 |
Ethereum | PoW & PoS | 公有链 | Go | Yes(Solidity) | 约100 |
Hyperledger Fabric | PBFT | 联盟链 | Go | Yes(Go/Java/……) | 约3000 |
Eos | DPoS | 公有链 | C++ | Yes | 约3600 |
BitShares | DPoS | 公有链 | C++ | - | >500 |
Factom | PoS | 公有链 | Go | - | 约27 |
Ripple | RPCA | 公有链 | C++ | - | <1000 |
NXT | PoS | 公有链 | Java | - | <1000 |
Hyperchain | RBFT | 联盟链 | Go | Yes | >10 000 |
FISCO BCOS | RBFT/Raft/rPBFT | 联盟链 | C++ | Yes(Solidity) | >20 000 |