From what I have read, suppose B sends 1 bitcoin to C. C wishes to verify B's payment and asks C for the block number (location) that input transaction is located at. (Is this correct understanding/procedure?) Then C checks whether transaction is actually in the block mentioned using Merkle tree.

And this is where my understanding stops. I know that Merkle tree has nice property such that if one has transaction itself and some trde hashes, you do not have to check all subtree hashes to check validity of transaction in the block. But this still requires receiving hashes from full node that knows what transactions are in the block. If all C knows is the block number plus transaction, then how is this different from just receiving the answer yes from the full node? The full node would still have to search where the transaction is located at the merkle tree in order to send subtree hashes. I just do not see how merkle tree helps to verify efficiently.

But given the level of my confusion, I do think that it may be better to answer by giving detailed procedures on what happens when B sends bitcoin to C.


1 Answer 1


I am going to try and answer to know if I truly understood.

  • You send Bitcoin to another wallet
  • Your request will be added on a block (let's call Block X)
  • Inside that block are transactions in a Linked List structure
  • The full node will give your wallet the the right/left hashed transaction & its Merkle Root (MR = h(h(hash|hash)|h(yours|yours)))
  • Your wallet upon receiving Block X's relevant hashed transaction will then be used to generate a Markle Root to be compared against the Merkle Root that came from Block X

My answer was based on this answer source:


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.