P2P

PRPriorityReviewabilityReviewsAgreementSize
(+)#36015 brunoerg txorphanage: bound orphan memory by storing transactions serialized
  • Prevent peers from consuming excessive node memory by sending crafted orphan transactions
  • Ensure orphan memory limits cannot be bypassed by transactions with massive witness stacks
P2 · DoS protection
  • P1 because it closes a substantial memory DoS amplification vector in P2P transaction relay
  • Peers could allocate 28 times more heap memory than accounted for, risking node crashes
  • Protects resource-constrained nodes from remote memory exhaustion during orphan handling
Ready
  • Ready for review as the branch merges cleanly, CI passes, and earlier performance issues are resolved
0 (+1)
Strong
  • Strong consensus on storing serialized orphans rather than altering weight metrics
  • Proposed serialized storage design and contributed package selection optimizations (instagibbs)
  • Verified memory and CPU impacts through benchmarking across updates (jeanpablojp)
  • Concept approval without stated reasons (w0xlt, l0rinc, Crypt-iQ)
193 + 241 tests
  • 193 lines added or modified outside tests
  • 241 lines added or modified in tests
  • 146 lines removed in total
  • 10 files, 7 commits
(+)#36142 l0rinc net: validate Tor onion service replies and cached keys
  • Prevent Tor command and argument injection from malicious or impersonated Tor control daemons
  • Stop attackers from hijacking inbound onion connections or triggering Tor shutdowns
P2 · bug fix
  • P2 because it fixes an injection flaw in Tor control that can hijack inbound onion connections
  • Injected arguments in cached keys could divert incoming connections to an attacker target
  • Protects node connectivity and transaction privacy for onion service operators
  • Ranking pass: Only confirmed-exploitable security fix on the list (Tor control injection hijacking inbound onion traffic), so it leads the P2 band.
Needs rebase
  • Needs rebase due to merge conflicts against master
0Strong
  • Strong concept approval across active reviewers
  • Verified injection risks by testing hijacked inbound Tor connections (jeanpablojp)
  • Suggested strict whitelist validation instead of character blacklists (vasild)
  • Concept approval after exploring file permission safeguards (winterrdog)
26 + 80 tests
  • 26 lines added or modified outside tests
  • 80 lines added or modified in tests
  • 17 lines removed in total
  • 2 files, 3 commits
(+)#36277 andrewtoth net: always complete all initial private broadcast connections
  • Protect the origin privacy of privately broadcast transactions
  • Prevent timing leaks caused by canceling connections when a transaction is seen early
P2 · bug fix
  • P2 because it fixes an origin privacy leak in private transaction propagation
  • Stops network observers from deducing the origin by timing connection cancellation
Ready
  • Ready for review with passing tests and no open blockers
0
Positive
  • Positive sentiment with no objections raised
  • Concept approval with an intent to review (vasild)
86 + 122 tests
  • 86 lines added or modified outside tests
  • 122 lines added or modified in tests
  • 22 lines removed in total
  • 7 files, 1 commits
(+)#35558 davidgumberg p2p: Prefill compact blocks
  • Predictively prefill likely missing transactions when sending compact blocks
  • Avoids high-latency GETBLOCKTXN round-trips to speed block propagation and reduce stale block risk
P2 · speedup
  • P2 because it significantly improves compact block relay without requiring protocol changes
  • Increases instant block reconstruction rates from roughly 57% to 90%
  • Directly reduces network-wide block propagation delays and stale block risk
Review #35724 first
  • Review #35724 first
  • Author rebased on top of #35724 after isolating logging changes there
0 (+2)Strong
  • Broad concept consensus with multiple tested approvals
  • Support for a backwards-compatible approach to speed block relay (josibake, 0xB10C)
  • Verified with node telemetry and test suites across transports (m4ycon, s00ly, johnnyasantoss)
  • Resolved objections regarding unnecessary syscalls and a use-after-free (andrewtoth, m4ycon)
  • Concept approval without stated reasons (w0xlt, murchandamus, edilmedeiros, ismaelsadeeq)
633 + 84 tests
  • 633 lines added or modified outside tests
  • 84 lines added or modified in tests
  • 143 lines removed in total
  • 16 files, 16 commits
(+)#36244 w0xlt validation, net: Process blocks asynchronously and reduce cs_main contention
  • Keep nodes responsive to peers and avoid network latency spikes while validating incoming blocks
  • Ensure compact block responses and regular peer messaging stay fast during heavy validation load
P2 · DoS protection
  • P2 because it resolves a major responsiveness bottleneck where peers time out during block validation
  • Ping latency drops by 98 percent and block-serving response times improve up to 45 percent under load
Ready
  • Ready for review now, passing CI with extensive unit and regression test coverage
0
  • No review verdicts recorded
Crickets
  • Early architectural discussion is positive with no objections raised
  • Points out steady-state message processing and compact-block serving as key benefits (andrewtoth)
  • Notes that it enables eventual parallel validation of competing sibling blocks (andrewtoth)
889 + 2,245 tests
  • 889 lines added or modified outside tests
  • 2,245 lines added or modified in tests
  • 294 lines removed in total
  • 41 files, 20 commits
(+)#35839 l0rinc p2p: prevent IBD stall after empty headers
  • Prevent initial headers sync from stalling indefinitely when a manual or inbound peer returns empty headers
  • Allow another eligible peer to take over sync so node initial block download can continue
P2 · bug fix
  • P2 because it fixes an indefinite sync stall bug affecting manual and inbound peers during IBD
  • Prevents nodes from staying stuck behind when a connected peer has no new headers to offer
Ready
  • Ready for review
  • CI is passing and remaining open feedback is limited to minor formatting and a test question
0
Strong
  • Strong consensus to fix the confirmed headers sync stall on mainnet (davidgumberg)
  • Concept approval after helping refine retry backoff logic and test coverage (jeanpablojp)
  • Concept approval on the latest update (hodlinator)
23 + 39 tests
  • 23 lines added or modified outside tests
  • 39 lines added or modified in tests
  • 11 lines removed in total
  • 2 files, 5 commits
(+)#35919 l0rinc p2p: avoid orphanage abort at high peer counts
  • Prevent node crashes when more than 3,000 peers announce orphan transactions
  • Protects nodes running with custom high connection limits on Linux from assertion aborts
P2 · bug fix
  • P2 because it fixes an assertion abort in P2P message handling that can crash nodes
  • Impacts nodes with custom configurations permitting over 3,000 peer connections
Ready
  • Ready for review as author incorporated all reviewer suggestions and CI is clean
0 (+3)Strong
  • Strong support after crash reproduction, fuzzing expansion, and doc updates
  • Verified by reproducing the crash on master and confirming the fix (jeanpablojp)
  • Approved after author expanded fuzz testing to cover the zero-share path (brunoerg)
  • Approved after test sanity checks and comment clarifications were added (danielabrozzoni)
16 + 20 tests
  • 16 lines added or modified outside tests
  • 20 lines added or modified in tests
  • 19 lines removed in total
  • 4 files, 4 commits
(+)#35578 stratospher net: don’t self advertise tor exit node ip addresses in outbound connections
  • Prevent nodes using proxies or Tor from self-advertising unreachable exit node IPs on outbound connections
  • Stops network-wide address table pollution and reduces wasted failed connection attempts across the network
P2 · bug fix
  • P2 after comparing with the other PRs here (assessed alone as P3): Raised to P2: reviewer telemetry shows network-wide addrman pollution and repeated doomed connections, a durable address-management fix, not a local edge case.
  • P3 because it fixes address table pollution that causes peers to repeatedly attempt doomed connections
  • Reduces widespread network waste where up to three quarters of all Tor exit nodes fill address tables
Ready
  • Ready to review with clean tests and mergeability, and all earlier feedback addressed
0
Strong
  • Broad agreement that gossiping unreachable proxy exit IPs is harmful
  • Concept approval supported by data showing frequent failed connections to exit nodes (0xB10C)
  • Concept approval after verifying behavior locally and contributing test code (naiyoma)
  • Concept approval noting that transparent torification will remain unaffected (mzumsande)
24 + 29 tests
  • 24 lines added or modified outside tests
  • 29 lines added or modified in tests
  • 4 lines removed in total
  • 7 files, 5 commits
(+)#35591 sr-gi [DO NOT MERGE] Erlay: bandwidth-efficient transaction relay protocol (Full implementation)
  • Cut transaction relay bandwidth consumption across the network using set reconciliation
  • Let node operators maintain more outbound connections to resist eclipse attacks without extra overhead
P2 · new feature
  • P2 because it substantially lowers bandwidth overhead for node transaction relay
  • Allows nodes to run additional outbound connections, strengthening network eclipse resistance
  • Ranking pass: Problem importance keeps it P2, but the full implementation is explicitly not for merge and will be carved up, so it sits behind ready P2 work.
Needs rebase
  • Needs rebase due to merge conflicts with master
  • Intended for testing and will be split into smaller PRs before merging
0
  • No review verdicts recorded
Positive
  • Constructive engagement on protocol design and safety
  • Raised concern over potential DoS from slow quadratic minisketch decoding on large sketches (brunoerg)
  • Reported test gaps through mutation testing on boundary limits and extensions (brunoerg)
1,864 + 2,562 tests
  • 1,864 lines added or modified outside tests
  • 2,562 lines added or modified in tests
  • 402 lines removed in total
  • 30 files, 38 commits
(+)#35054 fjahr p2p: UTXO set sharing
  • Allow nodes to fetch assumeutxo snapshots directly across the P2P network instead of via out-of-band sources
  • Enable fast, frictionless node bootstrapping for regular users and prepackaged node projects
P2 · new feature
  • P2 because it removes the main barrier to adopting assumeutxo for fast node bootstrapping
  • Provides verified P2P snapshot relay needed by projects like BTCPayServer and prepackaged nodes
Needs rebase, CI failing
  • Review is blocked: PR is a draft, has merge conflicts, failing CI, and author has been silent for 115 days
0 -6Disputed
  • Heavily disputed, with strong opposition against expanding assumeutxo into the P2P network
  • Concept approval because it provides in-band snapshot acquisition (andrewtoth, svanstaa)
  • Concept rejection: adds validation complexity and dual chainstate maintenance burden (stickies-v, l0rinc)
  • Concept rejection: introduces undesirable trust assumptions to the P2P protocol (evoskuil, eynhaender)
  • Concept rejection: uncertain demand and excessive long-term maintenance costs (narula, nkaretnikov)
943 + 771 tests
  • 943 lines added or modified outside tests
  • 771 lines added or modified in tests
  • 1 lines removed in total
  • 27 files, 13 commits
(+)#35354 randomlogin net: wait for validation queue flush for missing compact filter for an already known block
  • Prevent full nodes from dropping compact filter queries when block indexing lags behind new blocks
  • Stops BIP 157 light clients from disconnecting or banning nodes when requests arrive before filters index
P3 · bug fix
  • P2 because it resolves an interoperability bug causing light clients to disconnect or ban full nodes
  • Avoids dropped filter queries for announced blocks to maintain reliable peer connectivity
Ready
  • Worth reviewing now with recent architectural feedback incorporated and passing CI
0
  • No review verdicts recorded
Strong
  • Reviewers agree the issue needs fixing and favor handling the race in net processing
  • Objected to resolving the race in index code or stalling the message thread (sedited, mzumsande)
  • Proposed parking peer message processing to preserve order without blocking others (ajtowns)
176 + 387 tests
  • 176 lines added or modified outside tests
  • 387 lines added or modified in tests
  • 13 lines removed in total
  • 3 files, 3 commits
(+)#35003 furszy validation: improve block data I/O error handling in P2P paths
  • Prevent block storage I/O failures from leaving nodes silently stuck unable to advance the chain
  • Trigger graceful shutdown instead of ungraceful aborts when disk access fails during peer requests
P3 · stability
  • P3 because it replaces an assert crash with a controlled graceful shutdown on block read failure
  • Ensures peers are disconnected cleanly when disk reads fail instead of silently dropping requests
  • Ranking pass: Top of P3: silent inability to advance the chain on disk I/O failure is the most consequential remaining P3, and it needs an approach decision.
Author silent 70d
  • Author silent for 70 days following an approach objection and broader architectural questions
1 (+4) -1
Disputed
  • Approach objection to returning null pointers instead of preserving filesystem exceptions (josibake)
  • PR cannot be merged as-is without deciding a unified error-handling strategy across paths (maflcko)
  • Author defended consistency with existing callers but has not replied since July (furszy)
15 + 533 tests
  • 15 lines added or modified outside tests
  • 533 lines added or modified in tests
  • 7 lines removed in total
  • 10 files, 5 commits
(+)#34213 brunoerg net: preserve anchors when network is disabled
  • Prevent anchor peers from being erased when a node shuts down with networking disabled
  • Maintain eclipse attack resilience across restarts after running offline
P3 · bug fix
  • P3 because it fixes a corner-case bug where anchors protecting against eclipse attacks are dropped offline
  • Losing anchors degrades restart topology diversity but is not easily exploitable in standard operation
Ready
  • Ready for review
  • All thread-safety and edge-case concerns have been addressed
1 (+2)Strong
  • Broad agreement on preserving anchors across offline restarts
  • Strong support because it improves restart eclipse resilience without dropping anchors (willcl-ark)
  • Concept approval with review of anchor life cycle and lock ordering (danielabrozzoni)
  • Concept approval confirming benefits for nodes started offline (waketraindev)
+103/-20
  • 3 files
  • 6 commits
(+)#35936 l0rinc net: reject oversized locators before allocating
  • Disconnect peers that send oversized block locator counts before reading their payloads
  • Avoid unneeded memory allocations when parsing malformed getblocks and getheaders messages
P3 · DoS protection
  • P3 because it fixes an edge-case bug where peers with truncated oversized locators escaped disconnection
  • It prevents lingering misbehaving connections and avoids unneeded memory allocations
Ready
  • Ready for review as branch is clean and all reviewer feedback has been addressed
0 (+2)
Positive
  • Tested and approved after proposing a fix for counts above MAX_SIZE (jeanpablojp)
  • Approved the approach and implementation (achow101)
  • Endorsed the exception-based design over duplicating stream parsing loops (ajtowns)
  • Questioned parser consistency with headers without blocking (mzumsande, sedited)
36 + 26 tests
  • 36 lines added or modified outside tests
  • 26 lines added or modified in tests
  • 20 lines removed in total
  • 4 files, 4 commits
(+)#34824 w0xlt net: encapsulate TxRelay state and replace recursive mutexes
  • Make transaction relay concurrency safer by encapsulating internal peer state and removing recursive locks
  • Enables compile-time lock analysis and reduces deadlock risks during peer message processing
P3 · cleanup
  • P3 because this is an internal refactoring that improves concurrency safety without changing wire behavior
  • Helps unblock broader efforts to eliminate recursive mutexes across networking code
  • Ranking pass: Ranked above other refactors because it retires a known message-handling hazard (recursive mutexes, #19303) rather than only reorganizing code.
Ready
  • Ready for review: cleanly rebased, passes CI, and incorporates previous reviewer feedback
0 (+2)
Strong
  • Strong support for modularizing peer relay state and eliminating recursive mutexes
  • Concept approval without stated reasons (theuni, hebasto)
  • Support for the encapsulation approach (sedited)
  • Confirmed earlier concerns about thread-safety analysis leaks are addressed (pablomartin4btc)
396 + 407 tests
  • 396 lines added or modified outside tests
  • 407 lines added or modified in tests
  • 192 lines removed in total
  • 7 files, 6 commits
(+)#35750 mzumsande addrman: make `m_last_good` network-specific
  • Prevent nodes from incorrectly penalizing peers on one network when local reachability fails on another
  • Keep valid peer addresses from being marked terrible and dropped from relay due to local network outages
P3 · bug fix
  • P3 because it fixes an address-management bug where local outages degrade remote peer scores
  • Improves address relay quality for nodes running with partial network connectivity
  • Affects only nodes with isolated network failures and does not fix an urgent security vulnerability
  • Ranking pass: Addrman correctness fix with a concrete degradation path for multi-network nodes; belongs with the other relay/address bug fixes, not near the tail.
Ready
  • Ready to review
  • Small diff with unit tests, clean rebase, and all discussion points addressed
0Strong
  • Broad agreement on the concept across multiple reviewers (fjahr, brunoerg, stratospher, naiyoma)
  • Verified with manual tests and logs confirming cross-network failure isolation (naiyoma)
  • Concern about retaining unreachable addresses resolved as an acceptable tradeoff (stratospher)
7 + 54 tests
  • 7 lines added or modified outside tests
  • 54 lines added or modified in tests
  • 4 lines removed in total
  • 3 files, 2 commits
(+)#36080 mzumsande p2p: Suspend ping timeout while downloading blocks from a peer
  • Avoid disconnecting well-behaved peers when block downloads delay their ping responses
  • Improves initial sync reliability for users on slow or bandwidth-constrained connections
P3 · bug fix
  • P3 because it fixes unnecessary disconnections during block download on slow connections
  • Other fallback timeouts already prevent nodes from stalling indefinitely
  • Ranking pass: Real disconnection bug during IBD with a linked issue, so placed with peer-management bug fixes rather than below feature work.
Ready
  • Ready to review now with passing CI and recent reviewer feedback addressed
0
Positive
  • Concept support with test improvements addressed (l0rinc)
  • Concept support with edge cases explored and extra test assertions added (danielabrozzoni)
18 + 220 tests
  • 18 lines added or modified outside tests
  • 220 lines added or modified in tests
  • 18 lines removed in total
  • 3 files, 3 commits
(+)#35920 ajtowns net_processing: Ignore MSG_WITNESS_TX entries from INV messages
  • Ignore MSG_WITNESS_TX announcements from wtxid-relay peers to adhere to BIP 144
  • Disconnect block-relay-only peers that announce transactions regardless of the INV type used
P3 · protocol fix
  • P3 because it aligns wtxid-relay behavior with BIP 144 and fixes disconnect logic for block-relay peers
  • Enforces protocol rules consistently while preserving compatibility for existing clients like Neutrino
  • Ranking pass: BIP144 conformance plus disconnect-logic correctness ranks with protocol fixes, above configuration and observability PRs.
Ready
  • Ready to review
  • All substantive ecosystem compatibility feedback has been addressed in code
0
Strong
  • Strong support for protocol conformance and cleanup
  • Concept approval without stated reasons (l0rinc, fjahr)
  • Compatibility concern about Neutrino resolved by keeping support for non-wtxid peers (darosior, 0xB10C)
14 + 14 tests
  • 14 lines added or modified outside tests
  • 14 lines added or modified in tests
  • 25 lines removed in total
  • 3 files, 3 commits
(+)#35874 l0rinc p2p: prevent BIP35 requesters from bypassing inbound tx-relay capacity
  • Prevent inbound peers from bypassing transaction-relay limits by requesting full mempools via BIP35
  • Keep SPV bloom filter clients working properly while blocking evasion of peer eviction accounting
P3 · DoS protection
  • P3 because it closes a loophole where inbound peers evade tx-relay connection limits while fetching mempools
  • Impact is limited because BIP35 mempool queries require bloom filter support, which is off by default
  • Ranking pass: Closes a concrete inbound capacity-accounting bypass; DoS-adjacent fixes grouped ahead of features.
Ready
  • Ready for review
  • The rework addressed previous feedback and CI is passing
0
  • No review verdicts recorded
Positive
  • Positive consensus with no standing objections after design rework
  • Suggested that peers with relay disabled should not receive mempool inventory (gmaxwell)
  • Verified SPV client compatibility and filterload message sequencing (schildbach)
  • Raised concerns on earlier inventory relay changes that led to regression tests and simplification (darosior)
3 + 23 tests
  • 3 lines added or modified outside tests
  • 23 lines added or modified in tests
  • 2 lines removed in total
  • 3 files, 2 commits
(+)#35321 ViniciusCestarii p2p: Misbehave on invalid compact block in optimistic reconstruction
  • Penalize peers that send malformed compact blocks during optimistic reconstruction
  • Ensures consistent DoS protection across all compact block processing paths
P3 · DoS protection
  • P3 because it enforces an omitted peer penalty to complete intended DoS protection
  • Operational impact is modest because it only triggers when several compact blocks are already in flight
Author silent
  • Code is mergeable and passes CI, but the author has been silent for over three months
0 (+2)
Strong
  • Strong consensus to penalize invalid compact blocks consistently across all paths
  • Support for consistency with standard validation and peer penalties (davidgumberg)
  • Approved after minor test and comment nits were resolved (w0xlt)
2 + 39 tests
  • 2 lines added or modified outside tests
  • 39 lines added or modified in tests
  • 1 lines removed in total
  • 2 files, 2 commits
(+)#36170 l0rinc net: require a dedicated bind for automatic Tor
  • Prevent incoming Tor connections from misclassifying as direct IP traffic or inheriting proxy permissions
  • Require nodes with custom bind setups to specify a dedicated onion bind instead of falling back to standard binds
P3 · bug fix
  • P3 because it prevents incoming Tor connections from accidentally inheriting localhost whitelist permissions
  • Affects only nodes running custom bind configurations and is reasonably deferrable
  • Ranking pass: Permission-inheritance hardening but limited to custom bind setups, so slightly below the broader bug fixes.
Ready
  • Ready to review
  • Open discussion on whether to disallow wildcard onion binds is a scoping choice, not rework
0
Positive
  • Supportive sentiment with minor open questions on scope and documentation
  • Concept approval while raising an edge case on wildcard onion binds (jeanpablojp)
  • Approach approval without objections (winterrdog)
19 + 19 tests
  • 19 lines added or modified outside tests
  • 19 lines added or modified in tests
  • 11 lines removed in total
  • 6 files, 4 commits
(+)#35696 jpk68 i2p: update leaseset encryption types
  • Adopt post-quantum hybrid encryption for nodes running I2P
  • Phase out legacy ElGamal encryption to improve cryptographic strength and privacy for I2P peers
P3 · new feature
  • P3 because post-quantum hybrid encryption improves privacy and standards adherence for I2P peers
  • The upgrade is non-urgent with no immediate security risk from delaying across upcoming releases
  • Ranking pass: Valuable I2P crypto upgrade with upstream backing, but no immediate risk from delay, so below correctness fixes.
Ready
  • Ready to review as a minimal change with compatibility questions resolved by upstream I2P developers
1
Strong
  • Strong support from upstream I2P developers to deploy post-quantum leasesets as-is (zzzi2p)
  • Objection over dropping older pre-26.1 nodes was withdrawn after verifying low impact (janb84)
  • Concept approval with follow-up release notes opened in another pull request (jonatack, kevkevinpal)
2
  • 2 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 2 lines removed in total
  • 1 files, 1 commits
(+)#32065 vasild i2p: make a time gap between creating transient sessions and using them
  • Prevent adversaries from linking I2P connection events through timing correlation
  • Improves privacy for I2P users running outbound-only connections with transient sessions
P3 · DoS protection
  • P3 because it provides meaningful privacy hardening against network-level metadata leakage on I2P
  • The benefit is narrow since it only affects nodes operating with transient sessions
  • Ranking pass: Privacy hardening limited to transient-session I2P users, placed with the other opt-in privacy/connectivity work.
Needs rebase
  • Needs rebase due to merge conflicts
  • Author has been inactive on the PR for several months
0Strong
  • Concept supported for privacy gains by upstream I2P developers (zzzi2p, eyedeekay)
  • Resource overhead concern resolved by shrinking standby cache to one session (zzzi2p, eyedeekay)
  • Reviewers are waiting on an author rebase to proceed (sedited)
92 + 2 tests
  • 92 lines added or modified outside tests
  • 2 lines added or modified in tests
  • 47 lines removed in total
  • 4 files, 3 commits
(+)#30951 stratospher net: option to disallow v1 connection on ipv4 and ipv6 peers
  • Let node operators disallow unencrypted v1 clearnet P2P connections
  • Prevents passive network observers from inspecting plaintext messages without needing Tor or I2P
P3 · new feature
  • P3 because it offers a strict guarantee against passive wiretapping for operators who need it
  • Deferrable because opportunistic v2 is already default and it does not protect against active adversaries
  • Ranking pass: Opt-in flag against passive observation only; ranked with other operator-facing options rather than near the bug fixes.
Needs rebase
  • Needs rebase due to merge conflicts
  • Awaiting author choice between forcing listen=0 and supporting v2 inbounds
0 -1Disputed
  • Broad concept support for an opt-in v2-only clearnet setting (mzumsande, sipa, dergoegge, laanwj, fjahr)
  • Strong objection to forcing listen=0 because it harms network listening capacity (gmaxwell, mzumsande)
  • Concept objection: creates false privacy expectations and partition risks (1440000bytes)
  • Postponed due to lack of consensus on coupling with listen=0 (sedited)
69 + 35 tests
  • 69 lines added or modified outside tests
  • 35 lines added or modified in tests
  • 4 lines removed in total
  • 9 files, 6 commits
(+)#33663 waketraindev net: Filter addrman during address selection via AddrPolicy to avoid underfill
  • Return full address responses to peers even when a node maintains many banned addresses
  • Prevent peers from inferring node ban list sizes through short address responses
P3 · bug fix
  • P3 because fixing address underfill prevents ban list leakage without affecting core network connectivity
  • The privacy and discovery improvement is minor and non-critical for routine operation
  • Ranking pass: Genuine ban-list leakage fix but the approach is still contested among four alternatives, and the effect is minor; grouped with lesser addrman work.
Author silent
  • Author inactive for over two months with open questions on test coverage
0 (+1)
Positive w/ caveats
  • Support for ensuring full address responses to hide ban list sizes (mzumsande, frankomosh)
  • Prefers simpler oversampling instead of adding a new selection callback (fjahr)
  • Suggested purging banned addresses directly instead of filtering during selection (ajtowns)
  • Suggests moving all selection criteria into the callback if this design is kept (sipa)
47 + 39 tests
  • 47 lines added or modified outside tests
  • 39 lines added or modified in tests
  • 18 lines removed in total
  • 6 files, 1 commits
(+)#35888 l0rinc net: reject oversized outbound messages
  • Prevent transport aborts and memory overwrites caused by oversized outbound messages
  • Validate message header lengths and payload sizes before queueing them to peers
P3 · bug fix
  • P3 because it hardens transport safety against memory corruption and aborts from internal bugs
  • Outbound message types and payloads are already bounded in normal operation so impact is defensive
  • Ranking pass: Defense-in-depth against internal caller bugs only, so ranked with hardening rather than with externally triggerable issues.
Ready
  • Ready for review
  • Clean CI with no merge conflicts and prior reviewer feedback addressed
0
Strong
  • Strong consensus on enforcing protocol limits before queueing outbound messages
  • Concept approval and co-authored commits shaping the design (ajtowns, mzumsande)
  • Concept approval with an open non-blocking nit on clamping message types (naiyoma)
18 + 69 tests
  • 18 lines added or modified outside tests
  • 69 lines added or modified in tests
  • 8 lines removed in total
  • 5 files, 4 commits
(+)#34486 willcl-ark net: Reduce local network activity when networkactive=0
  • Stop port mapping and Tor control connections when networkactive=0
  • Fulfills user expectations of full network inactivity and prevents unwanted local background traffic
P3 · bug fix
  • P3 because it stops unintended local network traffic while networking is marked inactive
  • Provides privacy and isolation guarantees expected by users
  • Marginal impact because it does not fix a consensus, remote DoS, or peer protocol bug
Needs rebase
  • Needs rebase due to merge conflicts with master
  • Awaiting author action on an edge-case patch and conflicts
0 (+1)
Strong
  • Broad concept and approach agreement across multiple reviewers
  • Verified NAT-PMP and Tor teardown in Docker (brunoerg)
  • Concept approval without stated reasons (sedited, fanquake, Jhackman2019)
  • Approach approval with an edge-case note on backoff during rapid toggles (winterrdog)
+222/-8
  • 12 files
  • 5 commits
(+)#36177 l0rinc net: fix startup failures from stale Tor examples
  • Prevent node startup failures caused by following outdated Tor proxy configuration examples
  • Ensure proxy argument error handling correctly guides users to valid network names
P3 · bug fix
  • P3 because it fixes node startup failures for users following official Tor guides
  • Benefit is localized to nodes configuring proxy settings with the old network name
  • Ranking pass: Startup failure for users following official docs is a real user-facing fix, so above configuration conveniences and observability.
Ready
  • Ready for review with passing tests and all reviewer suggestions addressed
0
Strong
  • Concept approval verified by testing proxy feature behavior (jeanpablojp)
  • All requested documentation clarifications and test additions were incorporated
19 + 24 tests
  • 19 lines added or modified outside tests
  • 24 lines added or modified in tests
  • 26 lines removed in total
  • 4 files, 4 commits
(+)#36267 fanquake [32.x] Backports for rc2
  • Backport fixes to the 32.x branch for the 32.0rc2 release candidate
  • Allow offline Windows signature validation in Guix and back off on dropped Tor control connections
P3 · bug fix
  • P3 because it ensures Tor control reconnections back off gracefully after dropped connections
  • Prevents tight reconnect loops when Tor is restarting or unreachable
  • Ranking pass: Delivers already-merged Tor-control backoff to the release branch; useful but adds no new fix, so mid-P3.
Ready
  • Ready to review now
  • Straightforward backport of two commits already merged to master with passing CI
0
  • No review verdicts recorded
Crickets
  • No reviews or comments yet on this newly opened backport PR
3,127 + 38 tests
  • 3,127 lines added or modified outside tests
  • 38 lines added or modified in tests
  • 35 lines removed in total
  • 4 files, 3 commits
(+)#35600 willcl-ark net: prevent duplication manual connections (take 2)
  • Prevent duplicate manual connections to the same target caused by concurrent connection attempts
  • Stops duplicate sockets when -connect and -addnode are configured for the same destination
P3 · bug fix
  • P3 because it fixes an edge-case race condition in manual connection management
  • Affects only nodes configuring overlapping manual targets and does not threaten normal operation
Ready
  • Ready to review now with clean code and no outstanding reviewer requests
0
Positive
  • Positive sentiment with no objections raised
  • Concept approval without stated reasons (sedited, w0xlt)
58 + 106 tests
  • 58 lines added or modified outside tests
  • 106 lines added or modified in tests
  • 5 lines removed in total
  • 4 files, 2 commits
(+)#36208 mzumsande addrman: apply time penalty in nTime check
  • Prevent duplicate address announcements from improperly boosting an entry's multiplicity in addrman
  • Ensure gossip from multiple peers correctly accounts for time penalties during duplicate checks
P3 · bug fix
  • P3 because it fixes an ineffective check against duplicate peer address announcements
  • Adversaries can still bypass it by changing timestamps on repeated announcements
Ready
  • Ready for review
  • Small patch with a targeted unit test and no blockers
0
  • No review verdicts recorded
Crickets
  • No reviews or feedback yet
2 + 13 tests
  • 2 lines added or modified outside tests
  • 13 lines added or modified in tests
  • 2 lines removed in total
  • 2 files, 1 commits
(+)#36014 w0xlt init: ignore repeated `-addnode` startup values
  • Prevent duplicate manual node entries from repeated startup options
  • Stops redundant DNS queries and repeated connection retries when nodes are unreachable
P3 · bug fix
  • P3 because redundant DNS queries and retries only occur with misconfigured duplicate inputs
  • Modest benefit from eliminating unnecessary network chatter for manual connections
  • Ranking pass: Placed next to #35600 since both address duplicate manual connections; benefit is limited to misconfigured setups.
Ready
  • Ready for review
  • Clean code, passing CI, and suggested changes have been addressed
1Strong
  • Strong support for deduplicating added node inputs
  • Approved after adding host-port equivalence handling (pablomartin4btc)
  • Concept approval recommending routing startup options through connection manager (danielabrozzoni)
21 + 38 tests
  • 21 lines added or modified outside tests
  • 38 lines added or modified in tests
  • 9 lines removed in total
  • 4 files, 2 commits
(+)#35027 8144225309 net: add -outboundbind option for outgoing source address
  • Allow node operators to choose which local IP address is used for outgoing clearnet P2P connections
  • Prevents multi-homed hosts from routing outbound traffic through unintended network interfaces
P3 · new feature
  • P3 because it adds clear configuration control for multi-homed node operators
  • Solves long-standing issue #6476 without affecting network security or liveness
Ready
  • Ready for review with passing CI, no conflicts, and prior feedback addressed
0
Strong
  • Consensus on dedicated option after dropping earlier plan to overload -bind (luke-jr, gmaxwell)
  • Approach approval following validation and parsing improvements (vasild)
  • Approach approval on the latest revision (winterrdog)
  • Concept approval without stated reasons (frankomosh)
168 + 391 tests
  • 168 lines added or modified outside tests
  • 391 lines added or modified in tests
  • 8 lines removed in total
  • 10 files, 3 commits
(+)#35940 w0xlt net: allow selecting BIP152 high-bandwidth peers with `-addnode`
  • Let node operators guarantee immediate compact block announcements over dedicated low-latency links
  • Allows manually specifying high-bandwidth peers outside the automatic three-peer limit
P3 · new feature
  • P3 because it helps operators with custom peering setups guarantee fast compact block relay
  • Provides an opt-in CLI configuration rather than resolving network-wide relay bottlenecks
  • Ranking pass: Opt-in operator convenience for dedicated peering links, grouped with the other configuration features.
Ready
  • Ready for review
  • Applies cleanly with passing CI and previous feedback addressed
0
Strong
  • Concept support for allowing explicit operator override of the three-peer cap (jeanpablojp)
  • No objections raised
81 + 108 tests
  • 81 lines added or modified outside tests
  • 108 lines added or modified in tests
  • 16 lines removed in total
  • 8 files, 4 commits
(+)#35113 optout21 net: introduce block tracker to retry to download blocks after failure
  • Automatically retry on-demand block downloads across available peers when a peer fails or disconnects
  • Relieves callers from manually tracking and retrying missing block fetch requests
P3 · new feature
  • P3 because it removes friction when fetching missing blocks and lays groundwork for pruned rescans
  • Deferrable since it does not affect standard initial block download or regular block relay
  • Ranking pass: On-demand block fetch retry is a niche convenience with open RPC design objections, so it sits with feature work.
Needs rebase
  • Has merge conflicts against master and needs a rebase
  • Author has been inactive after agreeing to address RPC design feedback
0
  • No review verdicts recorded
Disputed
  • Unaddressed objection: boolean parameters should be named rather than positional (luke-jr)
  • Author agreed to consider RPC parameter feedback but has not pushed updates
231 + 99 tests
  • 231 lines added or modified outside tests
  • 99 lines added or modified in tests
  • 10 lines removed in total
  • 8 files, 6 commits
(+)#34707 andrewtoth net: keep finished private broadcast txs in memory
  • Allow node operators and callers to confirm successful private broadcast roundtrips via RPC
  • Prevent private broadcast status from disappearing immediately once received back from peers
P3 · new feature
  • P3 because telemetry and status reporting benefits are limited to optional private broadcast
  • Operators and wallet software can verify roundtrip relay without relying on debug logs
  • It does not directly improve core network reliability or DoS resistance
  • Ranking pass: Leads the private-broadcast feature cluster but is superseded in part by #36277, which should be reviewed first.
Ready
  • Ready for review with passing CI and clean merge status
2 (+1) -1
Disputed
  • Concept objection: adds complexity and memory retention for a narrow set of users (instagibbs)
  • Warns that private broadcast should not expand into general rebroadcast logic (instagibbs)
  • Strong support because retaining roundtrip stats fixes missing RPC diagnostics (vasild)
  • Support because received peer info is useful for client applications (optout21)
100 + 175 tests
  • 100 lines added or modified outside tests
  • 175 lines added or modified in tests
  • 68 lines removed in total
  • 8 files, 4 commits
(+)#34322 andrewtoth node: Persist private broadcast transactions over node restarts
  • Prevent transactions submitted via private broadcast from vanishing when a node restarts before completion
P3 · new feature
  • P3 because prevents submitted private broadcast transactions from vanishing on restart
  • Relief is limited to clean node restarts during the brief broadcast window
  • May be superseded by a more comprehensive persistent broadcast pool
  • Ranking pass: Narrow window of benefit and may be replaced by a persistent broadcast pool, so below the private-broadcast correctness work.
Needs rebase
  • Needs rebase due to merge conflicts
  • Author marked PR as draft to rework the architecture in PR #34707
0
Strong
  • Strong concept support because preserving transactions outweighs disk storage concerns (vasild)
  • Concept approval noting this does not go far enough to handle unclean shutdowns (craigraw)
  • Concern that storing unencrypted broadcast data expands the node disk attack surface (tankyleo)
+377/-0
  • 14 files
  • 5 commits
(+)#34533 vasild wallet: resubmit transactions with private broadcast if enabled
  • Prevent periodic wallet rebroadcasts from leaking transactions over standard connections
  • Preserves origin privacy for users who explicitly enable private broadcast
P3 · new feature
  • P3 because it routes wallet traffic through existing private broadcast facilities
  • P2P wire protocols and core network relay mechanics are unchanged
  • Ranking pass: Wallet-side plumbing over existing private broadcast transport with unresolved package/CPFP objections; belongs with the feature cluster, not near the bug fixes.
Needs rebase
  • Needs rebase against master before code review is worthwhile
  • Author has been inactive for over four months
0 (+2)
Disputed
  • Concept supported to complete private broadcast coverage for wallet transactions (pablomartin4btc, w0xlt)
  • Unaddressed objection: dispatches can split dependent transactions and break CPFP rebroadcasts (achow101)
  • Suggested that package private broadcast could address the CPFP rebroadcast failures (andrewtoth)
+54/-11
  • 2 files
  • 2 commits
(+)#34457 w0xlt wallet: add private broadcast support for wallet transactions
  • Protect origin privacy for wallet transactions and periodic rebroadcasts
  • Route wallet RPC and GUI transactions over short-lived Tor or I2P connections instead of clearnet
P3 · new feature
  • P3 because it connects the wallet into existing Tor and I2P broadcast transport
  • The underlying P2P transport machinery was already established in earlier work
  • Ranking pass: Overlaps #34533 and depends on coordinating with it, so reviewed after that decision rather than mid-list.
Needs rebase
  • Needs rebase due to merge conflicts
  • Review #34533 first as author is waiting for its rebroadcast logic before updating
0
Strong
  • Broad concept support with no objections to wallet private broadcast
  • Concept approval for extending private broadcast to wallet transactions (andrewtoth, Bicaru20)
  • Agreed on simplifying rebroadcast model to follow #34533 (andrewtoth, w0xlt)
  • Suggested splitting Qt exception fix and test helpers into standalone PRs (rkrux)
+510/-45
  • 11 files
  • 5 commits
(+)#35724 davidgumberg cmpctblock: Improve logging of `cmpctblock` message reconstruction statistics [part of prefill series]
  • Give node operators and developers detailed logging on compact block reconstruction and prefill redundancy
  • Helps evaluate block relay efficiency and measure improvements to compact block prefilling
P3 · unblocks #35558
  • P3 because diagnostic tooling provides developer visibility without altering wire protocol behavior
  • Unblocks evaluating compact block relay performance and prefill experiments in #35558
Ready
  • Wait for author update addressing mempool lock feedback before reviewing
1
Mild
  • General support for compact block relay diagnostics with no concept objections
  • Approved after earlier logging level fixes were addressed (w0xlt)
  • Verified by testing on signet and suggested minor log format tweaks (0xB10C)
  • Concerned repeated mempool lock acquisition in loop should be batched (andrewtoth)
108 + 1 tests
  • 108 lines added or modified outside tests
  • 1 lines added or modified in tests
  • 14 lines removed in total
  • 4 files, 3 commits
(+)#29418 vasild rpc: provide per message stats for global traffic via new RPC 'getnetmsgstats'
  • Track cumulative network traffic by message and connection type for node operators and monitoring tools
  • Keep long-term traffic statistics from being lost whenever peers disconnect
P3 · new feature
  • P3 because tracking traffic across networks improves P2P observability for operators
  • Helps operators analyze monthly bandwidth distribution without altering relay or consensus behavior
  • Ranking pass: Observability feature for operators; above pure tracing/test work but below anything fixing behavior.
Needs rebase
  • Needs rebase due to merge conflicts with master
  • Author has been inactive since June 2026
0 (+1)Positive
  • Broad support for exposing global traffic metrics to node operators
  • Verified by testing with node monitoring dashboards (waketraindev)
  • Concept approval and implementation review (danielabrozzoni, epiccurious)
  • Resolved objection: dropped server-side aggregation options in response to feedback (stickies-v)
389 + 151 tests
  • 389 lines added or modified outside tests
  • 151 lines added or modified in tests
  • 14 lines removed in total
  • 9 files, 3 commits
(+)#35368 w0xlt tracing: add block header and compact block tracepoints
  • Expose compact block reconstruction and header arrival metrics via structured USDT tracepoints
  • Provide telemetry tools reliable real-time performance data without fragile debug log scraping
P3 · new feature
  • P3 because it improves compact block relay observability for research and monitoring tools
  • It does not alter P2P network behavior or fix security, DoS, or stability bugs
  • Ranking pass: Pure telemetry addition with no behavior change, so grouped with observability rather than mid-list.
Needs rebase
  • Needs rebase due to merge conflicts with master
  • Author has been inactive for several months and has not responded to rebase requests
0
Positive
  • General support for adding structured observability to compact block relaying
  • Concept approval because it replaces brittle debug log parsing in monitoring tools (0xB10C, m4ycon)
  • Questioned whether to pause USDT additions pending IPC tracing design (0xB10C, stickies-v)
99 + 270 tests
  • 99 lines added or modified outside tests
  • 270 lines added or modified in tests
  • 6 lines removed in total
  • 6 files, 2 commits
(+)#27052 LarryRuane test: rpc: add last block announcement time to getpeerinfo result
  • Give node operators visibility into which peers provide prompt block announcements
  • Add test coverage to protect outbound peer eviction logic from regressions
P3 · test coverage
  • P3 because it adds regression test coverage for peer announcement tracking in eviction logic
  • Modernizes internal time representation used during peer eviction
  • Ranking pass: Mostly test coverage plus a reporting field; grouped with the test cluster instead of with behavior fixes.
Ready
  • Ready for review with passing CI and all feedback resolved
2
Strong
  • Strong support with all concerns resolved
  • Verified by mutation testing and checking header announcement edge cases (naiyoma)
  • Verified by running test suites and checking RPC output (rkrux)
  • Concept approval favoring test coverage and peer observability (satsie, kristapsk)
34 + 112 tests
  • 34 lines added or modified outside tests
  • 112 lines added or modified in tests
  • 19 lines removed in total
  • 8 files, 5 commits
(+)#33954 mzumsande test: add functional test for outbound connection management
  • Make autonomous outbound peer connections straightforward to test in the functional framework
  • Help test writers cover peer discovery and connection logic without bespoke proxy hacks
P3 · test coverage
  • P3 because it exercises core peer-to-peer connection management logic without altering node behavior
  • Locks in regression test coverage for stale-tip connections and network diversification
  • Ranking pass: Test-framework capability with real long-term value, but no behavior change, so it heads the test cluster rather than sitting mid-list.
Author reworking
  • Wait because the author is currently reworking the branch to address feedback
  • CI is currently failing
0 (+2)
Strong
  • Strong concept and approach support across reviewers
  • Concept approval with constructive interface suggestions (vasild)
  • Verified by testing locally on Ubuntu (Bortlesboat)
+398/-102
  • 4 files
  • 3 commits
(+)#36262 ViniciusCestarii test: cover orphan reconsideration interruptibility
  • Ensure peer message processing cannot be stalled by unbounded orphan reconsiderations
  • Protects node operators against future regressions of a denial of service vulnerability
P3 · test coverage
  • P3 because it provides regression test coverage for a past peer-to-peer denial of service vulnerability
  • The bug is already fixed in production, making this test a preventive guardrail
Ready
  • Ready for review with a clean diff and passing CI
0
Positive
  • Uncontroversial addition with positive initial sentiment
  • Concept approval without stated reasons (instagibbs)
0 + 72 tests
  • 0 lines added or modified outside tests
  • 72 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#35292 winterrdog test: Add coverage for Tor control `HASHEDPASSWORD` authentication
  • Add test coverage for Tor control hashed password authentication
  • Catch regressions in Tor daemon communication and onion service setup
P3 · test coverage
  • P3 because it adds regression coverage for Tor control hashed password authentication
  • Improves onion service test coverage without fixing an active vulnerability or bug
  • Ranking pass: Adds regression coverage for a functional Tor-control path, so ranked with the other substantive test additions.
Needs rebase
  • Needs rebase due to merge conflicts with master
0
  • No review verdicts recorded
Neutral
  • Neutral sentiment with questions answered but no ACKs posted
  • Clarified what bad-password assertions validate separately (davidgumberg)
  • Requested rewriting description to remove formulaic style (sedited)
0 + 69 tests
  • 0 lines added or modified outside tests
  • 69 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#35624 beihaili test: cover addnode connection limit
  • Prevent regressions in manual outbound peer limits
  • Add explicit end-to-end test coverage for the addnode connection cap
P3 · test coverage
  • P3 because it verifies existing manual peer connection limits without fixing a bug
  • Provides regression protection for connection limits to partially address #28635
  • Ranking pass: Covers an open issue's connection-limit invariant; kept in P3 with the other functional tests.
Author silent
  • Author silent for 79 days with open reviewer questions
0
Positive
  • Concept approval but asked for PR description rewrite (sedited)
  • Unanswered question on why the PR remains in draft state (achow101)
0 + 77 tests
  • 0 lines added or modified outside tests
  • 77 lines added or modified in tests
  • 0 lines removed in total
  • 2 files, 1 commits
(+)#34565 w0xlt refactor: extract BlockDownloadManager from PeerManagerImpl
  • Separate block download logic from the net processing monolith so it can be tested and fuzzed in isolation
P3 · cleanup
  • P3 because it is an architectural refactor that does not fix bugs or change wire protocol behavior
  • Improves modularity and testability rather than removing concurrency bottlenecks
  • Ranking pass: Refactor with no stated bug or hazard retired and mild architectural skepticism; grouped with the other net_processing decompositions.
Needs rebase
  • Needs rebase due to merge conflicts across net processing and build files
0
Mild
  • Concept approval without stated reasons (sedited, 0xbrito)
  • Questions whether added indirection is worth it compared to #35561 (Crypt-iQ)
  • Doubts benefit of moving code when cs_main requirements remain unchanged (maflcko)
1,149 + 798 tests
  • 1,149 lines added or modified outside tests
  • 798 lines added or modified in tests
  • 586 lines removed in total
  • 10 files, 4 commits
(+)#35502 w0xlt refactor: extract per-message helpers from ProcessMessage (move-only)
  • Break up an oversized message processing routine to make the code easier to navigate.
  • Allow compile-time thread-safety checks to enforce only the specific locks needed for each message type.
P3 · cleanup
  • P3 because it improves internal maintainability and narrows compile-time lock requirements.
  • It carries no user-facing changes, protocol updates, or bug fixes.
  • Ranking pass: Move-only extraction placed next to its sibling #35522 so the two comparable refactors share a neighbourhood.
Ready
  • Ready for review, cleanly structured as pure move-only commits with passing CI.
0 (+3)Strong
  • Strong consensus among P2P contributors that helpers improve navigation and lock checks
  • Support for easier navigation and better git diff context (stickies-v, theStack, pablomartin4btc, maflcko)
  • Verified move-only correctness and thread-safety annotations (pseudoramdom, thomasbuilds)
  • Questioned whether helpers obscure control flow compared to a flat switch (davidgumberg)
1,012
  • 1,012 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 940 lines removed in total
  • 1 files, 9 commits
(+)#35522 pablomartin4btc refactor: Extract per-message helpers from SendMessages() (move-only)
  • Break up monolithic P2P message dispatching logic into discrete helpers
  • Make navigation, locking verification, and review easier for P2P developers
P3 · cleanup
  • P3 because it is a move-only refactoring that fixes no bugs and changes no protocol behavior
  • Breaking up the monolithic routine improves maintainability and eases future reviews
Needs rebase
  • Needs rebase due to merge conflicts with master
0
Strong
  • Strong support for the refactoring with no objections
  • Approach approval for consistency with existing patterns (w0xlt)
  • Concept approval because named helpers simplify reviewing and discussing logic (hodlinator)
661
  • 661 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 424 lines removed in total
  • 1 files, 17 commits
(+)#35561 Crypt-iQ net: move some CNodeState fields to Peer
  • Reduce lock contention on the main engine lock during peer download and block negotiation
  • Decouple peer state tracking from internal node validation locks
P3 · cleanup
  • P3 because it incrementally reduces main lock contention without resolving an active bottleneck or bug
  • Provides small leverage toward decoupling network processing from the main lock
Needs rebase
  • Needs rebase due to merge conflicts with master
1 (+1)
Strong
  • Strong support for reducing main lock scope for peer state tracking (davidgumberg, mzumsande)
  • Confirmed the atomic implementation is safe and matches existing patterns (dergoegge, mzumsande)
  • Code approval on the latest head commit (w0xlt)
40 + 2 tests
  • 40 lines added or modified outside tests
  • 2 lines added or modified in tests
  • 42 lines removed in total
  • 4 files, 3 commits
(+)#35040 theuni Remove CNode dependency for local address functions and introduce LocalAddressManager
  • Untangle local address discovery and self-advertisement logic from networking globals
  • Improves unit testability and fuzzing while supporting the net and net_processing separation
P3 · cleanup
  • P3 because it carries no user-visible behavior change or bug fix
  • Improves testability and scoping for P2P networking code
  • Unblocks the broader separation of net and net_processing
Needs rebase, CI failing
  • Needs rebase, CI is failing, and author set to draft to address header circular dependencies
  • Author has been silent for over five months
0
  • No review verdicts recorded
Crickets
  • No reviews on the overall concept or implementation yet
  • Suggested placing new files under src/node/ (maflcko)
  • Converted to draft to investigate circular dependencies (theuni)
346 + 75 tests
  • 346 lines added or modified outside tests
  • 75 lines added or modified in tests
  • 406 lines removed in total
  • 23 files, 23 commits
(+)#35315 maflcko refactor: Use NodeClock::time_point in more places
  • Unify time handling across P2P code to eliminate confusion from mixing raw integers and time points
  • Remove deprecated time helpers to make timing mistakes harder in net processing
P3 · cleanup
  • P3 because it is an internal cleanup that improves type safety and removes deprecated time helpers in P2P
  • Provides minor tie-breaking precision improvements when evaluating peer eviction candidates
  • Ranking pass: Type-safety cleanup with no behavioral payoff; belongs with the refactor cluster rather than above feature work.
Needs rebase
  • Needs rebase due to merge conflicts with master
  • Author has been silent for nearly two months with recent nits unaddressed
3 (+2)
Positive w/ caveats
  • Broad support for type safety improvements across time handling
  • Approves the code while noting expanding epoch sentinel usage is suboptimal (ryanofsky)
  • Withdrew nonblocking preference for std::optional given overall improvements (stickies-v)
  • Verified by testing with minor nits (jeanpablojp)
  • Concept approval without stated reasons (w0xlt)
148 + 35 tests
  • 148 lines added or modified outside tests
  • 35 lines added or modified in tests
  • 181 lines removed in total
  • 24 files, 10 commits
(+)#34717 naiyoma p2p: remove m_getaddr_sent
  • Clean up peer address tracking so outbound peers' initial self-announcements can be relayed
  • Remove misleading relay-suppression state without weakening existing limits on large address messages
P3 · cleanup
  • P3 because it cleans up broken internal state logic that was already rendered ineffective
  • The change is a minor peer-to-peer cleanup with low impact on overall network relay
Author silent 71 days
  • Stale because the author has been silent for 71 days with open design questions
2 (+2) -1
Disputed
  • Support because existing size checks already guard address relay and the flag is ineffective (danielabrozzoni, w0xlt)
  • Concept objection: removing the flag lets peers abuse token allocations for unsolicited addrs (taki-abedesselam)
  • Open privacy questions about topology leakage and relaying self-announcements (ajtowns, Crypt-iQ)
1
  • 1 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 13 lines removed in total
  • 2 files, 2 commits
(+)#30988 vasild Split CConnman
  • Separate low-level socket handling from Bitcoin network protocol logic
  • Make networking code more modular and easier for maintainers to maintain
P3 · cleanup
  • P3 because it is an internal refactoring without direct user-facing benefit
  • Improves peer lookup efficiency to constant time while modularizing network code
  • Does not unblock external consumers like HTTP or Stratum v2 as originally envisioned
  • Ranking pass: Kept P3 on the modularity problem, but the originally cited consumers declined, leaving the weakest payoff of the refactors.
Needs rebase
  • Review is blocked by merge conflicts with master
  • Author has been inactive for over six months while in the middle of reworking the API
1 (+1) -1
Disputed
  • Contested architectural split with multiple Concept ACKs alongside an unresolved blocking objection
  • Blocking objection: abstraction is at the wrong level and unsuitable for other protocols (theuni)
  • Concept approval for separating low-level socket details from protocol logic (ryanofsky)
  • Concept approval for the modularity improvements (Sjors, pinheadmz, tdb3, jonatack, rkrux)
1,380 + 50 tests
  • 1,380 lines added or modified outside tests
  • 50 lines added or modified in tests
  • 751 lines removed in total
  • 20 files, 17 commits
(+)#34729 ajtowns Reduce log noise
  • Prevent misleading high-severity errors and log spam during routine network and proxy connection failures
P4 · cleanup
  • P4 because it reduces log noise on connection failures but does not affect protocol logic or DoS resistance
  • The impact is limited to cleaner logs for node operators
Ready
  • Ready to review
0 (+4)Positive w/ caveats
  • General support for reducing log noise and adding the helper (sedited, l0rinc)
  • Nonblocking objection: demoting error levels makes diagnosing failures harder (ryanofsky)
61 + 24 tests
  • 61 lines added or modified outside tests
  • 24 lines added or modified in tests
  • 54 lines removed in total
  • 13 files, 7 commits
(+)#36249 fjahr net, rpc: Asmap version improvements/follow-ups
  • Let node operators and tooling inspect the active ASMap hash via RPC to verify it against attestations
  • Avoid forcing operators to parse debug logs to confirm which ASMap version is loaded
P4 · cleanup
  • P4 because the change only adds internal caching of the ASMap version hash
  • Does not alter network behavior or peer bucketing logic
  • Ranking pass: Most user-visible of the marginal items (operators can verify the active asmap hash via RPC), so it leads P4.
Ready
  • Ready to review
  • Small PR with passing CI and author addressed review feedback
1 (+1)
Strong
  • Strong support across all reviewers
  • Verified by testing (jurraca)
  • Approved after author implemented suggested hash caching (sedited)
35 + 18 tests
  • 35 lines added or modified outside tests
  • 18 lines added or modified in tests
  • 23 lines removed in total
  • 6 files, 6 commits
(+)#35820 l0rinc refactor: keep duration calculations typed
  • Prevent accidental time unit confusion across subsystems by using explicit typed durations
  • Clarify duration calculations where units were previously implicit in comments or parameter names
P4 · cleanup
  • P4 because it is an internal cleanup of duration arithmetic in peer processing
  • Does not change relay behavior, network protocols, or DoS resistance
Needs rebase
  • Needs rebase due to merge conflicts, with author inactive for a month
0
Positive
  • Concept approval for improved readability (janb84)
  • Skeptical that the change adds genuine type safety or clarity (stickies-v)
  • Objected to guideline violations and noisy conversions, which the author addressed (maflcko)
75 + 32 tests
  • 75 lines added or modified outside tests
  • 32 lines added or modified in tests
  • 97 lines removed in total
  • 26 files, 13 commits
(+)#33854 Eunovo fix assumevalid is ignored during reindex
  • Prevent fallback to slow full script verification when reindexing after an interrupted initial sync
  • Ensure assumevalid applies even if the previous sync stopped before reaching minimum chainwork
P4 · speedup
  • P4 because headers sync during block loading is only an auxiliary hook for validation reindex logic
  • Does not resolve an independent P2P networking issue or performance bottleneck
Needs rebase
  • Needs rebase due to merge conflicts with the main branch
0
Disputed
  • Concept approval verified with a reproducer (l0rinc)
  • Thinks added complexity is not worth the benefit for a rare salvage scenario (sedited)
  • Concerned about breaking offline reindexing and potential peer disconnects (sedited, mzumsande)
177 + 108 tests
  • 177 lines added or modified outside tests
  • 108 lines added or modified in tests
  • 96 lines removed in total
  • 11 files, 8 commits
(+)#36152 brunoerg test: cover the feature-negotiation version boundary in p2p_leak
  • Prevent regressions in P2P feature negotiation at the version boundary
  • Ensure peers connecting at version 70016 receive expected negotiation messages
P4 · test coverage
  • P4 because it only adds boundary test coverage for long-established protocol version checks
  • Prevents off-by-one comparison regressions surfaced by mutation testing
Ready
  • Ready to review
1
Positive
  • Concept approval with suggestion to extend coverage to SENDTXRCNCL (naiyoma)
  • Verified by testing on macOS (Marisha-Sahay)
0 + 26 tests
  • 0 lines added or modified outside tests
  • 26 lines added or modified in tests
  • 1 lines removed in total
  • 2 files, 2 commits
(+)#36279 naiyoma test: non-inbound version message promotes address to tried table
  • Prevent regressions that could allow inbound peers to promote their addresses into the tried table
  • Ensure only non-inbound peers get promoted upon receiving a VERSION message
P4 · test coverage
  • P4 after comparing with the other PRs here (assessed alone as P3): Lowered to P4 for consistency with #36152 and #36229: a single mutation-killing unit test over already-correct behavior, no bug fixed.
  • P3 because it locks down an eclipse-mitigation invariant for peer address management
  • Kills an untested mutation in network message processing without fixing an active bug
Ready
  • Ready for review
  • Clean diff with passing CI and no blocking dependencies
0
  • No review verdicts recorded
Crickets
  • No reviewer feedback yet
0 + 63 tests
  • 0 lines added or modified outside tests
  • 63 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#36229 mertsaner test: Cover AddrMan add edge cases
  • Cover address manager addition edge cases with unit tests
  • Ensures subtle peer-address handling behaviors remain intact during refactoring
P4 · test coverage
  • P4 because it tests existing address manager behavior without fixing a bug or regression
  • Provides marginal impact since it does not expand measured test coverage metrics
Ready
  • Ready to review
  • Small unit test patch with no blockers
0
  • No review verdicts recorded
Crickets
  • No substantive reviews or concept approvals yet
  • Questions whether the tests add coverage or address practical mutations (brunoerg)
0 + 164 tests
  • 0 lines added or modified outside tests
  • 164 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#35229 optout21 refactor: Use CBlockIndex parameters as reference
  • Prevent accidental null dereferences by enforcing non-null invariants at compile time
  • Protects developers from runtime null errors across chain and index logic
P4 · cleanup
  • Converting pointer arguments in PeerManagerImpl to references is a minor internal refactor that does not modify peer relay or network behavior.
Author silent
  • Author has been silent for 113 days, exceeding the stale author threshold
  • Reviewing now may be unproductive until the author returns to address feedback
0
Strong
  • Concept approved with broad agreement and no objections raised
  • Support for compile-time safety and clearer non-null guarantees (musaHaruna)
  • Concept approval without stated reasons (stickies-v, w0xlt)
  • Suggested using reference wrappers for internal chain storage (maflcko)
71 + 7 tests
  • 71 lines added or modified outside tests
  • 7 lines added or modified in tests
  • 68 lines removed in total
  • 12 files, 7 commits
(+)#34271 vasild net_processing: make m_tx_for_private_broadcast optional
  • Avoid holding idle private broadcast state when the feature is disabled
P4 · cleanup
  • P4 because it is a minor internal cleanup with no user-facing impact or performance gains
  • Memory usage is not reduced and it adds defensive branches for unreachable states
Needs rebase
  • Needs rebase and has merge conflicts
  • Author has been inactive for over 60 days
0 (+1)
Mild
  • Concept and approach support, but questioned if worth the visual clutter (vasild)
  • Does not reduce memory footprint without pointer indirection (l0rinc)
  • Future private broadcast plans may make opt-in handling obsolete (mzumsande)
  • Moved to draft pending direction on private broadcast (fanquake)
+91/-40
  • 2 files
  • 1 commits
Reviewability: ReadyStalePaused
Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets
Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs.
Size: lines added or modified outside tests, then in tests; greener = smaller.
Ranking pass (2026-09-17): all PRs here were compared with each other; 44 notes on review order, overlaps, and band changes.

Covers

Everything between this node and other nodes: connection management and peer selection, address management, the message protocol and its transport (including the encrypted v2 transport), block and transaction relay including compact blocks, headers sync, transaction request and orphan handling, network-level DoS protections, and the Tor, I2P, and CJDNS integrations. The P2P and Private Broadcast labels are a strong prior.

Not p2p: what the node does with a block or transaction once received (validation, mempool); RPCs that merely report peer state (rpc).

What matters here

Resistance to attack first: eclipse and partition resistance, DoS resistance in message handling and resource accounting, and privacy of transaction origin. Then relay correctness and liveness: blocks and transactions propagate reliably and quickly, and nothing gets stuck. Then interoperability with the rest of the network and with new protocol features (BIPs) that other software depends on. Then bandwidth and resource use, which node operators feel. Then connectivity across network types and platforms.

Protocol changes with a specification and other implementations waiting rank higher than local optimizations. Refactors count when they retire a known hazard in message handling.

generated 2026-09-17 21:55 UTC