区块链二:比特币的区块数据结构

比特币区块链区块结构

  • 比特币的区块数据结构
    • 区块结构示意
    • 具体的字段与结构
    • 区块的创建

比特币的区块数据结构

本文介绍区块链的区块数据结构。先看看区块的结构示意图:

区块结构示意

区块链二:比特币的区块数据结构_第1张图片

区块分Header 和 body,header是元数据,包含版本号,前一块的hash值,随机数,目标Hash。 Body是交易记录,交易记录都以merkel树状结构存储,交易记录在叶子节点,父子节点其子节点的hash值。

具体的字段与结构

数据项 描述 长度
Magic No(魔法数) 0xD9B4BEF9 (固定不变) 4字节
Blocksize (块大小) 到区块结束的字节长度 4字节
BlockHeader 块头 包含六个字段 80字节
TransactionCount 交易数量 正整数 1~9字节
Transaction 交易 交易列表 交易数量决定

表格1 区块结构字段

数据项 描述 长度
Version 区块版本号 4字节
HashPreBlock 前一区块的Hash值256位 32字节
HashMerkleRoot 块交易记录的MerkleRoot节点的hash 256字节
Time 时间戳 4字节
Bits 压缩格式当前 4字节
Nonce随机数 从0开始的32位数 4字节

表格2 区块Heaer结构字段

Header有几个字段特别强调,
HashPreBlock:这个是这区块上一个块的hash值,这样让区块组成链,若前面区块值被修改,很容易通过hash值验证出来,这保证历史的区块内容不可变。
Bits:控制挖矿的难度,要求计算出来的Hash值必须小于或等于这个目标Hash值,所以目标Hash值越低,计算匹配难度越高。
Nonce随机数:挖矿就是通过修改随机数,让整个区块的hash值能满足目标hash值的要。

区块的创建

程序取当前区块链的最新一区块作为新建区块的前一hash,时间戳组成header, 交易交易列表按优先级入块以Merkeltree存放,最后的Merkle 节点Hash,最后通过随机数,计算出来的满足条件的Hash值

挖矿:
有了上面的结构和理解,就很容易理解挖矿做的是什么了。挖矿就是不断尝试随机数,让区块的hash值能小于或等于目标hash值的,而挖矿到现在变得越来越专业,私人完全没机会,大矿主将随机数任务拆分,多节点计算,原来每个节点独自挖坑变成一个矿场的多个矿工协同,矿场则越来越集中。讽刺的是,比特币希望是去中心化,但挖矿却必须集中化才能胜出。 所以理想很丰满,现实却很骨感,能发挥生产力最大效率,获得最大利益的的才是王道。

区块链一 :区块链应用介绍和展望

你可能感兴趣的:(区块链,比特币)