zebra/data-flow.md

1.2 KiB

  • Started in ProcessNewBlock, main.cpp:4258
    • Calls CheckBlock, defined at ab2b7c0969/src/main.cpp (L3930)
      • Calls CheckBlockHeader ab2b7c0969/src/main.cpp (L3900)
        • checks that the block version is not too old
          • this requires no information
        • checks that the equihash solution is valid
        • checks that the proof of work parameters are valid
          • requires the current proof of work amount params.powLimit
      • Checks the Merkle root
      • Checks size limits
      • Checks that the first transaction is coinbase, and the rest are not
      • Calls CheckTransaction for each transaction
      • Sum up "LegacySigOps" for each transaction and check that it's less than some maximum
    • Acquires a lock, then calls MarkBlockAsReceived (networking?) and then calls AcceptBlock