【区块链与隐私保护从入门到精通系列教程】第五篇 区块链基础架构模型

5. 区块链基础架构模型

  接下来,我们从宏观层面看一下区块链的层次结构。下图为区块链基础架构模型。

 

  一般说来, 区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成. 其中, 数据层封装了底层数据区块以及相关的数据加密和时间戳等技术; 网络层则包括分布式组网机制、数据传播机制和数据验证机制等; 共识层主要封装网络节点的各类共识算法; 激励层将经济因素集成到区块链技术体系中来, 主要包括经济激励的发行机制和分配机制等; 合约层主要封装各类脚本、算法和智能合约, 是区块链可编程特性的基础; 应用层则封装了区块链的各种应用场景和案例. 该模型中, 基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点. 

5.1 数据层

  我们说过,区块链是去中心化系统各节点共享的数据账本。每个分布式节点都可以通过特定的哈希算法Merkle树数据结构,将一段时间内接收到的交易数据代码封装到一个带有时间戳的数据区块中,并链接到当前最长的主区块链上,形成最新的区块。在这个过程中,涉及区块、链式结构、时间戳、哈希函数、Merkle树、非对称加密算法等技术。

  • 关于区块和链式结构我们在《区块链中的数据结构》一节中已经介绍过,这里不再赘述。
  • 时间戳:记账节点会在当前区块头加盖时间戳,表明区块数据的写入时间。时间戳可以作为区块数据的存在性证明,有助于形成不可篡改和不可伪造的区块链数据库,从而为区块链应用于公证、知识产权注册等时间敏感的领域奠定了基础。更为重要的是, 时间戳为未来基于区块链的互联网和大数据增加了时间维度, 使得通过区块数据和时间戳来重现历史成为可能。
  • Merkle树:根据之前提到过的区块结构,我们能看到Merkle树包含区块体的底层(交易)数据库,区块头的根哈希值,以及所有沿底层交易数据到根哈希的分支。

 

 

  Merkle 树运算过程一般是将区块体的数据进行分组哈希, 并将生成的新哈希值插入到 Merkle , 如此递归直到只剩最后一个根哈希值并记为区块头的 Merkle . 最常见的 Merkle 树是比特币采用的二叉 Merkle , 其每个哈希节点总是包含两个相邻数据块或其哈希值,其他变种则包括以太坊的 Merkle patricia tree . (备注:这里提到比特币的二叉Merkle树,是交易两两哈希,最后合成一个根节点。那么假如交易是奇数个,怎么合并?根据比特币源码规定,如果交易个数是奇数,那么复制最后一个交易,然后和自己结合即可。)

  Merkle 树有诸多 优点: 首先是极大地提高了区块链的运行效率和可 扩展性, 使得区块头只需包含根哈希值而不必封装所有底层数据, 这使得哈希运算可以高效地运行在智能手机甚至物联网设备上; 其次是 Merkle 树可支简化支付验证协议, 即在不运行完整区块链网络节点的情况下, 也能够对 (交易) 数据进行检验 .例如为验证上图中交易4, 一个没有下载完整区块链数据的客户端可以通过向其他节点索要包括从交易4哈希值沿 Merkle 树上溯至区块头根哈希处的哈希序列 (即哈希节点 4, 3, 34, 1234) 来 快速确认交易的存在性和正确性. 一般说来, N 个交易组成的区块体中确认任一交易的算法复杂度 仅为 log2N. 这将极大地降低区块链运行所需的带 宽和验证时间, 并使得仅保存部分相关区块链数据 的轻量级客户端成为可能.

  • 关于非对称加密算法,我们也会单独放在一章讲述。

5.2 网络层

  网络层封装了区块链系统的组网方式、消息传播协议和数据验证机制等要素。结合实际应用需求, 通过设计特定的传播协议和数据验证机制, 可使得区块链系统中每一个节点都能参与区块数据的校验和记账过程, 仅当区块数据通过全网大部分节点验证后, 才能记入区块链.
  • 组网方式:区块链系统的节点具有分布式、自治性、开放可自由进出等特性,一般采用对等网络(P2P)来组织散步全球的参与数据验证和记账的节点。P2P 网络中的每个节点均地位对等且以扁平式拓扑结构相互连通和交互, 不存在任何中心化的特殊节点和层级结构, 每个节点均会承担网络路由、验证区块数据、 传播区块数据、发现新节点等功能. 按照节点存储数据量的不同, 可以分为全节点和轻量级节点. 前者保存有从创世区块到当前最新区块为止的完整区块链数据, 并通过实时参与区块数据的校验和记账来动态更新主链. 全节点的优势在于不依赖任何其他节点而能够独立地实现任意区块数据的校验、查询和更新, 劣势则是维护全节点的空间成本较高; 以比特币为例, 截止到 2016年2月, 创世区块至当前区块的数据量已经超过60GB. 与之相比, 轻量级节点则仅保存一部分区块链数据, 并通过简易支付验证方式向其相邻节点请求所需的数据来完成数据校验.
  • 数据传播协议:任一区块数据生成后, 将由生成该数据的节点广播到全网其他所有的节点来加以验证. 现有的区块链系统一般根据实际应用需求设计比特币传播协议的变种, 例如以太坊区块链集成了所谓的 “幽灵协议” 以解决因区块数据确认速度快而导致的高区块作废率和随之而来的安全性风险 . 根据中本聪的设计, 比特币系统的交易数据传播协议包括如下步骤:

  1) 比特币交易节点将新生成的交易数据向全网所有节点进行广播;

  2) 每个节点都将收集到的交易数据存储到一个区块中;

  3) 每个节点基于自身算力在区块中找到一个具有足够难度的工作量证明;

  4) 当节点找到区块的工作量证明后, 就向全网所有节点广播此区块;

  5) 仅当包含在区块中的所有交易都是有效的且之前未存在过的, 其他节点才认同该区块的有效性;

  6) 其他节点接受该数据区块, 并在该区块的末尾制造新的区块以延长该链条, 而将被接受区块的随机哈希值视为先于新区块的随机哈希值.

  需要说明的是, 如果交易节点是与其他节点无连接的新节点, 比特币系统通常会将一组长期稳定运行的 “种子节点” 推荐给新节点建立连接, 或者推荐至少一个节点连接到新节点. 此外, 交易数据广播时, 并不需要全部节点均接收到, 而是只要足够多的节点做出响应即可整合进入区块账本中. 未接收到特定交易数据的节点则可向邻近节点请求下载该缺失的交易数据。

  • 数据验证机制:P2P网络中的每个节点都时刻监听比特币网络中广播的数据与新区块,节点接收到邻近节点发来的数据后,将首先验证该数据的有效性。如果数据有效, 则按照接收顺序为新数据建 立存储池以暂存尚未记入区块的有效数据, 同时继续向邻近节点转发; 如果数据无效, 则立即废弃该 数据, 从而保证无效数据不会在区块链网络继续传 播. 以比特币为例, 比特币的矿工节点会收集和验证 P2P 网络中广播的尚未确认的交易数据, 并对照预定义的标准清单, 从数据结构、语法规范性、输入输出和数字签名等各方面校验交易数据的有效性, 并将有效交易数据整合到当前区块中; 同理, 当某矿工“挖” 到新区块后, 其他矿工节点也会按照预定义标准来校验该区块是否包含足够工作量证明, 时间戳是否有效等; 如确认有效, 其他矿工节点会将该区块链接到主区块链上, 并开始竞争下一个新区块.

5.3 共识层

  共识指分布式系统中各节点达成一致的过程。具体的共识算法也将单独一章列出。

5.4 激励层

  区块链共识过程通过汇聚大规模共识节点的算力资源来实现共享区块链账本的数据验证和记账工作, 因而其本质上是一种共识节点间的任务众包过程. 去中心化系统中的共识节点本身是自利的, 最大化自身收益是其参与数据验证和记账的根本目标. 因此, 必须设计激励相容的合理众包机制, 使得共识节点最大化自身收益的个体理性行为与保障去中心化区块链系统的安全和有效性的整体目标相吻合. 区块链系统通过设计适度的经济激励机制并与共识过程相集成, 从而汇聚大规模的节点参与并形成了对区块链历史的稳定共识.

  以比特币为例, 比特币 PoW 共识中的经济激励由新发行比特币奖励和交易流通过程中的手续费两部分组成, 奖励给 PoW 共识过程中成功搜索到该区块的随机数并记录该区块的节点. 因此, 只有当各节点通过合作共同构建共享和可信的区块链历史记录、并维护比特币系统的有效性, 其获得的比特币奖励和交易手续费才会有价值. 比特币已经形成成熟的挖矿生态圈, 大量配备专业矿机设备的矿工积极参与基于挖矿的 PoW 共识过程, 其根本目的就是通过获取比特币奖励并转换为相应法币来实现盈利.

  • 发行机制: 比特币系统中每个区块发行比特币的数量是随着时间阶梯性递减的. 创世区块起的每个区块将发行 50 个比特币奖励给该区块的记账者, 此后每隔约 4 年 (21 万个区块) 每区块发行比特币的数量降低一半, 依此类推, 一直到比特币的数量稳定在上限 2 100 万为止 . 比特币交易过程中会产生手续费, 目前默认手续费是万分之一个比特币, 这部分费用也会记入区块并奖励给记账者. 这两部分费用将会封装在每个区块的第一个交易 (称为 Coinbase 交易) 中. 虽然现在每个区块的总手续费相对于新发行比特币来说规模很小 (通常不会超过 1 个比特币), 但随着未来比特币发行数量的逐步减少甚至停止发行, 手续费将逐渐成为驱动节点共识和记账的主要动力. 同时, 手续费还可以防止大量微额交易对比特币网络发起的 “粉尘” 攻击, 起到保障安全的作用.

  • 分配机制: 比特币系统中, 大量的小算力节点通常会选择加入矿池, 通过相互合作汇集算力来提高 “挖” 到新区块的概率, 并共享该区块的比特币和手续费奖励. 据 Bitcoinmining.com 统计, 目前已经存在 13 种不同的分配机制 . 主流矿池通常采用 PPLNS (Pay per last N shares)、PPS (Pay per share) 和 PROP (PROPortionately) 等机制. 矿池将各节点贡献的算力按比例划分成不同的股份 (Share), 其中 PPLNS 机制是指发现区块后, 各合作节点根据其在最后 N 个股份内贡献的实际股份比例来分配区块中的比特币; PPS 则直接根据股份比例为各节点估算和支付一个固定的理论收益, 采用此方式的矿池将会适度收取手续费来弥补其为各节点承担的收益不确定性风险; PROP 机制则根据节点贡献的股份按比例地分配比特币. 矿池的出现是对比特币和区块链去中心化趋势的潜在威胁, 如何设计合理的分配机制引导各节点合理地合作、避 免出现因算力过度集中而导致的安全性问题是亟待 解决的研究问题.

5.5 合约层

  合约层封装区块链系统的各类脚本代码、算法 以及由此生成的更为复杂的智能合约. 如果说数据、 网络和共识三个层次作为区块链底层 “虚拟机” 分别承担数据表示、数据传播和数据验证功能的话, 合约层则是建立在区块链虚拟机之上的商业逻辑和算法, 是实现区块链系统灵活编程和操作数据的基础. 包括比特币在内的数字加密货币大多采用非图灵完备的简单脚本代码来编程控制交易过程, 这也是智能合约的雏形; 随着技术的发展, 目前已经出现以太坊等图灵完备的可实现更为复杂和灵活的智能合约的脚本语言, 使得区块链能够支持宏观金融和社会系统的诸多应用. 本节将以比特币脚本为例, 从技术角度简述合约层的基本技术和方法; 关于智能合约的延伸内容将单独一章讲述。

  比特币采用一种简单的、基于堆栈的、从左向右处理的脚本语言, 而一个脚本本质上是附着在比特币交易上的一组指令的列表. 比特币交易依赖于两类脚本来加以验证, 即锁定脚本和解锁脚本, 二者的不同组合可在比特币交易中衍生出无限数量的控制条件. 其中, 锁定脚本是附着在交易输出值上的“障碍”, 规定以后花费这笔交易输出的条件; 解锁脚本则是满足被锁定脚本在一个输出上设定的花费条件的脚本, 同时它将允许输出被消费. 举例来说, 大多数比特币交易均是采用接受者的公钥加密和私钥解密, 因而其对应的 P2PKH (Pay to public key hash) 标准交易脚本中的锁定脚本即是使用接受者的公钥实现阻止输出功能, 而使用私钥对应的数字签名来加以解锁 . 比特币脚本系统可以实现灵活的交易控制. 例如, 通过规定某个时间段 (如一周) 作为解锁条件, 可以实现延时支付; 通过规定接受者和担保人必须共同私钥签名才能支配一笔比特币, 可以实现担保交易; 通过设计一种可根据外部信息源核查某概率事件是否发生的规则并作为解锁脚本附着在一定数量的比特币交易上, 即可实现博彩和预测市场等类型的应用; 通过设定 N 个私钥集合中至少提供 M 个私钥才可解锁, 可实现 M − N 型多重签名, 即 N 个潜在接受者中至少有 M 个同意签名才可实现支付. 多重签名可广泛应用于公司决策、财务监督、中介担保甚至遗产分配等场景.

  比特币脚本是智能合约的雏形, 催生了人类历史上第一种可编程的全球性货币. 然而, 比特币脚本系统是非图灵完备的, 其中不存在复杂循环和流控制, 这在损失一定灵活性的同时能够极大地降低复杂性和不确定性, 并能够避免因无限循环等逻辑炸弹而造成拒绝服务等类型的安全性攻击. 为提高脚本系统的灵活性和可扩展性, 研究者已经尝试在比特币协议之上叠加新的协议, 以满足在区块链上构建更为复杂的智能合约的需求. 以太坊已经研发出一套图灵完备的脚本语言, 用户可基于以太坊构建任意复杂和精确定义的智能合约与去中心化应用,从而为基于区块链构建可编程的金融与社会系统奠定了基础。

5.6 应用层

  区块链目前的主要应用可以简单归纳为数字货币、数据存储、数据鉴证、金融交易、资产管理和选举投票共六个场景,并概述除数字货币外的五大应用场景以及区块链的三种应用模式。

  • 数据存储: 区块链的高冗余存储 (每个节点存储一份数据)、去中心化、高安全性和隐私保护等特点使其特别适合存储和保护重要隐私数据, 以避免因中心化机构遭受攻击或权限管理不当而造成的大规模数据丢失或泄露。与比特币交易数据类似地, 任意数据均可通过哈希运算生成相应的 Merkle 树并打包记入区块链, 通过系统内共识节点的算力和非对称加密技术来保证安全性. 区块链的多重签名技术可以灵活配置数据访问的权限, 例如必须获得指定 5个人中 3 个人的私钥授权才可获得访问权限. 目前,利用区块链来存储个人健康数据(如电子病历、基因数据等) 是极具前景的应用领域, 此外存储各类重要电子文件 (视频、图片、文本等) 乃至人类思想和意识等也有一定应用空间 .
  • 数据鉴证: 区块链数据带有时间戳、由共识节点共同验证和记录、不可篡改和伪造, 这些特点使得区块链可广泛应用于各类数据公证和审计场景. 例如, 区块链可以永久地安全存储由政府机构核发的各类许可证、登记表、执照、证明、认证和记录等, 并可在任意时间点方便地证明某项数据的存在性和一定程度上的真实性。
  • 金融交易: 区块链技术与金融市场应用有非常高的契合度. 区块链可以在去中心化系统中自发地产生信用, 能够建立无中心机构信用背书的金融市场, 从而在很大程度上实现了 “金融脱媒”, 这对第三方支付、资金托管等存在中介机构的商业模式来说是颠覆性的变革; 在互联网金融领域, 区块链特别适合或者已经应用于股权众筹、P2P 网络借贷和互联网保险等商业模式; 证券和银行业务也是区块链的重要应用领域, 传统证券交易需要经过中央结算机构、银行、证券公司和交易所等中心机构的多重协调, 而利用区块链自动化智能合约和可编程的特点, 能够极大地降低成本和提高效率, 避免繁琐的中心化清算交割过程, 实现方便快捷的金融产品交易; 同时, 区块链和比特币的即时到帐的特点可使得银行实现比 SWIFT 代码体系更为快捷、经济和安全的跨境转账。
  • 资产管理: 区块链在资产管理领域的应用具有广泛前景, 能够实现有形和无形资产的确权、授权和实时监控. 对于无形资产来说, 基于时间戳技术和不可篡改等特点, 可以将区块链技术应用于知识产权保护、域名管理、积分管理等领域; 而对有形资产来说, 通过结合物联网技术为资产设计唯一标识并部署到区块链上, 能够形成 “数字智能资产”, 实现基于区块链的分布式资产授权和控制. 例如, 通过对房屋、车辆等实物资产的区块链密钥授权, 可以基于特定权限来发放和回收资产的使用权, 有助于房屋租赁或车辆租赁等商业模式实现自动化的资产交接; 通过结合物联网的资产标记和识别技术, 还可以利用区块链实现灵活的供应链管理和产品溯源等功能.
  • 选举投票: 投票是区块链技术在政治事务中的代表性应用. 基于区块链的分布式共识验证、不可篡改等特点, 可以低成本高效地实现政治选举、企业股东投票等应用; 同时, 区块链也支持用户个体对特定议题的投票. 例如, 通过记录用户对特定事件是否发生的投票, 可以将区块链应用于博彩和预测市场等场景;通过记录用户对特定产品的投票评分与建议, 可以实现大规模用户众包设计产品的 “社会制造”模式等. 

 


posted @ 2022-08-31 11:09  程序员王不错  阅读(524)  评论(0)    收藏  举报