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?

1 Answer 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.

  • Thank you, I understand somewhat, although I'm a little confused because of some terms like SPV node and bloom filter.
    – Saeed
    Jun 10, 2019 at 12:53
  • @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. github.com/bitcoinbook/bitcoinbook/blob/develop/…
    – Ugam Kamat
    Jun 10, 2019 at 16:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.