区块索引对象
区块索引对象用 CBlockIndex
类来表示,重要字段有下面一些。
phashBlock
指向区块的哈希
pprev
指向前一个区块的索引指针,类型为
CBlockIndex*
。pskip
指向更前一个区块的索引指针,类型为
CBlockIndex*
。nHeight
区块在区块链中的高度,创世区块调试为0。
nFile
区块存在哪一个
blk?????.dat
文件中。nDataPos
区块在
blk?????.dat
文件中的偏移量。nUndoPos
区块的 undo data 在
rev?????.dat
文件中的偏移量。nChainWork
包含当前区块在内的总的工作量,只存在于内存中。
nTx
区块的交易数量,只存在于内存中。
nChainTx
包含当前区块在内的总的交易数量,只存在于内存中。
nStatus
区块的验证状态。可能的值为:
BLOCK_VALID_HEADER
版本 OK,哈希满足声称的 PoW,交易数大于等于1 小于等于最大数量,时间戳不在未来。
BLOCK_VALID_TREE
所有的父区块头部已经找到,难度也匹配,时间戳大于等于 median previous。隐含着所有父亲都在树上。
BLOCK_VALID_TRANSACTIONS
只有第一个交易是 coinbase,coinbase 输入脚本的长度大于等于 2 小于等于 100,所有交易是 OK 的,没有重复的交易 ID,sigops, size, merkle root。
BLOCK_VALID_CHAIN
输出没有超过输入,没有双重花费,coinbase 输出是 OK 的,没有使用时间过短的 coinbase,BIP30。
BLOCK_VALID_SCRIPTS
脚本和签名是 Ok 的。
BLOCK_VALID_MASK
所有有效位,等于
BLOCK_VALID_HEADER | BLOCK_VALID_TREE | BLOCK_VALID_TRANSACTIONS | BLOCK_VALID_CHAIN | BLOCK_VALID_SCRIPTS
BLOCK_HAVE_DATA
所有区块在
blk*.dat
文件中可用。BLOCK_HAVE_UNDO
undo data available in rev*.dat
BLOCK_HAVE_MASK
等于
BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO
BLOCK_FAILED_VALID
最后达到有效性后的阶段失败
BLOCK_FAILED_CHILD
descends from failed block
BLOCK_FAILED_MASK
等于
BLOCK_FAILED_VALID | BLOCK_FAILED_CHILD
BLOCK_OPT_WITNESS
block data in blk*.data was received with a witness-enforcing client
nVersion
区块头部的版本号。
hashMerkleRoot
区块头部的默克尔根。
nTime
区块头部的时间戳。
nBits
区块头部的难度数。
nNonce
区块头部的随机数。
nSequenceId
nTimeMax
Last updated
Was this helpful?