区块链关键技术总结 任禹臣 3220205133 renyc1992@163.com [摘 要] 区块链是一种按照时间顺序将数据区块以链条的方式组合形成的特定 数据结构,并以密码学方式保证其不可篡改和不可伪造的去中心化、去信任的分 布式共享总账系统。区块链是由数据层、网络层、共识层、激励层、合约层以及 应用层所组成。数据层包括了底层数据区块以及其链式存储结构,网络层主要包 括区块链数据传输的各项机制,共识层所封装的共识算法机制主要有工作量证明 机制(PoW)、权益证明 (PoS)、授权股份证明机制 (DPOS)等,激励层包括激励机 制与分配制度,合约层包含了各类脚本、算法以及更为复杂的智能合约,应用层 包含区块链的各种应用场景,主要的应用模式有公有链、私有链与联盟链三种。 按照区块链技术的发展脉络,可将其分为可编程货币,可编程金融和可编程社会。 [关键词] 区块链;去中心化;共识机制;比特币 1. 概述 区块链作为比特币、以太坊等数字加密货币的核心技术,在政府部门、科技 企业、金融机构以及资本市场等领域受到了广泛的关注。区块链技术实现了去中 心化、分布式的信任建立机制,解决了数字货币长期以来所面临的“拜占庭将军 问题”与“双重支付问题”。在传统的金融货币体系下,在两个陌生的实体下直 接地建立信任是十分困难的,通常是由银行等权威、可信的第三方机构来提供社 会的信任支撑。区块链的贡献在于,通过分布式的节点验证与共识机制解决去中 心化系统中节点间信任建立的问题,在信息传输的同时完成价值的转移。区块链 被认为是继蒸汽机、电力、信息与互联网科技之后最具有潜力的,能够触发第五 轮颠覆性革命浪潮的技术。 本文将系统性地介绍区块链的相关概念与技术原理,结构如下:第 2 小节介 绍区块链定义及相关背景;第 3 小节介绍区块链各个层次的关键技术;第 4 小节 对区块链的挑战与展望进行简述。 2. 区块链定义与相关背景 2.1 区块链的定义与理解 区块链作为一项新兴技术,在学术界尚未形成统一的定义。一般认为:区块 链是一种按照时间顺序将数据区块以链条的方式组合形成的特定数据结构,并以 密码学方式保证其不可篡改和不可伪造的去中心化、去信任的分布式共享总账系 统;另一方面,从广义的角度来讲,区块链是利用加密链式区块结构来验证与存 储数据、利用分布式节点与共识算法来生成和更新数据、利用自动化脚本代码来 编程和操作数据的一种全新的去中心化基础架构与分布式计算范式。 从数据的角度来理解,区块链则是一种无法被更改的分布式数据库。传统的 分布式数据库需要有一个中心节点对数据库的数据进行维护,除此之外的其他节 点只负责存储数据的备份。区块链技术中所有节点均参与数据库的维护,这种分 布式数据库的不会因为某一节点被篡改或破坏而造成影响,从而实现了数据记录 的分布式;从技术的角度理解,区块链为多种技术整合后实现的分布式账本技术, 其中包括非对称加密技术、点对点传输、共识机制、链上脚本等。区块链通过非 对称加密技术来验证数据,通过点对点传输实现分布式节点间的通讯,通过共识 机制来建立节点间的信任关系,通过链上脚本实现对数据的自动化操作。 按照区块链技术的发展脉络,可将其分为三个阶段:区块链 1.0 模式为可编 程货币,以比特币为代表;区块链 2.0 模式为可编程金融,是经济、市场和金融 领域的区块链应用,以以太坊为代表;以及区块链 3.0 模式为可编程社会。区块 链的三种模式并非按照演进式发展,以太坊的出现标志着区块链 2.0 时代的来临, 然而区块链 1.0 模式在稳定性、安全性等方面还尚未发展成熟。 2.2 区块链的相关背景与发展现状 区块链技术的最早应用为比特币,源自化名为“中本聪”的一名学者于 2008 年所发表的论文“Bitcoin: A Peer-to-Peer Electronic Cash System”当中, 比特币则是区块链最早的成功应用。当时还未出现“blockchain”一词,而是 “chain of blocks”,这便是区块链一词最早的出现时间。比特币被提出的早期 还未引起人们足够的重视,但随后比特币逐渐在全球流行起来。比特币的第一个 区块被人们称作创世区块,由“中本聪”本人持有。2011 年 4 月,第一个有官 方正式记载的比特币版本发布,该版本支持点对点传输,使任何人都能参与交易。 2013 年 11 月,比特币已创下了每枚兑换 1242 美元的历史高值。2013 年,俄罗 斯人 Vitalik Buterin 创立了以太坊,其设计初衷便是区块链 2.0,是一个全球 范围内的分布式计算机,有着堪称完美的路线图和系统结构。以太坊的技术在 2016 年初得到了市场的认可,价格开始暴涨。 2017 年 10 月,全球最具权威的 IT 研究与顾问咨询公司 Gartner 公司将区块 链技术列为 2018 年十大重大战略科技之一。同年 9 月,澳大利亚、英国等多个 国家将区块链纳入国家数字经济战略,由我国国务院印发的《国家技术转移体系 建设方案》中也指出要加快区块链科技成果的转移转化。习近平总书记在 2019 年 10 月 24 日主持中共中央政治局第十八次集体学习时强调,加快推动区块链技 术和产业创新发展,区块链已在我国正式上升为国家战略。 3. 区块链的关键技术 前文介绍了,区块链的核心技术为其独特的链式存储数据结构、非对称加密 的密码学算法、分布式存储机制以及其共识机制。一般来说,区块链由数据层、 网络层、共识层、激励层、合约层以及应用层所组成,如图 1 所示。 图1 图2 3.1 数据层 数据层包括了底层数据区块以及其链式存储结构,每一个区块包括了区块头 与区块体两个部分,且每个区块都有唯一的哈希值与之对应,作为该区块的地址。 如图 2 所示,当前区块包含了前一区块的哈希地址,与前一块区块相连,以此形 成链式结构。从创世区块开始,所有后续区块会将一段时间内接收到的交易信息 打包形成区块体,并将时间戳等信息封装形成数据区块,链接到最长的区块链末 尾。整个过程涉及了数据区块、链式结构、哈希算法、Merkle 树等技术要素。 数据区块:数据区块的结构如图 2 所示,包含区块头与区块体两部分。区块 头封装了该区块的版本号、前一区块的地址值、当前区块的哈希值、Merkle 树 的根哈希值、时间戳以及共识过程的解随机数等信息。其中随机数的计算为一个 NP 难的问题,优先计算出正确的解随机数的节点,在经过全体节点认证后获得 当前区块的记账权。区块体则包含了当前区块的所有交易信息,这些信息通过 Merkle 树生成唯一的 Merkle 根并记入区块头。 哈希算法:区块链一般不会保存原始的交易信息,而是通过哈希函数(Hash) 将其编码成特定长度的一个字符串,即哈希值。哈希函数也称为散列函数,因为 具有单向性、定时性、定长性与随机性等优良的性质而适用于区块链的数据存储: 通过哈希函数的输出无法反向推导其输入(单向性);计算不同长度的输入消耗 大约相同的时间(定时性);哈希函数的输出为固定长度(定长性);两个输入即 便仅相差一个字节,函数的输出也会有显著的不同(随机性)。比特币通常采用 双 SHA256 哈希函数,将任意长度的数据进行两次 SHA256 哈希运算后,得到一个 256 位的二进制数字。SHA256 算法的输出具有较大的散列空间,一共可以产生2256 种不同的输出,足以避免两个不同的数据经过哈希函数计算,产生相同输出的情 况。 Merkle 树:Merkle 树的作用是快速归纳与校验区块的完整性与有效性。如 图 2 所示,Merkle 树的生成过程是将所有的数据进行分组哈希运算并不断递归 合并,最后直到只剩一个根哈希值,该哈希值记为 Merkle 树的根节点,即区块 头的 Merkle 根。比特币中采用的是二叉 Merkle 树,即树中每个节点的子节点为 两个相邻的哈希值或数据;此外还有其他形式的 Merkle 树,例如以太坊所采用 的是 Merkle Patricia Tree。Merkle 树能够大幅提高区块链的运行效率,区块 头只需要包含 Merkle 树的根节点,而不必封装所有的底层数据,使得哈希运算 能够高效地运算在智能手机等运算能力较小的设备上。此外,Merkle 树支持“简 化支付验证”协议,即在网络节点不包含完整区块链的情况下,也能够对交易数 据进行验证。例如,若要验证图 2 中的交易 3,只需要从其他节点索要从交易 3 的 哈 希 值 , 以 及 延 Merkle 树 上 溯 至 根 哈 希 处 的 哈 希 序 列 , 即 哈 希 节 点 3,4,34,12,1234 来验证交易 3 的存在性与有效性。这使得仅保存部分区块链数 据的轻量级客户端在验证数据时所消耗的带宽与时间大大降低。 时间戳:区块链技术要求获得记账权的节点,必须在区块头中加入时间戳信 息,以表明当前区块的写入时间,使得区块链不断延长并形成一个具有时间维度 的链条,这样所有的数据均能按时间进行追溯。时间戳技术本身并不复杂,但该 技术有助于形成不可篡改或伪造的数据库,为区块链在公证、知识产权注册等时 间敏感领域中的应用奠定了基础,因此具有重大意义。 链式结构:获得记账权的节点,将最新的区块链接到前一区块上,以此形成 一条从创始区块到当前区块的主链。任意数据都可以通过此链式结构追溯。若两 个节点同时写入两个不同的区块并加以链接,主链会出现暂时分叉的情况,节点 会通过比较,将区块链接到累计工作量证明最大化的备选链以解决分叉问题。 此外,非对称加密技术在区块链技术中极为重要。非对称加密技术采用两个 非对称的密码对数据进行加密,分别为公钥和私钥。对一段数据使用私钥加密后, 只有对应的公钥才能解开,且私钥无法通过公钥推算获得。公钥可向其他人公开, 私钥则保密。非对称加密技术在区块链的应用场景包括信息加密、数字签名与登 录认证等。例如,数字签名则是发送者将信息通过私钥加密后发给接收者,接收 者通过公钥验证该签名的有效性。区块链的每一笔交易都需要双方使用数字签名, 丢失了私钥则意味着丢失了全部的比特币财产。 3.2 网络层 数据层包含了区块链的底层数据结构,而网络层主要包括区块链数据传输的 各项机制,即区块链的组网方式、数据传输机制以及数据验证机制。 组网方式:区块链的组网方式一般采用对等式网络,即 P2P 网络。P2P 网络 中每个节点地位相等地连通与交互,不存在中心节点或层级结构。网络中每个节 点都会进行区块数据的转发、验证、传播与新节点的发现等功能。其中,网络节 点按照其存储数据量的不同可划分为全节点与轻量级节点。全节点包含从创世区 块到最新区块的全部数据,而轻量级节点仅包含一部分区块链数据。轻量级节点 在验证数据时,会通过先前 3.1 小节提到的“简化支付验证”协议来完成数据的 校验。 数据传播协议:一个区块生成后,生成该区块的节点会将该区块广播到全网 加以验证。以比特币为例,根据中本聪的设计,比特币系统的传播协议包括以下 步骤: 1)区块链节点将新生成的交易数据向全网的所有节点进行广播; 2)每个节点将收集到的交易数据存储到一个区块中; 3)每个节点在区块中找到一个具有足够难度的工作量证明; 4)找到工作量证明后,向全网的所有节点广播该区块; 5)其他节点接收到该区块后,验证该区块的有效性,即所有交易都是有 效且未存在过的; 6)其他节点接受该数据区块,并在该区块的结尾制造新的区块。 此外,如果某个交易节点是与其他节点无连接的新节点,比特币系统会推荐一组 长期稳定的节点以建立连接。 数据验证机制:在 P2P 网络中,每个节点都会时刻监听比特币网络中广播的 数据与区块。接收到数据后首先验证其有效性,若数据有效,则按照接受顺序将 尚未记入区块的有效数据记入存储池,同时向相邻节点转发;若数据无效则不会 转发并且忽略该数据。以比特币为例,在验证数据有效性时,会通过数据结构、 语法的规范性、输入输出以及数字签名等各方面进行验证;当节点接收到新区块 时,会验证该区块是否包含足够工作量证明、时间戳等信息,在确认有效后将其 链接到主区块链上,随后开始竞争下一个区块的写入权。 3.3 共识层 区块链最大的优势就在于,能够在权利高度分散的去中心化系统中使各个节 点有效地达成共识。区块链的共识层所封装的共识算法机制主要有工作量证明机 制(Proof of work, PoW)、权益证明 (Proof of stake, PoS)、授权股份证明机 制 (Delegated proof of stake, DPOS)、燃烧证明、重要性证明等,下面仅介 绍 PoW、PoS 与 DPoS 这三种机制。 PoW 共识:PoW 共识机制由中本聪在比特币论文中提出,其核心思想是通过 引入分布式节点的算力竞争来保证数据的一致性。在比特币系统中,各个节点共 同解决一个求解难度高但容易验证的数学难题,最先解决该难题的节点将获得区 块的写入权与相应的比特币奖励。求解的过程称为挖矿,各个节点也被称作矿工。 比特币系统中设定的 SHA256 数学难题可描述为:根据当前的难度值,搜索一个 合适的随机数(Nonce)使图 2 中区块头的各个数据的双 SHA256 哈希值小于或等 于目标值。比特币系统会调整随机数的难度,以控制新区块的生成时间为 10 分 钟左右。PoW 共识机制的过程如下: 1)收集尚未确认的交易,并增加一个 Coinbase 交易用于发行新比特币奖 励,将这些交易打包形成区块体的交易集合;每个节点在区块中找到 一个具有足够难度的工作量证明; 2)计算区块体交易集合的 Merkle 根,将 Merkle 根以及其他区块头元素 写入区块头,并将随机数 Nonce 置为 0; 3)将随机数加 1,计算当前区块头的双 SHA256 哈希值,如果小于或等于 目标值,则代表成功搜索到随机数并获得了当前区块的写入权;否则 重复该步骤,直到找到符合要求的随机数; 4)如果在一定时间内未找到符合要求的随机数,则更新时间戳和未确认 的交易,重新计算 Merkle 根,然后继续搜索随机数。 符合要求的目标哈希值越小,搜索随机数的难度也就越高。PoW 共识机制通过调 整数学难题的难度来控制新区块的生成时间,能够完美地与货币发行、交易支付 与验证等功能相结合,以此确保了区块链系统的安全性和去中心性。PoW 共识机 制是具有重要意义的创新。 PoS 共识机制:PoS 机制的提出是为了解决 PoW 共识机制所带来的的资源浪 费与安全性缺陷问题,其本质上才用了权益证明来替代 PoW 机制中基于算力的工 作量证明。权益体现为节点对特定数量货币的所有权,称为币龄,有着最高权益 的节点将获得区块的写入权。币龄的计算方式为特定数量的币与其最后一次交易 的时间长度的乘积,每次交易都会消耗一定数量的币龄。在该共识系统下,特定 时间点的币龄总数是有限的,长期持币者更容易拥有更多的币龄。在 PoW 机制中, 各个节点的挖矿难度相同,而 PoS 机制中各个节点的挖矿难度与交易输入的币龄 成反比。主链的判断标准也变为最高消耗币龄,由此可见,PoS 共识过程从根本 上解决了 PoW 共识机制所造成的算力浪费的问题,并缩减了达成共识的时间。 DPoS 共识机制:DPoS 共识机制系统类似于董事会决策,区块链中每个股东 节点可以将其持有的“股份权益”作为选票授予一个代表,获得票数最多且愿意 成为代表的前 101 个节点将进入董事会,按照既定的时间表轮流对交易进行打包, 并生成新区块。成为授权代表节点必须要缴纳一定的保证金,且必须对其他股东 节点负责,如果某一节点错过签署相应的区块,则股东将收回选票并将该节点投 出董事会。DPoS 机制与前两者不同的是,系统中每个节点都能够自己决定其信 任的授权节点,并且这些节点能够轮流进行新区块的生成,因此大幅减少了参与 验证和写入的节点数量,加快了共识验证的速度。 2.4 激励层 在去中心化的系统中,各个节点本身是自利的,最大化自身收益是节点接受 并验证数据的根本目的。为了使各个节点最大化自身收益的行为与去中心化区块 链系统的整体目标相吻合,需要设计相应的经济激励机制。激励层包括了激励机 制与分配制度,即挖矿奖励。这里主要以比特币为例,阐述其激励机制。 在比特币 PoW 共识中,经济奖励由新发行比特币奖励和交易手续费两部分组 成。比特币的系统中,每个区块的发行比特币的数量随时间递减,每 21 万个区 块降低一半。创世区块之后,每个区块将发行 50 个比特币奖励给该区块的记账 者,所以比特币的数量上限为 2100 万;区块链系统中的每笔交易会产生相应的 手续费,一个区块所记录的交易手续费会奖励给该区块的记账者,并且这笔交易 也会封装在区块中。随着写入区块奖励的不断递减,手续费将成为激励节点参与 到区块链系统运行的主要手段与动力。 2.5 合约层 区块链的合约层包含了各类脚本、算法以及更为复杂的智能合约,是区块链 系统编程与数据操作的基础。智能合约可以理解为一份电子合同,满足一定条件 便能够触发事先约定好的条款,也可以在无法满足条件时自动解约,无需人为地 干预。智能合约的构建与执行有以下步骤: 1)多个用户共同制定一份智能合约; 2)合约通过点对点网络传输并存入区块链; 3)在满足条件时,区块链构建的智能合约自动执行。 比特币出现时,区块链还未出现合约层,而比特币所采用的是一种简单的脚 本语言。比特币包含两类脚本:锁定脚本与解锁脚本。其中,锁定脚本为某一笔 交易输出的花费规定了限制条件;解锁脚本是满足被锁定脚本在一个输出上设定 的花费条件的脚本。例如,若要实现延时支付,可以将某个时间段作为解锁条件。 比特币的智能合约还不够完善,以太坊则对其进行了扩展。其中最主要的区 别在于,以太坊支持更强大的图灵完备脚本语言,开发者可以在其基础上实现任 意的智能合约,而比特币系统仅采用非图灵完备的简单脚本代码。简单来讲,图 灵完备语言与非图灵完备语言的区别在于两者的复杂性,图灵完备语言为图灵机 能够计算的语言,更加智能;非图灵完备语言更加简单,举例来说,循环操作在 非图灵完备语言中会被限制或禁止使用,相比于图灵完备语言更为安全高效,但 功能型较差。以太坊系统中,智能合约都是链上行为,需要通过编程在以太坊部 署。逻辑越复杂的代码,部署所消耗的以太币就越多。区块链中的智能合约有广 泛的应用场景,例如 P2P 网络借贷、互联网金融等。智能合约去中心化的特征能 够保证合约的公平与公正性,其发展趋势是智能化,能够有效地促进区块链在金 融与社会系统等各领域的应用。 图3 2.6 应用层 区块链应用层包含区块链的各种应用场景,其主要应用模式有公有链、私有 链与联盟链三种,如图 3 所示。私有链主要应用于企业或政府部门内部,所有具 有写入权的节点均在内部,读取权仅对有限的外部节点开方。系统的共识机制与 运行规则由组织内部决定,不同节点的权限与地位有所不同,一般由少数高权限 节点对全局进行管理;公有链中,任何节点可自由的参与网络,比特币与以太坊 等均属于公有链;联盟链介于两者之间,部分节点需要管理的许可才能够接入区 块链系统。相比于公有链,私有链与联盟链更容易进行管理,共识机制的运行成 本较低,但同时更容易留下安全漏洞。 在区块链发展初期,数字货币为区块链技术的主要应用,而比特币可以被当 作区块链的第一个应用。随着人们对区块链技术的不断深入研究,区块链逐渐被 应用于更多非金融领域。区块链技术在金融领域的应用主要有数字货币、金融交 易等;区块链在非金融领域的应用主要包括信息记录与管理领域、信息安全领域 以及人工智能领域等方面。其中,信息记录与管理领域的应用包括了信用记录、 资产管理与防伪技术等;信息安全领域的应用包括访问控制、认证技术等应用; 人工智能领域的应用则包括了智能交通等。 4. 区块链的挑战与展望 区块链技术的两个里程碑为比特币与以太坊。比特币实现了去中心化的交易 机制与货币发行机制;以太坊的突破在于智能合约,实现了去中心化的计算与验 证。然而区块链技术的发展仍存在着许多的不足,下面从安全与效率等两个角度 简单阐述。 效率问题:区块链的发展受到了其技术本身带来的制约,主要包含以下三个 方面: 1)网络处理能力,即系统吞吐量。 2)存储能力,即整个区块链能够容纳的数据大小 3)运算能力,即单位时间处理的指令数量 以比特币为例,每一区块的处理时间约为 10 分钟。区块链的操作较为复杂,所 以无法对实时请求及时做出响应。随着区块链内容的不断增加,对交易用户网络 带宽的需求也不断增加。此外,由于区块容量的限制,超过其存储容量的数据将 被分割,大大降低了数据的存取效率。 安全问题:区块链的安全问题主要包括匿名性、隐私性与平台安全性等问题。 匿名性与隐私性是区块链技术的优势之一,区块链是完全透明的,所有的交易信 息均以公开的形式存储。而从实际情况看来,匿名性与隐私性都无法得到真正的 保障。目前根据数据挖掘的结果,许多区块链地址都具有一定关联性,这表明一 个用户同时拥有多个地址,其中一个地址的信息被泄漏,等同于所有相关的交易 数据将暴露。区块链平台的安全性导致用户的私钥仅由持有人地址进行保护,一 旦私钥丢失,则用户将失去所有的资产,这便是去中心化系统所带来的弊端。 区块链使得人类首次实现了在没有第三方机构支持的情况下,双方可以完成 相互信任转账的行为,这是对传统信任模式的一次重大突破。作为一个高速发展 的产业与一种技术革命,区块链与大数据、5G 等新兴技术同样重要,并且区块 链能够打通与各个领域间的联系。举例来说,5G 可以为区块链技术进行加速, 扩大其应用领域;区块链也可以为 5G 提供安全数据传输等技术支撑。区块链技 术也同样能够有效地推动智慧城市、数字社会等领域的发展,通过智能合约等技 术使得物理资产的流转更加安全高效。在不久的将来,以区块链技术为基础,在 物与物、人与物、人与人间建立可靠连接与传输都将成为可能。 参考文献 [1] 袁勇, 王飞跃. 区块链技术发展现状与展望[J]. 2016. [2] Nakamoto S. Bitcoin: A peer-to-peer electronic cash system[R]. Manubot, 2019. [3] 程平, 王立宇. 国内外区块链技术发展与大会计应用动态研究[J]. 会计之友, 2020 (6): 24. [4] 韩璇, 袁勇, 王飞跃. 区块链安全问题: 研究现状与展望[J]. 自动化学报, 2019, 45(1): 206-225. [5] 刘敖迪, 杜学绘, 王娜, 等. 区块链技术及其在信息安全领域的研究进展[J]. 软件学报, 2018, 29(7): 2092-2115. [6] 郑志明, 邱望洁. 我国区块链发展趋势与思考 [J/OL][J]. 中国科学基金, 2020: 1-5. [7] 沈鑫, 裴庆祺, 刘雪峰. 区块链技术综述[J]. 网络与信息安全学报, 2016, 2(11): 11-20. [8] 章峰, 史博轩, 蒋文保. 区块链关键技术及应用研究综述[J]. 网络与信息安全学报, 2018, 4(4): 22-29.