<p>I am going to try and answer to know if I truly understood.</p>
<ul>
<li>You send Bitcoin to another wallet</li>
<li>Your request will be added on a block (let's call <strong>Block X</strong>)</li>
<li>Inside that block are transactions in a Linked List structure</li>
<li>The full node will give your wallet the the right/left hashed transaction &amp; its Merkle Root (MR = h(h(hash|hash)|h(yours|yours)))</li>
<li>Your wallet upon receiving <strong>Block X</strong>'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</li>
</ul>
<p>My answer was based on this answer source:</p>
<p><a href="https://bitcoin.stackexchange.com/a/38420">https://bitcoin.stackexchange.com/a/38420</a></p>

CC BY-SA 4.0
2022-10-19T16:00:22.093Z
2022-10-19T16:08:41.650Z
2022-10-19T16:08:41.650Z
Miko Chu
<p>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. </p>

<p>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.</p>

<p>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.</p>

CC BY-SA 3.0
2017-03-27T20:29:16.510Z
http://bitcoin.stackexchange.com/a/36388/18196
morsecoder
CC BY-SA 3.0
2017-03-27T20:31:10.057Z
http://bitcoin.stackexchange.com/a/38420/18196
morsecoder
<transactions><transaction-verification><merkle-tree><spv>
How does merkle tree verification of transaction work?
Geo Mez
# How does merkle tree verification of transaction work?

(Asked by: username_0 on 2017-03-27)

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.

**Tags:** transactions, transaction-verification, merkle-tree, spv

> **Comments:**
> **username_1**: http://bitcoin.stackexchange.com/a/36388/18196  
> **username_1**: http://bitcoin.stackexchange.com/a/38420/18196  

---

## 1 answers

### Answer by username_2 on 2022-10-19. Score: 0

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:

<https://bitcoin.stackexchange.com/a/38420>


---

