Passing incomplete information to an SPV node I am wondering how SPV handles the following scenario:


A transaction has been confirmed by some block X, and funds address y.
At some later block, the transaction's output are spent again
SPV node queries the balances of y, the full node peer returns the answer along with the merkle proof for block X.
But.. the answer doesn't give you the most up to date response, because y funds were depleted in a more recent block...


I know some ideas like UTXO commitments were around but I am not sure that they were ever merged into bitcoin.

So, was this problem ever solved? Or maybe no one tended to it because it was concluded to not be so bad?
This is a a known shortcoming. The SPV protocol does not protect against omission attacks.

An SPV wallet can request a proof that a given tx is present in a given block, and that a given block is part of a given chain. However, it is not possible to prove that the node isn't omitting a transaction the wallet would like to know about without providing the entire block data for each block, at which point you are essentially a full node.

Wallets avoid this by connecting to multiple nodes - as long as there is one honest node in that connection pool, the wallet will receive up to date information.