零点课堂 | 什么是区块头 Blockheader?

区块头结构是一种挖矿原理。挖矿本质是执行Hash函数的过程,而Hash函数是一个单输入单输出函数,输入数据就是这个区块头。

比特币区块头共6个字段
int32_t nVersion; //版本号,4字节
uint256 hashPrevBlock; //前一个区块的区块头hash值,32字节
uint256 hashMerkleRoot; //包含进本区块的所有交易构造的Merkle树根,32字节
uint32_t nTime; //Unix时间戳,4字节
uint32_t nBits; //记录本区块难度,4字节
uint32_t nNonce; //随机数,4字节
如上,比特币每一次挖矿就是对这80个字节连续进行两次SHA256运算(SHA256D),运算结果是固定的32字节(二进制256位)。
以上6个字段情况又各不相同:
1、nVersion,区块版本号,只有在升级时候才会改变。
2、hashPrevBlock,由前一个区块决定。指前一区块的256位HASH值,也是链的基础。该字段使得Block之间链接起来,形成一个巨大的“链条”。单个Block是很平常的数据结构,但以链式结构组织起来后却使得它们具有非常深远的意义;
3、nBits当前目标HASH值。由全网决定,每2016个区块重新调整,调整算法固定。挖矿的难度和这个有很大关系,一个区块头的SHA256值必定要小于或等于目标HASH值,该区块才能被网络所接受,目标HASH越低,产生一个新区块的难度越大。
因此以上3个字段可以理解为是固定的,对于每个矿工来说都一样。矿工可以自由调整的地方是剩下的3个字段:
1、nNonce, 随机数,产生HASH时用到它,提供2^32种可能取值
2、nTime,其实本字段能提供的值空间非常有限,因为合理的区块时间有一个范围,这个范围是根据前一个区块时间来定,比前一个区块时间太早或者太超前都会被其他节点拒绝。但是后一个区块的区块时间略早于前一个区块时间,这是允许的。一般来说,矿工会直接使用机器当前时间戳。
3、hashMerkleRoot,理论上提供2^256种可能,本字段的变化来自于对包含进区块的交易进行增删,或改变顺序。

如图所示字段,或者把它想象为足球的球门,越小越难进,而且会越来越小

本文由 零点财经 作者:tao 发表,其版权均为 零点财经 所有,文章内容系作者个人观点,不代表 零点财经 对观点赞同或支持。如需转载,请注明文章来源。
分享生成图片
43
Conin

发表回复

零点课堂 | 什么是区块头 Blockheader?

2021-02-04 15:15:11

区块头结构是一种挖矿原理。挖矿本质是执行Hash函数的过程,而Hash函数是一个单输入单输出函数,输入数据就是这个区块头。

比特币区块头共6个字段
int32_t nVersion; //版本号,4字节
uint256 hashPrevBlock; //前一个区块的区块头hash值,32字节
uint256 hashMerkleRoot; //包含进本区块的所有交易构造的Merkle树根,32字节
uint32_t nTime; //Unix时间戳,4字节
uint32_t nBits; //记录本区块难度,4字节
uint32_t nNonce; //随机数,4字节
如上,比特币每一次挖矿就是对这80个字节连续进行两次SHA256运算(SHA256D),运算结果是固定的32字节(二进制256位)。
以上6个字段情况又各不相同:
1、nVersion,区块版本号,只有在升级时候才会改变。
2、hashPrevBlock,由前一个区块决定。指前一区块的256位HASH值,也是链的基础。该字段使得Block之间链接起来,形成一个巨大的“链条”。单个Block是很平常的数据结构,但以链式结构组织起来后却使得它们具有非常深远的意义;
3、nBits当前目标HASH值。由全网决定,每2016个区块重新调整,调整算法固定。挖矿的难度和这个有很大关系,一个区块头的SHA256值必定要小于或等于目标HASH值,该区块才能被网络所接受,目标HASH越低,产生一个新区块的难度越大。
因此以上3个字段可以理解为是固定的,对于每个矿工来说都一样。矿工可以自由调整的地方是剩下的3个字段:
1、nNonce, 随机数,产生HASH时用到它,提供2^32种可能取值
2、nTime,其实本字段能提供的值空间非常有限,因为合理的区块时间有一个范围,这个范围是根据前一个区块时间来定,比前一个区块时间太早或者太超前都会被其他节点拒绝。但是后一个区块的区块时间略早于前一个区块时间,这是允许的。一般来说,矿工会直接使用机器当前时间戳。
3、hashMerkleRoot,理论上提供2^256种可能,本字段的变化来自于对包含进区块的交易进行增删,或改变顺序。

如图所示字段,或者把它想象为足球的球门,越小越难进,而且会越来越小