<p>Some lightweight wallets do not check the signatures because checking the signature requires data from the previous transaction. However lightweight wallets generally will not have the previous transaction to fetch the data from and are thus unable to verify the signatures.</p>

CC BY-SA 4.0
2018-08-17T19:50:22.587Z
Incorrect, lightweight wallets most certainly have enough data to verify signatures via merkle root. How well they do it is another story, but it's is not unable.
arshbot
CC BY-SA 4.0
2018-08-17T19:52:10.340Z
Merkle roots are completely unrelated to signatures. The merkle root is about the block, not about signatures.
Ava Chow
CC BY-SA 4.0
2018-08-17T19:55:19.550Z
Interesting, I assumed because the merkle root was reliant on the transaction hash it thus had some data of the signature in it - but according to the whitepaper: "He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it." Which means it's really just relying on the network, not doing proper validation itself. I stand corrected
arshbot
CC BY-SA 4.0
2018-12-12T22:38:50.147Z
Lightweight wallets know each input of a transaction, thus they should be able to fetch every previous transaction, up to the coinbase transaction. I've also learned that Satoshi once said: "The recipient just needs to verify it back to a depth that is sufficiently far back in the block chain, which will often only require a depth of 2 transactions. All transactions before that can be discarded."
Chris Chen
CC BY-SA 4.0
2018-12-12T23:24:10.177Z
No, lightweight wallets can't fetch previous transactions. A full node will not relay transactions that are already in the blockchain. So a lightweight wallet would be unable to fetch previous transactions once they confirm. A lightweight wallet could fetch blocks, and from there the previous transactions. But they don't know which blocks, so they would have to fetch all of them.... and now we have described a full node.
Ava Chow
CC BY-SA 4.0
2019-01-14T05:33:28.537Z
I see Electrum, which should be a typical lightweight wallet, supports loading transaction from blockchain, by txid.
Chris Chen
CC BY-SA 4.0
2019-01-14T05:40:58.460Z
Furthermore, I see Electrum can tell whether a 0-conf transaction has a confirmed parent or not.
Chris Chen
CC BY-SA 4.0
2019-01-14T06:02:35.593Z
Beyond the viability of validating signatures for lightweight wallets, I think whether such validation actually makes sense might be more important. In some other word, will validating signatures improve security for them?
Chris Chen
CC BY-SA 4.0
2019-01-14T15:00:49.603Z
Yes, validating signatures does improve security. Being able to validate signatures means that you can partially check if a transaction is valid. This means that you are less likely to accept invalid transactions. However, signature validation is not the only thing for checking if a transaction is valid. You also need to check that the transaction spends coins that exist, and you can't really do that without validating the entire blockchain.
Ava Chow
CC BY-SA 4.0
2018-07-13T19:09:48.547Z
2018-07-13T19:09:48.547Z
Ava Chow
<p>Most lightweight clients do not validate signatures in Bitcoin. While Simplified Payment Verification (SPV) was introduced in the bitcoin whitepaper as a method of verifying payments without the whole blockchain</p>

<p>re:</p>

<blockquote>
  <p>It is possible to verify payments without running a full network node</p>
</blockquote>

<p>SPV has found most of it's usage on wallets that are unable to allocate the resources for a full validating node. The popular example belongs to the mobile wallet.</p>

<blockquote>
  <p>I wonder if popular lightweight wallets (like Electrum) nowadays do signature checks? If not, why?</p>
</blockquote>

<p>Electrum isn't a standard <a href="https://en.bitcoin.it/wiki/Lightweight_node" rel="nofollow noreferrer">lightweight wallet</a>. Typical lightweight wallets connect via the bitcoin protocol directly to bitcoin seed servers and communicate directly with bitcoin servers. </p>

<p><a href="https://bitcoin.stackexchange.com/a/66111/50821">Electrum does not do this</a>. Electrum lightweight clients connect to Electrum servers, therefor it doesn't make sense for Electrum lightweight clients to take the burden on validation (when at best they could do a sub par job as SPV isn't perfect and results in <a href="https://bitcoin.stackexchange.com/a/40949/50821">plenty of false positives</a>)</p>

CC BY-SA 4.0
2018-08-17T19:48:44.167Z
2018-08-17T19:48:44.167Z
arshbot
<p>I've learned that "some SPV clients simply don’t check signatures themselves at all": <a href="https://bitcoincore.org/en/2016/01/26/segwit-benefits/#efficiency-gains-when-not-verifying-signatures" rel="nofollow noreferrer">https://bitcoincore.org/en/2016/01/26/segwit-benefits/#efficiency-gains-when-not-verifying-signatures</a></p>

<p>I wonder if popular lightweight wallets (like Electrum) nowadays do signature checks? If not, why?</p>

<security><client><electrum><segregated-witness>
Do lightweight wallets validate signatures? If not, why?
Chris Chen
# Do lightweight wallets validate signatures? If not, why?

(Asked by: username_0 on 2018-07-13)

I've learned that "some SPV clients simply don’t check signatures themselves at all": <https://bitcoincore.org/en/2016/01/26/segwit-benefits/#efficiency-gains-when-not-verifying-signatures>

I wonder if popular lightweight wallets (like Electrum) nowadays do signature checks? If not, why?

**Tags:** security, client, electrum, segregated-witness


---

## 2 answers

### Answer by username_1 on 2018-07-13. Score: 1

Some lightweight wallets do not check the signatures because checking the signature requires data from the previous transaction. However lightweight wallets generally will not have the previous transaction to fetch the data from and are thus unable to verify the signatures.

> **Comments:**
> **username_2**: Incorrect, lightweight wallets most certainly have enough data to verify signatures via merkle root. How well they do it is another story, but it's is not unable.  
> **username_1**: Merkle roots are completely unrelated to signatures. The merkle root is about the block, not about signatures.  
> **username_2**: Interesting, I assumed because the merkle root was reliant on the transaction hash it thus had some data of the signature in it - but according to the whitepaper: "He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it." Which means it's really just relying on the network, not doing proper validation itself. I stand corrected  
> **username_0**: Lightweight wallets know each input of a transaction, thus they should be able to fetch every previous transaction, up to the coinbase transaction. I've also learned that Satoshi once said: "The recipient just needs to verify it back to a depth that is sufficiently far back in the block chain, which will often only require a depth of 2 transactions. All transactions before that can be discarded."  
> **username_1**: No, lightweight wallets can't fetch previous transactions. A full node will not relay transactions that are already in the blockchain. So a lightweight wallet would be unable to fetch previous transactions once they confirm. A lightweight wallet could fetch blocks, and from there the previous transactions. But they don't know which blocks, so they would have to fetch all of them.... and now we have described a full node.  
> **username_0**: I see Electrum, which should be a typical lightweight wallet, supports loading transaction from blockchain, by txid.  
> **username_0**: Furthermore, I see Electrum can tell whether a 0-conf transaction has a confirmed parent or not.  
> **username_0**: Beyond the viability of validating signatures for lightweight wallets, I think whether such validation actually makes sense might be more important. In some other word, will validating signatures improve security for them?  
> **username_1**: Yes, validating signatures does improve security. Being able to validate signatures means that you can partially check if a transaction is valid. This means that you are less likely to accept invalid transactions. However, signature validation is not the only thing for checking if a transaction is valid. You also need to check that the transaction spends coins that exist, and you can't really do that without validating the entire blockchain.  

---

### Answer by username_2 on 2018-08-17. Score: 0

Most lightweight clients do not validate signatures in Bitcoin. While Simplified Payment Verification (SPV) was introduced in the bitcoin whitepaper as a method of verifying payments without the whole blockchain

re:

> It is possible to verify payments without running a full network node

SPV has found most of it's usage on wallets that are unable to allocate the resources for a full validating node. The popular example belongs to the mobile wallet.

> I wonder if popular lightweight wallets (like Electrum) nowadays do signature checks? If not, why?

Electrum isn't a standard [lightweight wallet](https://en.bitcoin.it/wiki/Lightweight_node). Typical lightweight wallets connect via the bitcoin protocol directly to bitcoin seed servers and communicate directly with bitcoin servers.

[Electrum does not do this](https://bitcoin.stackexchange.com/a/66111/50821). Electrum lightweight clients connect to Electrum servers, therefor it doesn't make sense for Electrum lightweight clients to take the burden on validation (when at best they could do a sub par job as SPV isn't perfect and results in [plenty of false positives](https://bitcoin.stackexchange.com/a/40949/50821))


---

