AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Low 42 Bitcoin

net_processing: handle ConnectionType::PRIVATE_BROADCAST connections

Public commit record

What the developer wrote

Authored by Vasil Dimov

73/100 · Adequate
net_processing: handle ConnectionType::PRIVATE_BROADCAST connections

For connections of type `ConnectionType::PRIVATE_BROADCAST`:
* After receiving VERACK, send a transaction from the list of
transactions for private broadcast and disconnect
* Don't process any messages after VERACK (modulo `GETDATA` and `PONG`)
* Don't send any messages other than the minimum required for the
transaction send - `INV`, `TX`, `PING`.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
The short version

What changed, and why it matters

This commit adds a new 'private broadcast' feature in Bitcoin Core that lets users send transactions through short-lived, disguised peer connections to reduce the risk that someone watching the network can figure out which IP address originated a transaction. The patch also fixes a related privacy leak: without the change, a malicious peer could have tricked the node into revealing its real network address during one of these private broadcasts. The commit is defensive and improves privacy, but it is a new and complex network feature, so it deserves careful review.

Recommended action

Review the new state machine for protocol edge cases: ensure that private-broadcast peers cannot stall the connection indefinitely, confirm that the fake VERSION does not leak elsewhere (e.g., in time or addr fields), verify that the allowlists cannot be bypassed by message variants, and audit PrivateBroadcast for race conditions or incorrect prioritization. Consider fuzzing the restricted message flow.

Security signals we found

01

New network connection type with restricted protocol state machine

02

Forged VERSION metadata (user agent, services, height) to obscure node identity

03

Privacy fix: nonce-check bypass prevents attacker from learning clearnet address

04

Privacy fix: addrman.Connected() skipped for private broadcast peers

05

Outbound message allowlist enforced in CConnman::PushMessage

06

Inbound message allowlist enforced in ProcessMessage

07

3-minute hard connection lifetime limit

08

Transaction send state tracked per node with confirmation via PONG

Risk score

Why this scored 42/100

Our methodology →
Potential impact 8/30
Exploitability 6/25
Stealth signal 10/15
Affected reach 7/15
Confidence 7/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.