This is wrong. Witness data is not stored in the UTXO set. Witness data is revealed when spending a UTXO, removing it from the UTXO set. Witness data is only in blocks and can be pruned.
How do you drain the wealth without appearing as a parasite yourself?
Dragonsweeper is awesome - mixing dungeon crawler with minesweeper. https://danielben.itch.io/dragonsweeper
So glad it's not just me. I've programmed for decades, and the only programming language that I can remember making me legit feel like shedding tears and giving up is JavaScript.
I am always impressed by the thoroughness and objectivity in your optech summaries. It does not go unnoticed! Thank you for all you do.
Only imperial stormtroopers are so precise.
Yes, and also you need to be at home for it to work.
Anybody got alternatives to uBlock Origin now that Chrome has banned it? The idea of using a web browser without an ad/scam blocker is out of the question.
https://chromewebstore.google.com/detail/uBlock%20Origin/cjpalhdlnbpafiamejdnhcphjbkeiagm
You can block at DNS level with pihole instead.
I see some GitHub issue commenters saying they operate leveldb DBs with multiple Tabs and 100s of billions of entries with no issues.
I haven't done the math yet but I think it would take decades of constant utxo spam at a 4 MB per 10 minute rate to get there.
Yes, I'm trying to find out what that limit would be in leveldb without much luck.
The problem with this is that connecting blocks to tip once you reach steady state will be much slower. Instead of looking up each input prevout from the set of utxos, you will have to lookup each input prevout from the set of all txos ever created.
Also, with a very large amount of db on disk, what are the performance implications, in verifying new blocks? I do understand that this is greatly optimised by what you say, but, even with fast disk, at what point does it get too slow to keep up with the tip?
(interesting that if all spends are of recent utxos, we do kind of magically avoid the most obvious problems, thanks for pointing that out).
(To nostr:nprofile1qqspphpska7kts5gf5pzdk826t2j65xhvecrllwwl062qudnuue05ecpr9mhxue69uhhyetvv9ujuumwdae8gtnnda3kjctv9u9u2c5q and nostr:nprofile1qqsyp0wvpzygmxx5n5plhyall5wvgmvm3uv86zxfljqmft0s45q06tqpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcppemhxue69uhkummn9ekx7mp0qyvhwumn8ghj7urjv4kkjatd9ec8y6tdv9kzumn9wshsa60yme )
I think there are ways to make validating a block very slow due to script validation, but that is orthogonal to utxo cardinality.
Both blocks and utxos are stored in leveldb, and blocks are an order of magnitude bigger on disk with no performance issues. However, value sizes for utxos are much smaller, so the number of entries is bigger.
The next release of Bitcoin Core has a change to greatly speed up disk lookups of utxos as well.
The Bitcoin Core implementation only keeps a subset of utxos in memory, which by default is only 450 MB. The rest are on disk, which for this thought experiment you say we have plenty of.
Since blocks are limited to 4 MB, we will never have to exceed memory usage to process utxos in a block due to memory.
I don't think a sufficient number of utxos could cause it to fall over and crash.
The last part is not the issue. A Ledger could blind sign Bitcoin hashes too. It can be fixed by Safe developers making a Ledger firmware app that could parse all Safe txs, instead of using the generic Ethereum app. The same thing acinq did for lightning txs. https://x.com/acinq_co/status/1894036594866212894

