引自:区块链白皮书(2018年)、区块链白皮书(2020年)、中国区块链技术和应用发展白皮书、可信区块链赋能数字政府应用指南

区块链的概念

定义:区块链(Blockchain)是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也称为分布式账本技术(Distributed Ledger Technology)。典型的区块链以块-链结构存储数据。
工信部《中国区块链技术和应用发展白皮书》定义:区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。区块链可以理解为一个多方协作数据库,区块链技术是一种分布式账本的记账技术。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
总体上来说是一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
原理:典型的区块链系统中,各参与方按照事先约定的规则共同存储信息并达成共识。为了防止共识信息被篡改,系统以区块(Block)为单位存储数据,区块之间按照时间顺序、结合密码学算法构成链式(Chain)数据结构,通过共识机制选出记录节点,由该节点决定最新区块的数据,其他节点共同参与最新区块数据的验证、存储和维护,数据一经确认,就难以删除和更改,只能进行授权查询操作。
分类:按照系统是否具有节点准入机制,区块链可分类为许可链和非许可链。许可链中节点的加入退出需要区块链系统的许可,根据拥有控制权限的主体是否集中可分为联盟链和私有链;非许可链则是完全开放的,亦可称为公有链,节点可以随时自由加入和退出。
联盟链:根据一定特征所设定的节点能参与、交易,共识过程受预选节点控制的区块链。
私有链:写入权限在一个组织手里,读取权限可能会被限制的区块链。
公有链:任何人都能读取区块链信息,发送交易并能被确认,参与共识过程,是真正意义上的去中心化区块链,比特币区块链即是公有链最好的代表。

区块链与传统分布式数据库的区别

一是从复式记账演进到分布式记账。传统的信息系统,每位会计各自记录,每次对账时存在多个不同账本。区块链打破了原有的复式记账,变成“全网共享”的分布式账本,参与记账的各方之间通过同步协调机制,保证数据的防篡改和一致性,规避了复杂的多方对账过程。
二是从“增删改查”变为仅“增查”两个操作。传统的数据库具有增加、删除、修改和查询四个经典操作。对于全网账本而言,区块链技术相当于放弃了删除和修改两个选项4,只留下增加和查询两个操作,通过区块和链表这样的“块链式”结构,加上相应的时间戳进行凭证固化,形成环环相扣、难以篡改的可信数据集合。
三是从单方维护变成多方维护。针对各个主体而言,传统的数据库是一种单方维护的信息系统,不论是分布式架构,还是集中式架构,都对数据记录具有高度控制权。区块链引入了分布式账本,是一种多方共同维护、不存在单点故障的分布式信息系统,数据的写入和同步不仅仅局限在一个主体范围之内,需要通过多方验证数据、形成共识,再决定哪些数据可以写入。
四是从外挂合约发展为内置合约。传统上,财务的资金流和商务的信息流是两个截然不同的业务流程,商务合作签订的合约,在人工审核、鉴定成果后,再通知财务进行打款,形成相应的资金流。智能合约的出现,基于事先约定的规则,通过代码运行来独立执行、协同写入,通过算法代码形成了一种将信息流和资金流整合到一起的“内置合约”。

适应的场景及条件

区块链技术可以总结为“新型数据库、多业务主体、彼此不互信、业务强相关”。

区块链核心技术

区块链综合分布式存储、密码学技术、共识算法、智能合约等 ,在促进数据共享、优化业务流程、降低运营成本、提升协同效率、建设可信体系等方面具有技术优势。区块链最核心的 4项技术包括分布式账本、非对称加密、共识机制和智能合约。
(1)分布式账本
分布式账本是一种多中心化的数据记录方式,其优点在于数据公开透明和信息可回溯。分布式账本各节点中存储的每个记录都对应着一个时间戳和一个密码签名,若要改动分布式账本中的数据,必须得到接入网络的多数节点确认,而且任何一处改动都会在每个相对应副本中体现,因此,这种账本记录的交易都是可追溯和审计的。
(2)非对称加密
区块链中数据是高度透明的,用户信息也是高度加密的,只有得到用户的授权,才能看到用户信息,通过采用非对称加密手段保证用户信息的安全性和隐私性。非对称加密包括公开密钥(公钥)和私有秘钥(私钥)两种密钥,公钥是公开的,私钥由用户本人保管,其他人无法从公钥推算出私钥。其优点是每对公私钥唯一有效、保密性高,而缺点是加解密的速度比较慢。在区块链交易可匿名方面,非对称加密发挥着重要作用。
(3)共识机制
区块链是一个传递信任的工具,而支撑这份信任的体系就是共识机制。区块链需要一套所有参与者都愿意维护的规则来解决某些问题,如怎么保证记账的有效性、应该由谁来记账等。目前主流共识机制主要包括 3类,分别为 PoW(工作量证明)、PoS(权益证明)、DPoS(股份授权证明),联盟链通常采取 pbft或 raft等选举共识算法来提高效率。
(4)智能合约
智能合约是以数字形式指定的一系列承诺,包括参与各方履行这些承诺的协议 ,其中包含的协议存在于一个分布式的、分散的区块链系统中,旨在提供、验证及执行合约的服务。

区块链技术的特点

区块链通过哈希加密、非对称加密、数字签名等密码学方法来实现用户的匿名以及交易的确认,通过共识机制对共同维护的数据达成一致,对信任危机提出了一种新的解决思路,具有多方协作、不可篡改、可追溯三大特点。
(1)多方协作
区块链网络中分布众多节点,节点之间具有平等的权利与义务,整个系统由所有节点共同维护,节点之间不需通过单一中心机构即可直接进行数据交换。
(2)不可篡改
区块链中很多环节均使用了密码学技术,可保证信息一旦添加到链上就无法被篡改,数据更加安全可靠,避免了一切人为操作的可能性。由于其分布式存储的特性,若想篡改信息至少要掌握网络中 51%的数据节点,这在实践过程不可实现。
(3)可追溯
由于区块链使用哈希算法原理,所以它的链接形式是后一个区块拥有前一个区块的哈希值,每一个区块都和前一个区块有联系,串联起来形成了区块链。区块链上保存了从第一个区块开始的所有历史数据,区块链上任意一条记录都可以进行追溯。

四个特点

可扩展性、互操作性、协同治理、隐私安全

2016技术架构

核心技术组件

核心技术组件包括区块链系统所依赖的基础组件、协议和算法,进一步细分为通信、存储、安全机制、共识机制等4层结构。
1、通信:区块链通常采用P2P技术来组织各个网络节点,每个节点通过多播实现路由、新节点识别和数据传播等功能。
2、存储:区块链数据在运行期以块链式数据结构存储在内存中,最终会持久化存储到数据库中。对于较大的文件,也可存储在链外的文件系统里,同时将摘要(数字指纹)保存到链上用以自证。
3、安全机制:区块链系统通过多种密码学原理进行数据加密及隐私保护。对于公有链或其他涉及到金融应用的区块链系统而言,高强度高可靠的安全算法是基本要求,需要达到国密级别,同时在效率上需要具备一定的优势。
4、共识机制:是区块链系统中各个节点达成一致的策略和方法,应根据系统类型及应用场景的不同灵活选取。

核心应用组件

核心应用组件在核心技术组件之上,提供了针对区块链特有应用场景的功能,允许通过使用编程的方式发行数字资产,也可以通过配套的脚本语言编写智能合约,灵活操作链上资产。通过激励机制维系区块链系统安全稳定运行。对于联盟链和专有链,还需要有配套的成员管理功能。

配套设施

区块链作为典型的分布式系统,在研发阶段需要具备与之配套的开发测试工具和环境。在生产阶段,需要建立相应的运维体系和运营管理功能。
在部署层面,区块链系统可以部署于单台服务器上,以单台服务器作为区块链网络中的一个节点加入。也可部署于多台服务器上,以服务器集群为单位作为区块链网络中的一个节点加入。后者可以提升节点的稳定性和吞吐量,更适用于那些对节点可用性有较高要求的共识机制。

区块链核心关键技术

共识机制

常用的共识机制主要有PoW、PoS、DPoS、Paxos、PBFT等。另外,基于区块链技术的不同应用场景,以及各种共识机制的特性,本文按照以下维度来评价各种共识机制的技术水平:
合规监管:是否支持超级权限节点对全网节点、数据进行监管。
性能效率:交易达成共识被确认的效率。
资源消耗:共识过程中耗费的CPU、网络输入输出、存储等计算机资源。
容错性:防攻击、防欺诈的能力。
1、PoW:依赖机器进行数学运算来获取记账权,资源消耗相比其他共识机制高、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点出错。
2、PoS:主要思想是节点记账权的获得难度与节点持有的权益成反比,相对于PoW,一定程度减少了数学运算带来的资源消耗,性能也得到了相应的提升,但依然是基于哈希运算竞争获取记账权的方式,可监管性弱。该共识机制容错性和PoW相同。
3、DPoS:与PoS的主要区别在于节点选举若干代理人,由代理人验
证和记账。其合规监管、性能、资源消耗和容错性与PoS相似。
4、Paxos: 是一种基于选举领导者的共识机制,领导者节点拥有绝对权限,并允许强监管节点参与,性能高,资源消耗低。所有节点一般有线下准入机制,但选举过程中不允许有作恶节点,不具备容错性。
5、PBFT:与Paxos类似,也是一种采用许可投票、少数服从多数来选举领导者进行记账的共识机制,但该共识机制允许拜占庭容错。该共识机制允许强监管节点参与,具备权限分级能力,性能更高,耗能更低,该算法每轮记账都会由全网节点共同选举领导者,允许33%的节点作恶,容错性为33%。

数据存储

1、数据结构
在区块链技术中,数据以区块的方式永久储存。区块按时间顺序逐个先后生成并连接成链,每一个区块记录了创建期间发生的所有交易信息。区块的数据结构一般分为区块头(header)和区块体(body),如图4-2所示。其中,区块头用于链接到前一个区块并且通过时间戳特性保证历史数据的完整性;区块体则包含了经过验证的、区块创建过程中产生的所有交易信息。
![

2、数据库
按照数据库的数据结构组织形式来看,一般分为Key-Value型和关系型两种。其中,Key-Value型数据库的数据结构组织形式比较简单,读写性能很高,能支持海量并发读写请求,而且可扩展性强,操作接口简单,支持一些基本的读、写、修改、删除等功能,但不支持复杂的SQL功能和事务性。关系型数据库采用关系模型来组织数据,支持各种SQL功能,功能性强,支持事务性,读写性能一般,可扩展性弱。
按照数据库的部署形式来看,一般分为单机型和分布式两种。其中,单机型数据库保证强一致性和较好的可用性。分布式数据库在物理部署上遵循了分布式架构,能提供高并发的读写性能和容错,有很强的可用性和分区容错性,但由于需要进行数据同步,分布式架构的数据一致性较弱,只能保证最终一致性。

网络协议

区块链网络协议一般采用P2P协议,确保同一网络中的每台计算机彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点。不同的区块链系统会根据需要制定独自的P2P网络协议,比如比特币有比特币网络协议,以太坊也有自己的网络协议。

加密算法

1、散列(哈希)算法
散列算法也叫数据摘要或者哈希算法,其原理是将一段信息转换成一个固定长度并具备以下特点的字符串:
(1)如果某两段信息是相同的,那么字符也是相同的。
(2)即使两段信息十分相似,但只要是不同的,那么字符串将会十分杂乱随机并且两个字符串之间完全没有关联。
本质上,散列算法的目的不是为了“加密”而是为了抽取“数据特征”,也可以把给定数据的散列值理解为该数据的“指纹信息”。典型的散列算法有MD5、SHA1/SHA2和SM3,下表对比了这些算法的特点。

总体上看,SHA256和SM3这两种算法效率和安全性大致相当,目前区块链主要使用SHA256,国内某些特定业务场景使用国密SM3,亦是比较符合国家安全和监管的选择。但由于不同业务场景的安全性标准有别,未来不排除还需要探索更优算法的可能性。
2、非对称加密算法
非对称加密算法由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法。任何获悉用户公钥的人都可用用户的公钥对信息进行加密与用户实现安全信息交互。由于公钥与私钥之间存在的依存关系,只有用户本身才能解密该信息,任何未受授权用户甚至信息的发送者都无法将此信息解密。在近代公钥密码系统的研究中, 其安全性都是基于难解的可计算问题的,常用的非对称加密算法特点及其比较如以下两个表所示。

隐私保护

目前区块链上传输和存储的数据都是公开可见的,仅通过“伪匿名”的方式对交易双方进行一定的隐私保护。对于某些涉及大量的商业机密和利益的业务场景来说,数据的暴露不符合业务规则和监管要求。目前,业界普遍认为零知识证明、环签名和同态加密等技术比较有希望解决区块链的隐私问题。

智能合约

智能合约可视作一段部署在区块链上可自动运行的程序,其涵盖的范围包括编程语言、编译器、虚拟机、事件、状态机、容错机制等。虚拟机是区块链中智能合约的运行环境。虚拟机不仅被沙箱封装起来,事实上它被完全隔离。也就是说运行在虚拟机内部的代码不能接触到网络、文件系统或者其他进程。甚至智能合约之间也只能进行有限的调用。
智能合约本质上是一段程序,存在出错的可能性,甚至会引发严重问题或连锁反应。需要做好充分的容错机制,通过系统化的手段,结合运行环境隔离,确保合约在有限时间内按预期执行。

2018年的技术架构图

2020年的技术图谱

现状:

密码算法:国密支持成为多数联盟链标准配置。
对等网络:兼顾通信效率与去中心程度的混合型网络成为主流。对等网络按网络结构可分为无结构网络、结构化网络、混合型网络。无结构网络鲁棒性好,去中心化程度高,但通信冗余严重,容易形成网络风暴,如经典 Gossip 网络;有结构网络牺牲了去中心化程度,按照一定策略维护网络拓扑结构,提升通信效率,如类 DHT((Distributed Hash Table,分布式哈希表)网络;混合型网络作为一种折中方案,兼顾了通信效率与去中心化程度。随着区块链网络规模的扩大,出于对高效通信策以及网络治理的需要,混合型网络逐渐成为行业主流方案。
共识机制:联盟链偏好高效、确定性的共识机制,多共识支持趋势凸显。相对于公链希望“全民公投”的共识,联盟链注重共识效率和共识确定性,如类 BFT 共识、Raft 共识等。此外,为适应不同应用场景,参与测试的联盟链产品超 6 成已提供可插拔多种共识机制的支持,多共识支持逐渐成为主流。
智能合约:合约类型头部效应凸显,Go 和 Java 支持率位列前茅。依托Hyperledger Fabric 和以太坊的强大生态,Chaincode 合约和 EVM 合约备受欢迎,成为多数联盟链都支持的合约类型。此外,WASM 合约凭借移植性好、加载快、效率高、社区生态好的特点,成为区块链合约体系的新宠。在合约语言类型方面,超过 75%的链系统支持多种合约语言,Go 和 Java 依然是当前支持率最高的两种语言。
数据存储:读写高效的 NoSQL 数据库成为主流,国内数据库崭露头角。区块链作为一种 IO 敏感的分布式数据库,底层存储通常首选效率较高的 NoSQL 数据库,如 LevelDB、CouchDB、RocksDB 等。同时,鉴于应用层多使用关系型数据库的现实,32%的链系统还提供了对MySQL、SQLServer 的支持,即提供灵活可插拔的多种数据库支持。此外,得益于国内数据库的快速发展,11%的链系统增加了对国内数据库的支持。为了满足不同的应用场景,68%的链系统提供了多种数据库的支持。