- 区块链原理、技术及应用
- 范凌杰编著
- 1726字
- 2025-02-18 00:54:45
1.1.2 区块的概念
区块是区块链的组成单元,就像金字塔是由一块块石头组成的一样,区块链就是由一个个区块组成的。
1.区块
从本质上说,区块链中的区块是由一系列特征值和一段时间内的交易记录组成的一个数据结构。这里以比特币区块为例进行说明。
登录比特币区块查询网站:https://webbtc.com/可以看到最新生成的比特币区块信息。本节截取了2016年12月17日生成的十几个区块的列表信息,如图1-3所示。

图1-3 比特币区块信息
图中的几列信息依次为区块的高度(Height)、区块的哈希值(Hash)和区块的生成时间(Time)等。单击第一个区块可以查看这个区块的详情,如图1-4所示。详情信息包括区块的哈希值(Block)、高度(Height)、父区块哈希值(Prev Block)和一系列交易信息(Transactions)。详情信息中,前一个Transactions后面跟的数字是这个区块包含的交易总量,下面的Transactions则显示了一个个具体的交易数据)。

图1-4 比特币区块详情
单击Formats中的“json”项可以以Json格式显示这个区块的信息,如图1-5所示。

图1-5 比特币区块的详情以Json格式显示
这个区块的数据结构看上去有点复杂,但没关系,通过接下来的详细解释后就很容易理解了。
2.区块的结构
区块的数据结构由区块头和区块体组成。区块头包含了当前区块的特征值,区块体中包含的是实际的交易记录数据。
(1)区块头
区块头由80个字节组成,主要由版本号、前一个区块的哈希值、Merkle根、时间戳、bits、Nonce这几项区块的特征值组成,如图1-6所示。

图1-6 区块头
其中,ver(版本号)表示本区块遵守的验证规则;prev_block(父区块哈希值)就是这个区块连接的上一个区块的哈希值,mrkl_root根是该区块链交易的Merkle树根的哈希值(Merkle是一种哈希树的数据结构,在第2章中会详细讲解),时间戳是区块生成的时间,bits是区块的难度值,Nonce是一个随机数,其中各个字段的长度和详细说明如图1-7所示。

图1-7 区块头组成
(2)区块体
区块头下面的部分是区块体,如图1-8所示。区块体主要包括交易数量(n_tx)、区块大小(size)和长度不定的交易记录(tx字段包含的交易列表)等信息。但这只是比特币中的区块体结构,实际上区块体中可以包括任何内容,比如以太坊中的区块体中除了交易数据还包含智能合约。
了解了区块结构,再来看看区块的特点。

图1-8 区块体
3.区块的特点
区块的一个特点是,它是由计算机通过加密算法生成的。如果成功地生成一个有效的区块,该计算机(或者说节点)就能获得一定的奖励,这个奖励就是加密数字货币。这一过程就像是在开采有价值的矿产,故而被形象地称为“挖矿”,执行操作的计算机被称为“矿机”,用矿机挖矿的人也就被称之为“矿工”了。
除此之外,区块还有一个特点,若区块是有效的,则该区块的哈希值必须满足一定的条件。这个条件就是能够使得区块头中特征值相加生成的哈希值符合一定格式,比如以000开始。由于哈希值随着输入的不同而不同,故计算机要不断尝试改变区块头的Nonce值直至最终生成的哈希值满足条件才算生成了一个有效的区块,如图1-9所示。

图1-9 生成有效区块
寻找特定Nonce值生成有效区块的机制叫作工作量证明。工作量证明是常见的共识机制之一,关于共识机制的内容将在第3章中详细讲解。
在区块结构中各个字段也有其各自的特点和作用,如图1-10所示。

图1-10 区块中的字段
区块结构中字段的说明如下。
● 索引标示了区块在区块链中的位置,其中第1个区块——创世区块的索引为0,第2个区块的索引为1,第3个区块的索引为2,依次累加。
● 时间戳表示的是该区块生成的时间,根据时间戳可以判断区块链中各个区块生成的先后顺序。
● 哈希值是每个区块的唯一标示,也可称为区块的“数字指纹”。哈希值的长度是固定的,而且和区块内容紧密关联,一旦区块内容发生改变,该区块的哈希值也会发生改变。而且,区块中的哈希值还有有效和无效之分,满足特定条件的哈希值是有效的,否则就是无效,这个特定条件一般称之为困难度(Difficulty)。父区块哈希值就是区块链中特定区块前一个区块的哈希值。
● 区块中的数据可以是任何内容,比特币区块链的区块中的数据为一串串交易记录。
● Nonce是一个随机数,用来生成一个有效的哈希值。Nonce会根据区块数据的不同而不同,每个区块都需要经过大量计算才能找到对应的Nonce值。
● 创世区块。区块链中的第1个区块叫作创世区块,它没有父区块,故创世区块的父区块哈希值为空或者为0。
以上就是区块的特点,区块链的很多特性都是基于区块的这些特点。接下来介绍区块链的运行原理。