Block

Block结构

Block

几点注意:

nBits的上限是0x1D00FFFF,无下限,但显而易见,负值无意义,所以代码实现时有对负值的特殊处理。

nNonce是4字节,显然无法覆盖256位的hash target,因此还要别的手段来扩大hash范围,详见挖矿。

区块头举例

Block Header

说下版本号

最初是版本1

2012年9月,BIP34提出coin base中加入块高度等规则,这引入了一个软分叉,Bitcoin Core 0.7.0版本引进这个提议。

Bitcoin Core 0.7.0及以上版本约定在块高度224,412开始,拒绝接受版本号为2却不遵守BIP34的新块。

并约定从227,930开始拒绝版本号为1的新块。

什么是软分叉

当软件升级后,老的节点不感知新软件的变动,新的交易和块在老节点上依然可以校验通过,这叫软分叉

拿上面的BIP34来讲,块高度字段是添加在coinbase的scriptPub中的,而这个字段老版本不做校验,因此在224,412到227,930的这三周内,老节点和新节点在同一条链上,给老节点最后的升级机会,否责227,930后将会出现分叉,老节点新生成的块将会无效。

为什么是老的链无效而不是新的链无效?

算力投票的结果,如果大部分矿工都支持version2,那么BIP32得以通过,新链是合法链。

你可能感兴趣的:(Block)