区块链正是以这种数据结构命名的。因此,区块和链的数据结构是构成区块链的重要组成部分,也是亮点之一。从技术角度来看,区块是一种用于记录交易的数据结构,展示了资金流向。所有已完成的交易区块连接在一起,形成了主链。所有参与计算的节点都会记录主链或主链的一部分。
1. 区块
区块主要由区块头和区块主体两部分组成,包含三个元数据组。比特币系统是一个例子,不同区块链系统采用的数据结构可能不同。
1.1. 区块头
区块头主要包含以下三个元数据组:(1)连接前一区块、索引自父区块哈希值的数据;(2)挖矿难度、时间戳、Nonce(随机数,用于工作量证明算法的计数器,也可理解为记录解密该区块相关数学题的答案的值);(3)能够总结并快速归纳校验该区块的所有交易数据的Merkle(默克尔)树根数据。当然,区块头还包括版本号、难度值等其他元数据。
从这个数据结构中可以看出,区块头实现了大多数区块链功能。
1.2. 区块主体
记录交易信息的区块主体是区块的主要数据部分,包括交易双方的私钥、交易数量、电子货币的数字签名等。
2. 链
比特币系统大约每10分钟会创建一个区块,该区块包含全网范围内发生的所有交易,每个区块都保存它前一个区块的哈希值,这样就将这些区块连接成链式结构。
3. 区块的形成过程
当前区块加入区块链后,所有矿工开始下一个区块的生成工作:(1)将本地内存中的交易信息记录到区块主体中;(2)在区块主体中生成此区块中所有交易信息的Merkle树,并将Merkle树根的值保存在区块头中;(3)将上一个刚刚生成的区块的区块头数据通过SHA256算法生成一个哈希值填入到当前区块的父哈希值中;(4)将当前时间保存在时间戳字段中;(5)难度值字段会根据之前一段时间区块的平均生成时间进行调整,以应对整个网络不断变化的整体计算总量,如果计算总量增长了,则系统会调高数学题难度值,使得预期完成下一个区块的时间仍保持一定时间。
以上就是区块链数据结构的分析。由于本文是为普通人了解区块链而撰写的,所以核心技术系列只是从区块链使用的技术角度进行分析。接下来,我们会参考一些资料,整理出从区块链架构角度分析的文章,以便技术人员更好地理解。