MCPcopy Create free account
hub / github.com/ElementsProject/elements / SERIALIZE_METHODS

Method SERIALIZE_METHODS

src/chain.h:483–535  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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 {

Callers

nothing calls this directly

Calls 10

is_dynafed_blockMethod · 0.80
assert_untrimmedMethod · 0.80
CScriptWitnessClass · 0.70
CProofClass · 0.70
DynaFedParamsClass · 0.50
GetVersionMethod · 0.45
GetTypeMethod · 0.45
ForReadMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected