Getting started with blockchain|What is SPV verification? It is enough to read this.

Source: Medium

Translation: First Class (First.VIP)

Simple Payment Verification (SPV) is a system outlined in the original Bitcoin white paper that enables a light client (a wallet running on a low-end system) to verify that a transaction has been packaged into the Bitcoin blockchain. In this way, verify the authenticity of a payment.

This is achievable because when Nakamoto designed bitcoin, he used a data structure called Merkel to store the transaction in each block. The Merkel tree is not a novelty. It is just a structure that groups all transactions in pairs and hashes them, then continues to hash the generated hashes until only the last one is left. Greek value (called Merkelgen). This constitutes a Merkel tree, where each node has two child nodes that can be used to create a parent node.

Above: Merkel tree view, L1~L4 is a bitcoin transaction

The cool thing about the Merkel tree is that only people who know Merkel/Top Hash can verify that the transaction is part of the tree. In other words, it is able to verify that the transaction is packaged in the Bitcoin area. In the block. It creates a proof by getting the nodes in the path connecting Merkelgen with one of the bottom transactions and bundling them together:

Above: Proof that SP1 has been included in the SPV certificate in the block

With this proof, only the original user who can access Merkelgen can trace the path back to the root in a verifiable way. He can verify that Hash1 and Hash0 are hashed to generate Merkel root, which means Hash1 and Hash0 is its legal child hash, and then the same validation is performed on Hash0-0 and Hash0-1 to prove that the two hashes are also part of the original block. Finally, check if L1 is the source of Hash0-0, proving that L1 has been packed into the block. If everything is correct, you can prove that this is an accepted bitcoin transaction.

Why is SPV proven so important?

Some people may say that the SPV certificate is not that great. After all, running a full node can verify bitcoin transactions. Why do you have to go around so many circles just to do the same thing? Be aware that running a full node requires downloading the entire blockchain, but if we use SPV proof, we only need to know the Merkel root of each block to verify the transaction, so each of our blocks only needs to store 80 words. Instead of storing the entire block like a full node. SPV proved to save over 99.99% of storage space, allowing us to verify in low-end devices or smart contracts, but if you want to download data for each block, low-end devices are completely impossible.


If you successfully attack 51% of the cryptocurrency, the attacker can fool the client that relies on the SPV certificate to accept all invalid transactions, such as counterfeit currency transactions. If 51% of the attacks are successful, there may be double flowers, which breaks the basic security assumptions and causes harm to the entire system. However, in order to prevent this from happening, there are still many systems under study.

Please reprint the copyright information.