HomePhabricator

Sync chain more readily from inbound peers during IBD

Description

Sync chain more readily from inbound peers during IBD

Summary:
When in IBD, if the honest chain is only known by inbound peers, then we must
eventually sync from them in order to learn it. This change allows us to
perform initial headers sync and fetch blocks from inbound peers, if we have no
blocks in flight.

The restriction on having no blocks in flight means that we will naturally
throttle our block downloads to any such inbound peers that we may be
downloading from, until we leave IBD. This is a tradeoff between preferring
outbound peers for most of our block download, versus making sure we always
eventually will get blocks we need that are only known by inbound peers even
during IBD, as otherwise we may be stuck in IBD indefinitely (which could have
cascading failure on the network, if a large fraction of the network managed to
get stuck in IBD).

This is a backport of core#24171

Depends on D14882

Test Plan:
ninja all check-all

I also ran the test on its own to check that it fails before this change.

Run IBD

Reviewers: #bitcoin_abc, Fabien

Reviewed By: #bitcoin_abc, Fabien

Subscribers: Fabien

Differential Revision: https://reviews.bitcoinabc.org/D14883

Details

Provenance
Suhas Daftuar <sdaftuar@gmail.com>Authored on Jan 26 2022, 20:59
PiRKCommitted on Dec 4 2023, 06:54
PiRKPushed on Dec 4 2023, 06:54
Reviewer
Restricted Project
Differential Revision
D14883: Sync chain more readily from inbound peers during IBD
Parents
rABC135b0f84940a: [Cashtab][Alias] Deprecate Check Alias button
Branches
Unknown
Tags
Unknown