IntersectMBO / IntersectMBO/ouroboros-network

Introduce a blocking version of MsgFindIntersection for a specific blockNo

Open
#3,538 0 comments 1 reaction 0 assignees View on GitHub
chain-sync node-to-client
Dominant language
Haskell
Stars
296
Forks
104
Avg merge
2d 10h
Merged PRs (30d)
4

Description

In db-sync we periodically publish checkpoints on specific points in the chain that users can download and start syncing from. This creates a strange case where the client can be ahead of the server. Indeed the chainsync protocol doesn't handle this case very, well: the node tells db-sync to rollback to genesis. The rollback however is not needed, since db-sync is at the correct fork, but the node doesn't know yet. This rollback is also very costly and defies the reason of using snapshots.

The solution we agreed was that we add a new message similar to `MsgFindIntersection`, which specifies a block no that the server needs to wait and send an intersection. If there is no intersection at this point, ie the node has a different block at this block no, only then it should rollback the client.

In addition, in the blocking state, the server can periodically send Messages to inform about its current tip, that don't change the agency.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.