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. |
||
|---|---|---|
| .. | ||
| doc.go | ||
| interface.go | ||
| log.go | ||
| manager.go | ||
| README.md | ||
netsync
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.