1.3 区块与链
了解了区块链的定义和特性,接下来会为大家介绍区块链的分类、结构与一些基本概念。首先我们先来了解一下区块链这个名字的渊源。
区块链是由“区块+链”构成的。
区块(Block),是指存储已记录数据的文件,里面按时间先后顺序记录了链上已发生的所有价值交换活动。
每个区块均由三部分构成:本区块的哈希值(包括本区块的大小、生成时间等所有信息)、所有交易单(每一笔交易的详细情况)与在其先后的区块哈希值(即前后区块中所有交易信息经过算法压缩后形成的一个字符串)。
区块的生成时间由系统设定,通常平均每几分钟区块链中会生成一个新区块。由于每个区块中都包括了前一个区块和后一个区块的哈希值,这种设计使得每个区块都能找到其前后节点,从而可以一直追溯至起始节点,形成一条完整的交易链条,即构成区块链。
“区块”+“链”=时间戳(Time Stamp):区块链让全网所有节点都在每一个区块上盖一个时间戳以记录每一条信息写入的时间,整个区块链由此形成了一个不可篡改、不可伪造的数据库。时间戳可以证明某人在某天确实做过某事,可以证明某项活动的最先创造者是谁。任何事情的“存在性”证明变得十分简单。
从第一个区块开始,到最新产生的区块为止,区块链上存储了系统全部的历史数据,区块链上的每一条交易数据,都可以通过链式结构追本溯源,一笔一笔进行验证。
1.3.1 区块
区块是在区块链上承载交易数据的数据包,是一种被标记上时间戳和之前一个区块的哈希值的数据结构,区块经过区块链的共识机制验证并确认区块中的交易。
一个完整区块的基本构成如图1-3所示。
1.区块头/Block Header
记录当前区块的元信息,包含当前版本号、上一区块的哈希值、时间戳、随机数、Merkle根节点的哈希值等数据。区块体的数据记录通过Merkle树的哈希过程生成唯一的Merkle树根节点的哈希值记录于区块头。
图1-3 区块构造示意图
2.区块体/Block Body
记录一定时间内所生成的详细数据,包括当前区块经过验证的、区块创建过程中生成的所有交易记录或是其他信息,可以理解为账本的一种表现形式。
3.时间戳/Time Stamp
时间戳从区块生成的那一刻起就存在于区块之中,是用于标识交易时间的字符序列,具备唯一性,时间戳用以记录并表明存在的、完整的、可验证的数据,是每一次交易记录的认证。
4.区块容量/Block Size
区块链的每个区块都是用来承载某个时间段内的数据的,每个区块通过时间的先后顺序,使用密码学技术将其串联起来,形成一个完整的分布式数据库,区块容量代表了一个区块能容纳多少数据的能力。
5.区块高度/Block Height
一个区块的高度是指该区块在区块链中它和创世区块之间相隔的块数。
1.3.2 区块链
区块链(Blockchain)由区块按照发生的时间顺序,通过区块的哈希值串联而成,是区块交易记录及状态变化的日志记录。由区块串联而成的“链”如图1-4所示。
图1-4 由区块串联而成的“链”