<p>Since you using wallets on the cell phone, I presume you are running a SPV node. SPV nodes verify transactions using a slightly different method that relies on peers to provide partial views of relevant parts of the blockchain on demand. In order to ensure that the transaction that you have sent has been confirmed in a block, your SPV nodes will use bloom filters and send that to the full nodes connected to it. Those full nodes will then test each transaction’s outputs against the bloom filter. Only transactions that match the filter are sent to the node.</p>

<p>In response to a <code>getdata</code> message from the node, peers will send a merkleblock message that contains only block headers for blocks matching the filter, a merkle path for each matching transaction and then also send tx messages containing the transactions matched by the filter.</p>

<p>It is this transaction that is sent again to the node is what you are seeing in the packet traffic.</p>

CC BY-SA 4.0
2019-06-10T12:53:00.323Z
Thank you, I understand somewhat, although I'm a little confused because of some terms like **SPV node** and **bloom filter**.
Saeed
CC BY-SA 4.0
2019-06-10T16:11:19.477Z
@Saeed In simple words its basically your node asking the data back to ensure that transaction is included in the blockchain. For more info, read answers on this forum related to SPV Node and Bloom filters (I did not want to repeat that in my answer) or read this section from Andreas' Mastering bitcoin book. https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch08.asciidoc#simplified-payment-verification-spv-nodes
Ugam Kamat
CC BY-SA 4.0
2019-06-10T12:16:30.450Z
2019-06-10T12:16:30.450Z
Ugam Kamat
<p>Sometime back, I created two wallets on two distinct cellphones. I sent a specific bitcoin value (A bitcoin) from one cellphone to another one. During this process, I captured the entire traffic.</p>

<p>After that, I extracted all tx values and output addresses. I saw same value (A bitcoin) and its output address (Address B) in the output which was sent from Source IP address (my cellphone) to destination IP address. Also this value and address was sent to some other IPs.</p>

<p>I also saw that this value (A bitcoin) and its output address (address B) is in some tx messages which is sent from another IP address to my IP address (my cellphone). In another words, I see that the specific value and its address return to my address again. It should be noted that this is a spent value and is not an UTXO. Why does my Bitcoin transaction value and its address in some tx messages gets returned back to me?</p>

<transactions><spv>
Why a specific bitcoin value of a tx message appears in source IP address and then comes to same IP address as the destination address?
Saeed
# Why a specific bitcoin value of a tx message appears in source IP address and then comes to same IP address as the destination address?

(Asked by: username_0 on 2019-06-10)

Sometime back, I created two wallets on two distinct cellphones. I sent a specific bitcoin value (A bitcoin) from one cellphone to another one. During this process, I captured the entire traffic.

After that, I extracted all tx values and output addresses. I saw same value (A bitcoin) and its output address (Address B) in the output which was sent from Source IP address (my cellphone) to destination IP address. Also this value and address was sent to some other IPs.

I also saw that this value (A bitcoin) and its output address (address B) is in some tx messages which is sent from another IP address to my IP address (my cellphone). In another words, I see that the specific value and its address return to my address again. It should be noted that this is a spent value and is not an UTXO. Why does my Bitcoin transaction value and its address in some tx messages gets returned back to me?

**Tags:** transactions, spv


---

## 1 answers

### Answer by username_1 on 2019-06-10. Score: 1

Since you using wallets on the cell phone, I presume you are running a SPV node. SPV nodes verify transactions using a slightly different method that relies on peers to provide partial views of relevant parts of the blockchain on demand. In order to ensure that the transaction that you have sent has been confirmed in a block, your SPV nodes will use bloom filters and send that to the full nodes connected to it. Those full nodes will then test each transaction’s outputs against the bloom filter. Only transactions that match the filter are sent to the node.

In response to a `getdata` message from the node, peers will send a merkleblock message that contains only block headers for blocks matching the filter, a merkle path for each matching transaction and then also send tx messages containing the transactions matched by the filter.

It is this transaction that is sent again to the node is what you are seeing in the packet traffic.

> **Comments:**
> **username_0**: Thank you, I understand somewhat, although I'm a little confused because of some terms like **SPV node** and **bloom filter**.  
> **username_1**: @username_0 In simple words its basically your node asking the data back to ensure that transaction is included in the blockchain. For more info, read answers on this forum related to SPV Node and Bloom filters (I did not want to repeat that in my answer) or read this section from Andreas' Mastering bitcoin book. https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch08.asciidoc#simplified-payment-verification-spv-nodes  

---

