mirror of
https://github.com/btcsuite/btcd.git
synced 2026-08-13 12:32:51 +02:00
This commit extends the TxMempool interface to support both the legacy TxPool and new TxMempoolV2 implementations transparently. The interface now includes all methods required by the server, netsync, and mining subsystems, enabling a feature flag to toggle between implementations at runtime. The extended interface adds critical methods that were previously only available on the concrete TxPool type: RemoveOrphansByTag for peer cleanup, MiningDescs for block template generation, and several internal methods (RemoveDoubleSpends, RemoveOrphan, ProcessOrphans, MaybeAcceptTransaction) used by netsync for transaction relay. By abstracting these operations, we enable the server to use either implementation without subsystem-specific code changes. The netsync package now accepts the TxMempool interface rather than requiring the concrete TxPool type, allowing transparent switching. The MockTxMempool test implementation is updated to provide all new interface methods, ensuring tests continue to work with the expanded interface contract. |
||
|---|---|---|
| .. | ||
| blocklogger.go | ||
| doc.go | ||
| interface.go | ||
| log.go | ||
| manager.go | ||
| README.md | ||
netsync
Overview
This package implements a concurrency safe block syncing protocol. The SyncManager communicates with connected peers to perform an initial block download, keep the chain and unconfirmed transaction pool 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.
Installation and Updating
$ go get -u github.com/btcsuite/btcd/netsync
License
Package netsync is licensed under the copyfree ISC License.