dcrd/internal/netsync
Dave Collins f4fce3e595
multi: Use an APBF for recently confirmed txns.
This modifies the server to track the recently confirmed transactions
using a much more efficient APBF instead of an LRU cache which has
significant overhead in addition to having to store the entirety of all
items added to it.

This is acceptable because false positives are acceptable as the goal is
to deduplicate transaction requests which is an ideal case for APBFs.

More concretely, the current LRU cache that stores the recently
confirmed transactions takes around 2.67 MiB per profiling while the new
APBF only takes around 180 KiB, a reduction of around 93%, while
exhibiting roughly the same computational performance.
2021-02-08 16:00:57 -06:00
..
doc.go netsync: Add package documentation. 2020-12-15 13:26:57 -06:00
interface.go netsync/server: Update peer heights directly. 2021-01-07 17:15:36 -06:00
log.go multi: Add chain verify progress percentage. 2021-01-21 23:30:35 -06:00
manager.go multi: Use an APBF for recently confirmed txns. 2021-02-08 16:00:57 -06:00
README.md netsync: Add package documentation. 2020-12-15 13:26:57 -06:00

netsync

Build Status ISC License Doc

Package netsync implements a concurrency safe block syncing protocol.

Overview

The provided implementation of SyncManager communicates with connected peers to perform an initial block download, keep the chain in sync, and announce new blocks connected to the chain. Currently the sync manager selects a single sync peer that it downloads all blocks from until it is up to date with the longest chain the sync peer is aware of.

License

Package netsync is licensed under the copyfree ISC License.