conceptual crypto currency background

Merkle Tree and Bitcoin

This post originally appeared on ZeMing M. Gao’s website, and we republished with permission from the author. Read the full piece here.

A post on Twitter summarizes how Merkle Tree works, but has caused some debates.

To be fair, the original post did a fairly good job to explain Merkle Tree, albeit quite basic, not nearly as deep as how Dr. Craig S. Wright explained it.

But as the two BSVers pointed out in replies, with its limited block size BTC does not need Merkle Tree at all.

People commonly do not realize that Merkle Tree in the context of Bitcoin is an inherent part of Simplified Payment Verification (SPV).

To scale Bitcoin like BSV does, it’ll get to a point where SPV is necessary, hence requiring Merkle Tree hashes.

But with maximum 5000 transactions per block, BTC simply isn’t worth a Merkle Tree.

So BTC does not do SPV, yet it talks about Merkle Tree. Why?

It is like a kid playing a paper fold plane but throwing around terminologies of aerodynamics to impress.

But with BTC, the truth is even more embarrassing than that.

They thought they got rid of Satoshi and SPV so they could focus on the Ponzinomics of Digital Gold. But they continue to recite concepts from the whitepaper to create an appearance of legitimacy.

By doing that, however, they not only fail to acknowledge BTC contradicts the whitepaper, but also fail to realize that they contradict themselves.

Merkle Tree contradicts BTC

A simple reason why Merkle Tree contradicts BTC:

Given the large number of UTXO’s that could exist, BTC’s less than 5000 transactions per block means each block is essentially a flat structure.

Very rarely you’d have a UTXO chain that goes beyond just one single transaction within the same block.

How rare? The theoretical upper limit of the total number of UTXO at any given time is 2.1 quadrillion. Compare that base with 5000, and estimate the odds. Even if we reduce the theoretical base by 1 million times, we still have 2.1 billion UTXO’s at any given time.

You can see how small the chance is for BTC to have a deep multilayer UTXO structure within a block. CSW has indeed demonstrated that it would be more efficient (and even more secure) for BTC to simply do an index.

Merkle Tree belongs to BSV.

BSV uses Merkle Tree to enable SPV, and uses SPV to make light client nodes a reality, and to enable instant payment verification, which is much needed in real commerce.

BSV has unbounded of scalability and true Peer-to-Peer, partially thanks to Merkle Tree.

But just talking about Merkle Tree does not create any of these properties.

Another reason why BTC supporters talk about Merkle Tree is probably because they mistakenly think that Merkle Tree is part of what makes Bitcoin secure.

That’d be another misunderstanding, but I’m only guessing why they do that, trying to make sense. They might have other reasons.

In any event, it doesn’t seem that BTC supporters are aware of the fact that Merkle Tree in the context of Bitcoin has nothing to do with security but everything to do with scalability.

But it would be even more out of touch if they indeed talk about Merkle Tree in terms of scalability, because that would be like talking about the functions of a high-speed freeway when their entire territory is of the fixed size of a courtyard not even allowed to expand ever.

Watch: The BSV Global Blockchain Convention presentation, LiteClient: Scaling Blockchain with Simplified Payment Verification

New to Bitcoin? Check out CoinGeek’s Bitcoin for Beginners section, the ultimate resource guide to learn more about Bitcoin—as originally envisioned by Satoshi Nakamoto—and blockchain.

[id^="_form"]
[id^="_form"]
[id$="_submit"]
[id$="_submit"]
[^;]
[^;]
[?&]
[?&]
[^&#]
[^&#]
[(d+)]
[(d+)]
[elem.name]
[elem.name]
[+_a-z0-9-'&=]
[+_a-z0-9-'&=]
[+_a-z0-9-']
[+_a-z0-9-']
[a-z0-9-]
[a-z0-9-]
[a-z]
[a-z]
[el.name]
[el.name]
[id^="_form"]
[id^="_form"]
[id$="_submit"]
[id$="_submit"]
[^;]
[^;]
[?&]
[?&]
[^&#]
[^&#]
[(d+)]
[(d+)]
[elem.name]
[elem.name]
[+_a-z0-9-'&=]
[+_a-z0-9-'&=]
[+_a-z0-9-']
[+_a-z0-9-']
[a-z0-9-]
[a-z0-9-]
[a-z]
[a-z]
[el.name]
[el.name]