要了解区块链,首先我们需要了解什么是区块。在比特币网络中,数据会以文件的形式被永久记录,我们称这些文件为区块。
1.区块结构
名称 | 描述 | 大小 |
---|---|---|
Magic no(魔法数) | 总是为0xD9B4BEF9 | 4字节 |
Blocksize(区块大小) | 到该区块结束的字节长度 | 4 字节 |
Blockheader(区块头) | 组成区块头的几个字段 | 80 字节 |
Transaction counter(交易数量) | 正整数 | 1-9字节 |
Transactions(交易) | 记录在区块里的交易信息 | 许多的交易信息 |
1.1 区块头
区块头由三组区块元数据组成:
-
第一组:引用父区块哈希值的数据,这组元数据用于将该区块与区块链中前一区块相连接。
-
第二组:元数据,即难度、时间戳、和nonce(随机数),与挖矿竞争相关。
-
第三组:merkle树根,一种用来有效地总结区块中所有交易的数据结构。
1.2 区块头结构
名称 | 描述 | 更新时间 | 大小 |
---|---|---|---|
Version(版本) | 版本号,用于跟踪软件/协议的更新 | 更新软件后,指定新的版本号 | 4 byte |
hshPrevBlock(父区块哈希值) | 引用区块链中父区块的哈希值 | 新的区块进来时 | 32 byte |
hashMerkleRoot Merkle(根节点Hash值) | 该区块中交易的merkle树根的哈希值 | 接受一个交易时 | 32 byte |
Time(时间戳) | 该区块产生的近似时间(精确到秒的Unix时间戳) | 每几秒就更新 | 4 byte |
Bits(当前目标的hash值) | 该区块工作量证明算法的难度目标 | 当挖矿难度调整时 | 4 byte |
Nonce(随机数) | 用于工作量证明算法的计数器 | 产生hash时 | 4 byte |
网友评论