数据区块记录了整个比特币网络上的交易记录数据,并且这些数据是被所有比特币节点共享的。
比特币的交易记录会保存在数据区块之中,比特 币系统中大约每10分钟会产生一个区块,每个数据区块一般包含区块头(Header)和区块体(Body)两部分,
比特币源代码分析(区块):https://blog.csdn.net/qq_40452317/article/details/88641667
区块头封装了当前的版本号(Version)、前一区 块地址(Prev-block)、时间戳(Timestamp)、随机 数(Nonce)当前区块的目标哈希值(Bits)、Merkle树的根值(Merkle-root)等信息。
区块头的结构说明:
数据项 | 目的 | 大小(字节) |
Version(版本) | 区块版本号 | 4 |
hashPrevBlock(前一区块的Hash) | 前一区块的256位Hash值 | 32 |
hashMerkleRoot Merkle(根节点Hash值) | 基于一个区块中所有交易的256位Hash值 | 32 |
Time(时间戳) | 从1970-01-01 00:00 UTC开始到现在,以秒为单位的当前时间戳 | 4 |
Bits(当前目标的Hash值) | 压缩格式的当前目标Hash值 | 4 |
Nonce(随机数) | 从0开始的32位随机数 | 4 |
区块体中则主要包含交易计数和交易详情。交易详情就是比特币系统中的记账本,每一笔交易都会被永久地记入数据区块中,而且任何人都可以查询。
区块体中的Merkle树将会对每一笔交易进行数字签名,如此可以确保每一笔交易都不可伪造且没有重复交易。所有的交易将通过Merkle树的Hash过程产生一个唯一Merkle根值记入区块头。
如果你使用的是比特币核心钱包(Bitcoin core),那么每当你打开客户端时,区块数据文件都 会被同步到电脑硬盘中,可以在blocks文件夹下找到 它们。如图2-2所示的.dat文件就是我们要找的数据区块文件。