pull down to refresh
1031 sats \ 4 replies \ @standardcrypto OP 7h
In category theory language (mathy) blocks are arrows and utxo sets are objects. Blocks transform utxo sets. Or you could say that the utxo set is state and blocks are state functions that modify state.
an interesting intuition here is to shift focus of attention from the blockchain to the the utxo set.
Every possible blockchain maps to a single utxo set, and I believe the inverse is also true (though I am not 100% about that one, need more coffee).
But I think these are 1 to 1 (in math, an isomorphism. again, needs double checking).
Another thing we are ignoring is that because of orphan blocks it’s really a “blocktree (directed tree)” not a “blockchain.” Blockchains are paths in the directed block tree.
Technically every node in the tree maps to a utxo set, including the orphans.
But for consensus purposes you only care about the longest paths (blockchains) in the tree (hence chain) and ignore the other paths (dead blockchains) and the utxo sets they map to.
Anyway to validate a fresh transaction you need the utxo set, not blocks. The only reason you need blocks is to get the utxo set in the first place.
The only reason you need the arrows is to get the objects.
When the utxo set was "light" in terms of resources required, no one thought about it too much. It stayed light as long as utxos got spent as fast as they were created basically.
But with ordinals bloat that's no longer true.
Spam is breaking that rule and there is no upper limit on the theoretical size of the utxo set.
Once you verify a block you're done with it. You can't care about the "arrows" just about the objects, and really you only care about one object, the last utxo set at the end of the longest chain.
The older bitcoin gets, the bigger the objects (utxo sets) get compared to the arrows (blocks). We are getting to the point now where we can’t ignore the resources used by the utxo sets itself.
Utreexo remedies this by applying some basic optimizations to the utxo set that were ignored at bitcoin’s creation time because compared to blocks, the resources needed to wrangle utxos in practice was small.
But now they that’s not true anymore so we have to fix it.
Luckily there is a way and utreexo is it.
reply
0 sats \ 1 reply \ @SimpleStacker 7h
Wow that's one of the most helpful explanations I've seen! Thanks!
I used to think of Blocks as state because we store it on disk, but this makes so much mores sense
reply
30 sats \ 0 replies \ @standardcrypto OP 6h
Glad that helped!
reply
0 sats \ 0 replies \ @anon 4h
I mean, Libbitcoin has been around for like 14 years and has had a similar elegant solution for eliminating not only the need for mempools but simplifying validation an confirmation checks. How many nodes do you think Libbitcoin accounts for?
reply
0 sats \ 0 replies \ @0xbitcoiner 7h
I had that doubt yesterday, but now it’s all clear. Thanks!
Ordinals - Impact On Node Runners | BitMEX Blog
reply
15 sats \ 0 replies \ @OT 7h
As I understand utreexo is not a full node.
Also UTXO bloat is not the only reason people run Knots.
reply
0 sats \ 2 replies \ @south_korea_ln 6h
Didn't realize Calvin was still working for Bitmex. Good for him.
reply
5 sats \ 1 reply \ @south_korea_ln 5h
EDIT: 2021 piece.
I then wonder how far the Utreexo project has gotten since it was written...
reply
0 sats \ 0 replies \ @jimmysong 5h
There's a BIP for it now. Calvin is funded by HRF if I'm not mistaken.
https://github.com/utreexo/biptreexo
reply
0 sats \ 0 replies \ @dgy 2h
Given it survives till it is widely deployed and used on daily basis. In the meantime the other debate stays relevant.
reply