비트코인의 블록헤더와 내용이 중첩되는것이 많습니다.
hash
prev pointer, pskip pointer
Height
File, DataPos,UndoPos : 파일에 저장관련 내용
ChainWork
Tx
ChainTx
Status
Version
hashMerkleRoot
Time
Bits
Nounce
SequenceId, TimeMax
MedianTimeSpan
블록을 비교,연결하는 핵심 클래스입니다. 위에서 핵심은 status입니다. status 상태로 블록의 유효성을 파악합니다.
enum BlockStatus: uint32_t {
BLOCK_VALID_UNKNOWN = 0,
BLOCK_VALID_HEADER = 1,
BLOCK_VALID_TREE = 2,
BLOCK_VALID_TRANSACTIONS = 3,
BLOCK_VALID_CHAIN = 4,
BLOCK_VALID_SCRIPTS = 5,
BLOCK_VALID_MASK = BLOCK_VALID_HEADER | BLOCK_VALID_TREE | BLOCK_VALID_TRANSACTIONS |
BLOCK_VALID_CHAIN | BLOCK_VALID_SCRIPTS,
BLOCK_HAVE_DATA = 8,
BLOCK_HAVE_UNDO = 16,
BLOCK_HAVE_MASK = BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO,
BLOCK_FAILED_VALID = 32,
BLOCK_FAILED_CHILD = 64,
BLOCK_FAILED_MASK = BLOCK_FAILED_VALID | BLOCK_FAILED_CHILD,
BLOCK_OPT_WITNESS = 128,
};