celestiaorg / celestiaorg/go-header
Prevent long-range attacks
- Dominant language
- Go
- Stars
- 21
- Forks
- 33
- Avg merge
- 5d 20h
- Merged PRs (30d)
- 7
Description
currently, if nodes start following a fork (outside of the unbonding period), they will discard the subjective head (which was given by a subjectively chosen trusted peer or the default baked in trusted peer in node). This is an issue that can easily be fixed by:
- either by backwards-sync (which would be very time consuming), or
- a simpler fix: once your fork passed the time or the height of the subjective header (inside of the unbonding period), you realize you are actually on a fork and you (store the fork as evidence and) halt; it’s important that the fork headers aren’t gossiped. Recovering from this requires you to restart the node, ideally blacklisting the peers that fooled you
_Originally posted by @liamsi in https://github.com/celestiaorg/go-header/issues/79#issuecomment-1632473047_
Contributor guide
Research direction
No files, tests, or entry points are named. Start by tracing header synchronization and subjective-head handling, then compare the behavior with the proposed fork-detection and halt conditions. Done means a fork beyond the unbonding period is stored as evidence and halts without gossiping fork headers, with the stated restart and peer-blacklisting recovery path.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- blockchain
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100