学习一项新技术,必始于了解其基本概念。本节将从比特币讲起,引出区块链技术,然后介绍区块链技术入门所必备的基础知识,例如区块链的定义、相关基本概念和区块链的分类等。
谈到区块链技术,人们往往会先联想到比特币,因为区块链技术最初是作为比特币的底层框架技术出现的。因此,我们在探究区块链技术之前,先来简单地了解一下区块链的起源——比特币。
早在20世纪80年代,人们就已经开始了“数字货币”的探索。但是直到比特币出现,“数字加密货币”的想法才变成了现实,“数字货币”及其衍生应用才开始迅猛发展。比特币是第一个区块链应用,也是迄今为止规模最大、应用范围最广的区块链应用。在2008年11月,一个化名为中本聪的人在一篇《比特币:一种点对点的电子现金系统》论文中,描述了一种如何建立一套全新的、去中心化的点到点交易系统的方法,并将他在论文中提出的理念付诸实践,开始研发比特币相关的功能。2009年1月3日,比特币正式运行,第一个区块——创世区块诞生了。2009年1月12日,中本聪通过比特币系统发送了10个比特币给密码学家哈尔·芬尼(Hal Finney),这是比特币系统自上线以来完成的第一笔交易。尽管充满了争议,但从技术角度来说,比特币是“数字货币”历史上一次了不起的创新。
与传统货币和在比特币诞生之前的“数字货币”相比,比特币最大的不同是不依赖于任何中心化机构,而是依靠加密和共识算法等数学原理。人们不再需要因为信任问题而消耗额外的资源,因此,比特币和区块链技术受到了众多的关注和追捧。
比特币作为一种基于区块链技术创造的“虚拟数字货币”,旨在解决之前的“数字货币”存在的以下问题:
当前的银行系统作为货币的第三方机构,确实可以有代价地解决上面的问题,但是如果把交易范围扩大到全球范围,又有哪一所银行能确保它在全球都是可以信任的呢?于是,就有人提出,是否可以设计一套分布式的数据库系统,它在全球范围内都可以访问,并完全中立、公正、安全。很多研究者努力探索并提出了一些解决方案,但由于种种原因未能真正被社会接纳,而比特币实现了这样的分布式账本技术。
从2014年开始,人们发现比特币的底层支撑技术区块链具有巨大的潜在应用价值,这正式引发了分布式账本(Distributed Ledger)技术的革新浪潮。随着探索者的不断创新,区块链技术已经脱胎于比特币,逐渐在金融、贸易、物流、征信、物联网、共享经济等诸多领域崭露头角。
区块链技术本质上是一个去中心化的数据库,它是比特币的核心技术与基础架构,是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式加以保证的不易篡改、不易伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构验证和存储数据、利用分布式节点共识算法生成和更新数据、利用密码学方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约,来编程和操作数据的一种全新的分布式基础架构与计算范式。
区块链上存储的数据需由全网节点共同维护,可以在缺乏信任的节点之间有效地传递价值。相比现有的数据库技术,区块链具有以下技术特征。
块链式数据结构
区块链利用块链式数据结构验证和存储数据,通过前文对区块链基本概念的介绍可知,每个区块打包记录了一段时间内发生的交易,是对当前账本的一次共识,并且通过记录上一个区块的哈希值进行关联,从而形成块链式的数据结构。
分布式共识算法
区块链系统利用分布式共识算法来生成和更新数据,从技术层面杜绝了非法篡改数据的可能性,从而取代了传统应用中保证信任和交易安全的第三方中介机构,降低了为维护信用而造成的时间成本、人力成本和资源耗用。
密码学方式
区块链系统利用密码学的方式保证数据传输和访问的安全。存储在区块链上的交易信息是公开的,但账户的身份信息是高度加密的。区块链系统集成了对称加密、非对称加密及哈希算法的优点,并使用数字签名技术来保证交易的安全。
以上技术特征决定了区块链应用具有如下功能特征。
多中心
不同于传统应用的中心化数据管理,区块链网络中有多个机构进行相互监督并实时对账,从而避免了单一记账人造假的可能,增强了数据安全。
自动化
区块链系统中的智能合约是可以自动化执行一些预先定义好的规则和条款的一段计算机程序代码,它大大提高了经济活动与契约的自动化程度。
可信任
存储在区块链上的交易记录和其他数据都是不易篡改并且可溯源的,这样就能够很好地解决各方不信任的问题,无须第三方可信中介。
开放性
通常情况下,区块链系统的每个节点都有全网的账本,而且很多区块链项目开源了源代码。除了行业相关隐私数据会进行加密外,区块链的数据信息完全公开透明。
区块链以密码学的方式维护一份不易篡改和不易伪造的分布式账本,通过基于协商一致的规范和协议(共识机制)解决了去中心化的记账系统的一致性问题,其相关概念主要有以下3个。
图1.1展示的区块链主要结构可以帮助大家理解这些概念。
图1.1 区块链主要结构
在区块链技术体系中,交易的可信和安全并不是通过某个权威的中心化机构来保证的,而是通过加密和分布式共识机制。区块链主要的技术创新有以下4点。
分布式账本
交易是由分布式系统中的多个节点共同记录的。每一个节点都记录了完整的交易记录,因此它们都可以参与监督交易的合法性并验证交易的有效性。不同于传统的中心化技术方案,区块链中没有任何一个节点有权限单独记录交易,从而避免了因单一记账人或节点被控制而造假的可能性。另外,由于全网节点参与记录,理论上讲,除非所有的节点都被破坏,否则交易记录就不会丢失,从而保证了数据的安全性。
加密技术和授权技术
区块链技术很好地集成了当前对称加密、非对称加密和哈希算法的许多优点,并使用了数字签名技术来保证交易的安全性,其中最具代表性的是使用椭圆曲线加密算法生成用户的公私钥对和使用椭圆曲线数字签名算法来保证交易安全。打包在区块上的交易信息对于参与共识的所有节点是公开的,但是账户的身份信息是经过严格加密的。
共识机制
共识机制是区块链系统中各个节点达成一致的策略和方法。区块链的共识机制替代了传统应用中保证信任和交易安全的第三方中心机构,能够降低由于各方不信任而产生的第三方信用成本、时间成本和资本耗用。常用的共识机制主要有PoW、PoS、DPoS、Paxos、Raft、PBFT等,共识机制既是数据写入的方式,又是防止篡改的手段。
智能合约
智能合约是可以自动化执行预先定义规则的一段计算机程序代码,本身就是一个系统参与者。它能够实现价值的存储、传递、控制和管理,为基于区块链的应用提供了创新性的解决方案。
按照节点参与方式的不同,区块链技术可以分为:公有链(public blockchain)、联盟链(consortium blockchain)和私有链(private blockchain)。按照权限的不同,区块链技术可以分为:许可链(permissioned blockchain)和非许可链(permissionless blockchain)。在前述的三大类区块链技术中,联盟链和私有链属于许可链,公有链属于非许可链。
公有链
公有链,顾名思义,就是公开的区块链。公有链是全公开的,所有人都可以作为网络中的一个节点,而不需要任何人给予权限或授权。在公有链中,每个节点都可以自由加入或者退出网络,可以参与链上数据的读写、执行交易,还可以参与网络中共识达成的过程,即决定哪个区块可以添加到主链上并记录当前的网络状态。公有链是完全意义上的去中心化区块链,借助密码学中的加密算法保证链上交易的安全。在采取共识算法达成共识时,公有链主要采取工作量证明(proof of work,PoW)机制、权益证明(proof of stake,PoS)机制和股份授权证明(delegated proof of stake,DPoS)机制等共识算法,将经济奖励和加密数字验证结合起来,达到去中心化和全网达成共识的目的。在这些算法共识形成的过程中,每个节点都可以为共识过程做出贡献,也就是俗称的“挖矿”,来获取与贡献成正比的经济奖励,也就是系统中发行的“数字代币”。
公有链也称为公共链,它属于一种非许可链,不需要许可就可以自由加入或退出。当前最典型的代表应用有比特币、以太坊(Ethereum)等。因其完全去中心化和面向大众的特性,公有链通常适用于“虚拟加密货币”和一些面向大众的金融服务以及电子商务等。
联盟链
联盟链不是完全去中心化的,而是一种多中心化或者部分去中心化的区块链。在区块链系统运行时,它的共识过程可能会受指定节点的控制。例如,在一个有15个金融机构接入的区块链系统中,每个机构都作为链上的一个节点,每确认一笔交易,都需要至少对10个节点进行确认(2/3确认),这笔交易或者这个区块才能被认可。联盟链账本上的数据与公有链的完全公开不同,只有联盟成员节点才可以访问,并且链上的读写权限、参与记账规则等操作也需要由联盟成员节点共同决定。因为联盟链场景中的参与者组成一个联盟,参与共识的节点相对公有链而言会少很多,并且一般针对某个商业场景,所以共识协议一般不采用与工作量证明类似的挖矿机制,同时也不一定需要代币作为激励机制,而是采用PBFT、Raft这类适用于多中心化且效率较高的共识算法。同时,联盟链对交易的时间、状态、每秒交易数等与公有链有很大区别,所以它比公有链有更高的安全和性能要求。
联盟链属于一种许可链,不像公有链那样任何人都能自由加入,而是需要一定的权限许可才可以作为一个新的节点加入。当前联盟链典型的代表有Linux基金会支持的超级账本(Hyperledger)项目、R3区块链联盟开发的Corda,以及趣链科技推出的Hyperchain平台等。
私有链
私有链是指整个区块链上的所有写入权限仅仅掌握在一个组织手里,而读取权限可以根据情况对外开放或者任意进行限制。所以,私有链的应用场景一般是企业内部总公司对分公司的管理,如数据库管理和审计等。相比于公有链和联盟链,私有链的价值主要体现在它可以提供一个安全、可追溯、不易篡改的平台,并且可以同时防止来自内部和外部的安全攻击。目前对于私有链存在着一些争议,有人认为私有链的意义不大,因为它需要依赖于第三方的区块链平台机构,所有的权限都被控制在一个节点中,已经违背了区块链技术的初衷,不能算一种区块链技术,而是已经存在的分布式账本技术。但是也有人认为私有链具有很大的潜在价值,因为它可以给当前存在的许多问题提供很好的解决方案,比如企业内部规章制度的遵守、金融机构的反洗钱行为以及政府部门的预算和执行,等等。
与联盟链一样,私有链也属于一种许可链,不过它的许可权掌握在单一节点中,在有些场景中,私有链还被称为专有链。当下私有链的应用不是很多,开创者还在努力探索之中。当前已经存在的应用主要有英国币科学公司(Coin Sciences Ltd.)推出的多链(multichain)平台,其宗旨是希望帮助各企业快速地部署私有链环境,提供良好的隐私保护和权限控制。
自诞生至今,区块链技术经历了3次大的技术演进,其典型代表平台为2009年的比特币、2013年的以太坊和2015年的Fabric和Hyperchain,其组织形态从资源消耗严重、交易性能低下、缺乏灵活控制机制的公有区块链,向高效共识、智能可编程、可保护隐私的联盟区块链转变。当前,Hyperchian平台的TPS(每秒事务处理量)已达到千甚至万量级,可以满足大部分商业场景的需要。将来,随着技术的进一步发展,基于联盟链的区块链商业应用将成为区块链应用的主要形态。