I have some doubts regarding how exactly blockchain light nodes verify a transaction on the blockchain.
- As the block only stores Merkle root and all the transactions, to verify whether a transaction is valid or not, you will need to hash all the transactions and determine if Merkle root is equal to the computed root of the tree
- If Merkle proofs can be provided which are only the necessary hashes required to verify the transaction, but where are they stored and how do we determine which proofs are required?
- What do full nodes and light nodes exactly store in the context of Merkle trees
- If a light node wants to verify all transactions in the block, will he need the complete Merkle tree and how will it be provided?
- Finally, how do nodes determine to calculate hashes in a specific order as every node can compute hashes in any random fashion, and hence even valid transactions can be determined as invalid?