| 481 | } |
| 482 | |
| 483 | SERIALIZE_METHODS(CDiskBlockIndex, obj) |
| 484 | { |
| 485 | LOCK(::cs_main); |
| 486 | int _nVersion = s.GetVersion(); |
| 487 | if (!(s.GetType() & SER_GETHASH)) READWRITE(VARINT_MODE(_nVersion, VarIntMode::NONNEGATIVE_SIGNED)); |
| 488 | |
| 489 | READWRITE(VARINT_MODE(obj.nHeight, VarIntMode::NONNEGATIVE_SIGNED)); |
| 490 | READWRITE(VARINT(obj.nStatus)); |
| 491 | READWRITE(VARINT(obj.nTx)); |
| 492 | if (obj.nStatus & (BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO)) READWRITE(VARINT_MODE(obj.nFile, VarIntMode::NONNEGATIVE_SIGNED)); |
| 493 | if (obj.nStatus & BLOCK_HAVE_DATA) READWRITE(VARINT(obj.nDataPos)); |
| 494 | if (obj.nStatus & BLOCK_HAVE_UNDO) READWRITE(VARINT(obj.nUndoPos)); |
| 495 | |
| 496 | // block header |
| 497 | |
| 498 | // Detect dynamic federation block serialization using "HF bit", |
| 499 | // or the signed bit which is invalid in Bitcoin |
| 500 | if (ser_action.ForRead()) { |
| 501 | READWRITE(obj.nVersion); |
| 502 | } else { |
| 503 | int32_t nVersion = obj.nVersion; |
| 504 | if (obj.is_dynafed_block()) { |
| 505 | nVersion |= (int32_t)CBlockHeader::DYNAFED_HF_MASK; |
| 506 | } |
| 507 | READWRITE(nVersion); |
| 508 | } |
| 509 | bool is_dyna = obj.RemoveDynaFedMaskOnSerialize(ser_action.ForRead()); |
| 510 | |
| 511 | READWRITE(obj.hashPrev); |
| 512 | READWRITE(obj.hashMerkleRoot); |
| 513 | READWRITE(obj.nTime); |
| 514 | |
| 515 | // Allocate objects in the optional<> fields when reading, since READWRITE will not do this |
| 516 | SER_READ(obj, obj.m_dynafed_params = DynaFedParams()); |
| 517 | SER_READ(obj, obj.m_signblock_witness = CScriptWitness()); |
| 518 | SER_READ(obj, obj.proof = CProof()); |
| 519 | |
| 520 | // For compatibility with elements 0.14 based chains |
| 521 | if (g_signed_blocks) { |
| 522 | if (!ser_action.ForRead()) { |
| 523 | obj.assert_untrimmed(); |
| 524 | } |
| 525 | if (is_dyna) { |
| 526 | READWRITE(obj.m_dynafed_params.value()); |
| 527 | READWRITE(obj.m_signblock_witness.value().stack); |
| 528 | } else { |
| 529 | READWRITE(obj.proof.value()); |
| 530 | } |
| 531 | } else { |
| 532 | READWRITE(obj.nBits); |
| 533 | READWRITE(obj.nNonce); |
| 534 | } |
| 535 | } |
| 536 | |
| 537 | uint256 GetBlockHash() const |
| 538 | { |
nothing calls this directly
no test coverage detected