1.2 区块链关键技术
1.2.1 基础模型
图1.3所示是区块链的基本架构,区块链基本架构可以分为,数据层、网络层、共识层、激励层、合约层和应用层:
*数据层封装了区块链的链式结构、区块数据以及非对称加密等区块链核心技术;
*网络层提供点对点的数据通信传播以及验证机制;
*共识层主要是网络节点间达成共识的各种共识算法;
*激励层将经济因素引入到区块链技术体系之中,主要包括经济因素的发现机制和分配机制;
*合约层展示链区块链系统的可编程性,封装了各类脚本、智能合约和算法;
*应用层则封装了区块链技术的应用场景和案例。
在该架构中,基于时间戳的链式结构,分布式几点间的共识机制和可编程的智能合约是区块链技术最具代表性的创新点。一般可以在合约层编写智能合约或者进行脚本编程,来构建基于区块链的去中心化应用。下面将对本架构中每一层所涉及的技术展开具体介绍。
1.2.2 数据层
数据层是区块链核心部分,区块链本质上是一种数据库技术和分布式共享账本,是由包含交易信息的区块链从后向前有序连接起来的一种数据结构。该层涉及的技术主要包括:区块结构、Merkle树、非对称加密、时间戳、数字签名和哈希函数。时间戳和哈希函数相对比较简单,这里重点介绍一下区块结构、Merkle树、非对称加密和数字签名。
1.区块结构
每个区块一般都由区块头和区块体两部分组成。如图1.4所示,区块头部分包含了父区块哈希值、时间戳、Merkle根等信息,而区块体部分则包含着此区块中所有的交易信息。除此之外,每一个区块还对应着两个值来识别区块:区块头哈希值和区块高度。
每一个区块都会有一个区块头哈希值,这是一个通过SHA256算法对区块头进行二次哈希计算而得到的32字节的数字指纹。例如。比特币的第一个区块的头哈希值为000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f。区块头哈希值可以唯一标识一个区块链上的区块,并且任何节点通过对区块头进行简单的哈希计算都可以得到该区块头的哈希值。区块头哈希也包含在区块整体的数据结构中,但是区块头的数据和区块体的数据并不一定一起存储,为了检索效率起见,在实现中将二者分开存储。
除了通过头部哈希值来识别区块,还可以通过区块高度来对区块进行识别。例如高度为0和前面000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f所索引的区块都是第一个区块。但是与头哈希值不同的是,区块高度并不能唯一地标识一个区块。由于区块链存在着分叉情况,所以可能存在2个或以上区块的区块高度是一样的。
谈完了头哈希值和区块高度,下面介绍区块头的构造。以比特币为例,区块头是80字节,其详细结构如表1.1所示。
网友评论