Validate sealing blocks only via backward hash chain validation on bootstrap instead of also via QC
- Dominant language
- Go
- Stars
- 22
- Forks
- 4
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 34
Description
When we bootstrap a node, it continues replicating from its latest epoch stored in its ledger.
This means that the epoch changes it performs rely on the fact that the blocks that cause the epoch change are properly signed by a quorum of nodes from the latest epoch.
However, this can be problematic in a setting where the node was offline for a long time or is a new node, because if the keys of the validator set have been leaked in the past, a malicious node can falsify an entire chain of blocks.
What we should do instead is when we bootstrap the node, we replicate only the sealing blocks backwards, until we reach the latest committed sealing block, and then we keep the chain of sealing blocks and use them and never replicate them by verifying quorum certificates.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the bootstrap replication flow and the linked pull request #573, then trace how sealing blocks, backward hash-chain validation, and quorum certificates are currently handled. Done means bootstrap validation follows the issue's proposed sealing-block chain approach and avoids relying on quorum certificates for those blocks.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100