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

net_processing: stop private broadcast of a transaction after round-trip

Public commit record

What the developer wrote

Authored by Vasil Dimov

73/100 · Adequate
net_processing: stop private broadcast of a transaction after round-trip

Remove the transaction from the list of transactions to broadcast after
we receive it from the network.

Only remove the transaction if it is the same as the one we sent: has
the same wtxid (and it follows the same txid). Don't remove transactions
that have the same txid and different wtxid. Such transactions show that
some of the private broadcast recipients malleated the witness and the
transaction made it back to us. The witness could be either:
* invalid, in which case the transaction will not be accepted in
anybody's pool; or
* valid, in which case either the original or the malleated transaction
will make it to nodes' mempools and eventually be mined. Our response
is to keep broadcasting the original. If the malleated transaction
wins then we will eventually stop broadcasting the original when it
gets stale and gets removed from the "to broadcast" storage cause it
is not acceptable in our mempool.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
The short version

What changed, and why it matters

This Bitcoin Core change improves how the node stops privately re-broadcasting a transaction once it sees that same transaction come back from the network. It is a hardening/efficiency fix for the new private transaction broadcast feature, not a fix for a known remote exploit. The patch makes the node stop its private re-broadcast attempts when the exact transaction it sent is seen again, while still continuing to broadcast the original if a peer returns a malleated (altered-witness) version.

Recommended action

Treat as a routine hardening/improvement commit. No emergency action required. Reviewers may want to confirm that Remove() is only triggered for the exact wtxid match and that the priority/num_confirmed value returned is used correctly to cancel pending outbound connections.

Security signals we found

01

Reduces network-side metadata leakage from private transaction broadcast

02

Prevents unnecessary repeated private broadcast attempts after transaction propagation is confirmed

03

Handles witness malleation correctly by not removing original tx when a malleated version is seen

04

Adds defensive state management to new private-broadcast subsystem

Risk score

Why this scored 36/100

Our methodology →
Potential impact 8/30
Exploitability 5/25
Stealth signal 6/15
Affected reach 7/15
Confidence 7/10
Evidence quality 3/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.