I am trying to run a RSKJ node for the first time, and naturally I am more interested in a faster sync than validating historical blocks, because I believe sidechains should be checkpointed by their bridge operations, as any reorg earlier than a successful pegout breaks the peg and can be considered double spending.
But I can’t find any detailed documentation about the algorithm behind snapsync, so I can’t judge how far is it from what I would hope to see:
- Find the latest successful pegout transaction on Bitcoin
- Find a checkpoint block associated with it
- Sync the state at that checkpoint
- Start sync headers since that block to calculate the accumulated proof of Work (hopefully with improvements to the similar effect of FlyClient).
- Once the fork choice is decided, download the blocks since the checkpoint to update the state locally.
I am sure this not what snapsync does, but I would love to read any documentation for how does it actually work.