Bitcoin full node and query server

Nov 5, 2024

View in context in the libbitcoin Slack #general mirror.

evoskuil20:28
  1. Non-overlapping ranges of blocks (e.g., 1000 blocks at a time) are downloaded and and unordered checks are done in parallel across multiple ranges
  2. The first range can also start confirmability checks (genesis to block 999), after which transactions from this range are committed to the Transactions table and the ConfirmationIndex is updated
  3. Now that the first range has finished with it’s confirmability checks, the second range of blocks can start its confirmability checks, and so on
  1. The entire chain can be downloaded concurrently. Ranges are not necessary and can often make milestone runs slower. Using the configurable window improves data locality and prevents long-running gaps. But it's purely statistical.
  2. Validation checks can progress as soon as there are no download gaps in the candidate chain, and continue to the next gap. Once the validated chain is stronger than the confirmed chain (typically 1 block at a time during catch-up), confirmability checks are performed in block order (heavily concurrently within each block).
  3. The only delays for validation and confirmation are gaps and resource availability.
josie19:17
agree with everything here. if we forget BN/BC for a second, my intuition is it will be hard to have a universal model that is performant for IBD (a data processing problem), vs updating chaintip/serving blocks to peers which is more of a high performance/realtime service problem