Header store and sync
Closed Nov 21, 2023
100% complete
Requirements Summary:
- P2P Protocols
- Exchange server
- Serves header requests from the store analog to the go implementation
- Exchange client
- Takes requests from the syncer and over an external API to retrieve headers to be put in store.
- Requests from trusted peers
- Head, Get, GetByHeight, GetVerifiedRange request types to be implemented
- Takes requests from the syncer and over an external API to retrieve headers to be put in store.
- HeaderSub
- S…
- Exchange server
Requirements Summary:
- P2P Protocols
- Exchange server
- Serves header requests from the store analog to the go implementation
- Exchange client
- Takes requests from the syncer and over an external API to retrieve headers to be put in store.
- Requests from trusted peers
- Head, Get, GetByHeight, GetVerifiedRange request types to be implemented
- Takes requests from the syncer and over an external API to retrieve headers to be put in store.
- HeaderSub
- Subscribes to new headers from the network
- Verifies them against latest subjective head in the store
- If successful, sets subjective head in store to the new network head and re-broadcasts further
- Exchange server
- Store
- Key-Value store from hash → header that is used by the other services
- Index of height → hash
- Accessible over an interface for external usage
- Syncer
- Routine for header sync
- Starts syncing from head of the store to the subjective head
- Sync target updated continuously from headersub
- Routine for header sync
Stretch Goals:
- Not relying on trusted peers for all requests (implementation of a peer tracker)
- Dividing range requests among multiple peers (implementation of
session
)
Success Criteria:
A success can be shown given a usage example where a user initializes and starts the Syncer (passing in the trusted peers and network id), which can catch up to the network head on the Arabica testnet and stay synced with incoming headers. Upon restart, it must continue where it left off.
This milestone is closed.
No open issues remain. View closed issues or see open milestones in this repository.