celestiaorg / celestiaorg/go-header

Prevent long-range attacks

Open
#99 7 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.