<blockquote>
  <p>Is this the way things actually happen?</p>
</blockquote>

<p>Yes</p>

<blockquote>
  <p>If yes, then my question is then why can't the full node simply do the following: (1) send its UTXO set to the SPV client; (2) SPV client then filters the UTXOs of its interest and put those UTXOs in its own UTXO set. </p>
</blockquote>

<p>The UTXO set is large and a proof for every UTXO would be required. Proofs for every UTXO would be expensive to build and an extremely large amount of unnecessary data would be sent over the wire thus consuming network bandwidth that could be better used elsewhere.</p>

CC BY-SA 4.0
2018-11-20T15:18:58.523Z
2018-11-20T15:18:58.523Z
Ava Chow
<p>Suppose an SPV client goes offline at block X (meaning it has block headers until block X) and then comes back online when the blockchain is at block Y. At that point, it needs to resynchronise its UTXO set. So, it does the following: (1) get the block headers of blocks X to Y; (2) construct a bloom filter for its addresses and request a full node to send all the transactions matching this bloom filter from block X to Y; (3) the full node does so and if a match is found, sends the transaction data along with a merkle proof to the SPV client; (4) SPV client verifies the proof and if it's correct updates its UTXO set accordingly. </p>

<p>Is this the way things actually happen?</p>

<p>If yes, then my question is then why can't the full node simply do the following: (1) send its UTXO set to the SPV client; (2) SPV client then filters the UTXOs of its interest and put those UTXOs in its own UTXO set. </p>

<p>Is this method not followed because it doesn't involve any verification from SPV client and this the full node can give the SPV client a totally wrong UTXO set?</p>

CC BY-SA 4.0
2018-11-17T15:07:13.323Z
Welcome to Bitcoin.stackexchange. In general, it is best to ask one question at a time. The more questions you ask at the same time, the less likely anyone is to attempt to answer it. I could answer parts of this but I won't because I an unsure about other parts and I don't want to write a partial answer. See the [help] and [how do I ask a good question](https://bitcoin.stackexchange.com/help/how-to-ask)
RedGrittyBrick
<wallet><spv>
SPV clients and full nodes
archita
# SPV clients and full nodes

(Asked by: username_0 on 2018-11-16)

Suppose an SPV client goes offline at block X (meaning it has block headers until block X) and then comes back online when the blockchain is at block Y. At that point, it needs to resynchronise its UTXO set. So, it does the following: (1) get the block headers of blocks X to Y; (2) construct a bloom filter for its addresses and request a full node to send all the transactions matching this bloom filter from block X to Y; (3) the full node does so and if a match is found, sends the transaction data along with a merkle proof to the SPV client; (4) SPV client verifies the proof and if it's correct updates its UTXO set accordingly.

Is this the way things actually happen?

If yes, then my question is then why can't the full node simply do the following: (1) send its UTXO set to the SPV client; (2) SPV client then filters the UTXOs of its interest and put those UTXOs in its own UTXO set.

Is this method not followed because it doesn't involve any verification from SPV client and this the full node can give the SPV client a totally wrong UTXO set?

**Tags:** wallet, spv

> **Comments:**
> **username_1**: Welcome to Bitcoin.stackexchange. In general, it is best to ask one question at a time. The more questions you ask at the same time, the less likely anyone is to attempt to answer it. I could answer parts of this but I won't because I an unsure about other parts and I don't want to write a partial answer. See the [help] and [how do I ask a good question](https://bitcoin.stackexchange.com/help/how-to-ask)  

---

## 1 answers

### Answer by username_2 on 2018-11-20. Score: 2

> Is this the way things actually happen?

Yes

> If yes, then my question is then why can't the full node simply do the following: (1) send its UTXO set to the SPV client; (2) SPV client then filters the UTXOs of its interest and put those UTXOs in its own UTXO set.

The UTXO set is large and a proof for every UTXO would be required. Proofs for every UTXO would be expensive to build and an extremely large amount of unnecessary data would be sent over the wire thus consuming network bandwidth that could be better used elsewhere.


---

