<p>The whitepaper is only a high-level overview of Bitcoin, basically a marketing document. You may be interested in this <a href="https://gist.github.com/harding/dabea3d83c695e6b937bf090eddf2bb3" rel="nofollow noreferrer">errata</a> and associated comments for the whitepaper created by David Harding.</p>
<p>Every node will verify the signatures on a transaction when it first receives it. If the transaction is deemed valid and passes <code>is_standard</code> policies, the node will then add the transaction to its mempool and relay it to the node's peers. The node will cache the result of the transaction verification for some time, to be able to skip repeating this check if the transaction is included in a block soon after.</p>
<p>A node will only rebroadcast a transaction once to all of its peers. However, the receivers and senders of transactions may rebroadcast transactions more often given their personal investment in the transaction's success if it doesn't confirm promptly.</p>

CC BY-SA 4.0
2022-03-17T20:27:22.150Z
The receiver's wallet may also rebroadcast regularly.
Pieter Wuille
CC BY-SA 4.0
2022-03-17T22:00:22.573Z
Thanks for the very instructive answer! A few follow-ups. 1. So how does a transaction enter the network? Is it broadcast by something other than a node at first? 2. You wrote a node rebroadcasts once - I'm assuming this refers to verified transactions. What about signed-but-unverified transactions? 3. How does a node know when to use the single rebroadcast?
user516728
CC BY-SA 4.0
2022-03-17T22:36:41.470Z
A wallet creates the transaction and submits it to at least one Bitcoin Node. Bitcoin Core nodes track all the _Unspent Transaction Outputs_, i.e. all pieces of bitcoin that are available for spending, so each node can unilaterally assess whether a transaction could currently be included in the blockchain. That's the check that each node performs on unconfirmed transactions when it receives them. Then the node will forward the unconfirmed transaction __once to each of its peers__, right after receiving it and deeming it valid.
Murch
CC BY-SA 4.0
2022-03-17T22:38:55.320Z
I don't know what you mean with "verified" and "signed-but-unverified" transactions. Bitcoin nodes will simply discard any transactions they assess to be invalid, and only forward valid transactions. When a transaction is included in the blockchain it's confirmed, which means it's probabilistically final and gets "more final" the more blocks get found (i.e. unchangeable unless the chaintip gets reorganized which happens seldom, and less likely the more other blocks have followed).
Murch
CC BY-SA 4.0
2022-03-17T22:45:39.577Z
Anyway, since each node forwards each of the unconfirmed transactions it sees to all of its peers, (or rather, offers to forward them via an inventory announcement), the transactions get gossiped through the network and generally every other online node should hear about them within a minute or so. Nodes that aren't online don't get them until they're included in a block, since everyone gets every block when they synchronize with the network to catch up to the chaintip. You may also find this post interesting: https://bitcoin.stackexchange.com/q/12427/5406
Murch
CC BY-SA 4.0
2022-03-17T22:46:52.323Z
Huge thanks for your patience and detailed replies!
user516728
CC BY-SA 4.0
2022-03-17T22:50:08.850Z
I guess the confusion was probably in the terminology of "invalid/valid" and unconfirmed/confirmed. An invalid transaction would for example be one that spends money which doesn't exist or has an invalid signature. A valid transaction would be one that a node thinks could be included in the blockchain as is. Unconfirmed or confirmed on the other hand means whether or not a transaction has been included in the blockchain.
Murch
CC BY-SA 4.0
2022-03-18T00:15:52.727Z
@Murch maybe soon I'll have the reputation to upvote :)
user516728
CC BY-SA 4.0
2022-03-17T18:08:20.487Z
2022-03-17T20:28:55.643Z
2022-03-17T20:28:55.643Z
Murch
<p>Suppose a node begins broadcasting a signed transaction.</p>
<p><strong>Question 1.</strong> At what stage is the signature verified? In §5 of the whitepaper, verification only appears during block acceptance <em>after mining</em>. Isn't it more sensible for a node to verify the signature on any transaction it tentatively places in a block?</p>
<p><strong>Question 2.</strong> For how long does a node broadcast a transaction? How does it know when to stop broadcasting a transaction, either because it was accepted, or because it is invalid?</p>

<transactions><full-node><nodes><transaction-verification><broadcast>
How and when do nodes stop broadcasting a transaction?
user516728
# How and when do nodes stop broadcasting a transaction?

(Asked by: username_0 on 2022-03-17)

Suppose a node begins broadcasting a signed transaction.

**Question 1.** At what stage is the signature verified? In §5 of the whitepaper, verification only appears during block acceptance *after mining*. Isn't it more sensible for a node to verify the signature on any transaction it tentatively places in a block?

**Question 2.** For how long does a node broadcast a transaction? How does it know when to stop broadcasting a transaction, either because it was accepted, or because it is invalid?

**Tags:** transactions, full-node, nodes, transaction-verification, broadcast


---

## 1 answers

### Answer by username_1 on 2022-03-17. Score: 3 | Accepted answer

The whitepaper is only a high-level overview of Bitcoin, basically a marketing document. You may be interested in this [errata](https://gist.github.com/harding/dabea3d83c695e6b937bf090eddf2bb3) and associated comments for the whitepaper created by David Harding.

Every node will verify the signatures on a transaction when it first receives it. If the transaction is deemed valid and passes `is_standard` policies, the node will then add the transaction to its mempool and relay it to the node's peers. The node will cache the result of the transaction verification for some time, to be able to skip repeating this check if the transaction is included in a block soon after.

A node will only rebroadcast a transaction once to all of its peers. However, the receivers and senders of transactions may rebroadcast transactions more often given their personal investment in the transaction's success if it doesn't confirm promptly.

> **Comments:**
> **username_2**: The receiver's wallet may also rebroadcast regularly.  
> **username_0**: Thanks for the very instructive answer! A few follow-ups. 1. So how does a transaction enter the network? Is it broadcast by something other than a node at first? 2. You wrote a node rebroadcasts once - I'm assuming this refers to verified transactions. What about signed-but-unverified transactions? 3. How does a node know when to use the single rebroadcast?  
> **username_1**: A wallet creates the transaction and submits it to at least one Bitcoin Node. Bitcoin Core nodes track all the _Unspent Transaction Outputs_, i.e. all pieces of bitcoin that are available for spending, so each node can unilaterally assess whether a transaction could currently be included in the blockchain. That's the check that each node performs on unconfirmed transactions when it receives them. Then the node will forward the unconfirmed transaction __once to each of its peers__, right after receiving it and deeming it valid.  
> **username_1**: I don't know what you mean with "verified" and "signed-but-unverified" transactions. Bitcoin nodes will simply discard any transactions they assess to be invalid, and only forward valid transactions. When a transaction is included in the blockchain it's confirmed, which means it's probabilistically final and gets "more final" the more blocks get found (i.e. unchangeable unless the chaintip gets reorganized which happens seldom, and less likely the more other blocks have followed).  
> **username_1**: Anyway, since each node forwards each of the unconfirmed transactions it sees to all of its peers, (or rather, offers to forward them via an inventory announcement), the transactions get gossiped through the network and generally every other online node should hear about them within a minute or so. Nodes that aren't online don't get them until they're included in a block, since everyone gets every block when they synchronize with the network to catch up to the chaintip. You may also find this post interesting: https://bitcoin.stackexchange.com/q/12427/5406  
> **username_0**: Huge thanks for your patience and detailed replies!  
> **username_1**: I guess the confusion was probably in the terminology of "invalid/valid" and unconfirmed/confirmed. An invalid transaction would for example be one that spends money which doesn't exist or has an invalid signature. A valid transaction would be one that a node thinks could be included in the blockchain as is. Unconfirmed or confirmed on the other hand means whether or not a transaction has been included in the blockchain.  
> **username_0**: @username_1 maybe soon I'll have the reputation to upvote :)  

---

