zebra/zebrad
Henry de Valence 0a405c737d zebrad: check state in obtaintips, not extendtips.
The original sync algorithm split the sync process into two phases, one
that obtained prospective chain tips, and another that attempted to
extend those chain tips as far as possible until encountering an error
(at which point the prospective state is discarded and the process
restarts).

Because a previous implementation of this algorithm didn't properly
enforce linkage between segments of the chain while extending tips,
sometimes it would get confused and fail to discard responses that did
not extend a tip.  To mitigate this, a check against the state was
added.  However, this check can cause stalls while checkpointing,
because when a checkpoint is reached we may suddenly need to commit
thousands of blocks to the state.  Because the sync algorithm now has a
a `CheckedTip` structure that ensures that a new segment of hashes
actually extends an existing one, we don't need to check against the
state while extending a tip, because we don't get confused while
interpreting responses.

This change results in significantly smoother progress on mainnet.
2020-10-26 12:05:35 -07:00
..
src zebrad: check state in obtaintips, not extendtips. 2020-10-26 12:05:35 -07:00
systemd add systemd service file 2020-10-14 15:33:00 -04:00
tests Reverse displayed endianness of transaction and block hashes (#1171) 2020-10-22 07:54:02 +10:00
Cargo.toml zebrad: use hedged requests in sync 2020-10-26 12:05:35 -07:00
README.md Create workspace skeleton based on design.md 2019-08-29 14:46:54 -07:00

README.md

Zebrad

Zebrad is an application.

Getting Started

This application is authored using Abscissa, a Rust application framework.

For more information, see:

Documentation