perama.eth (@eth_worm) profile picture

Tinkering 🌱 systems, gadgets, mechanisms, designs, protocols

🦇🔊
Joined February 2021
Photo by perama.eth (@eth_worm)Photo by perama.eth (@eth_worm)Photo by perama.eth (@eth_worm)Photo by perama.eth (@eth_worm)Photo by perama.eth (@eth_worm)Photo by perama.eth (@eth_worm)Photo by perama.eth (@eth_worm)Photo by perama.eth (@eth_worm)Photo by perama.eth (@eth_worm)
For native rollups, BLOCKHASH opcode use is not secured by the state root. It is implicit state, which L1 doesn't know One solution is to have an L1 contract with a 256 long ring buffer for each rollup. After EXECUTE returns valid, the L2 blockhash buffer is updated
1
149
Soothing matrix rain for live (@androolloyd) EVM data debug_traceBlockByNumber -> semantic filter -> drip @shemnon not pure bytecode sorry. I offer function selectors and logs as consolation Should work against any execution node github.com/perama-v/archors/…
2
1
3
713
Snack sized archive node recipe 🧑‍🍳 Ingredients - 172KB block body - 2.5MB RequiredBlockState.ssz_snappy 🧑‍🍳 Method 1. Verify state proofs 2. Blend with revm 🧑‍🍳 Serves 270MB trace github.com/perama-v/archors/…
1
2
5
591
Some notes on a sharded archive node architecture perama-v.github.io/ethereum/… Idea is to make/distribute per-block proofs of accessed state and pipe them into the exellent revm by @rakitadragan A trustless money trace localized entirely within your kitchen!? May I see it?
1
3
343
With the benefit of hindsight the state trie collapses down to about 167 KB/Mgas for historical block proof data
1
2
195
So imagine if geth archive nodes were 2x larger but you could just store 1% of them (along with 100 peers)
2
186
cargo fermat Replaces function body todo!()'s with // Implementation complete, see local branch
1
252
It’s one debug_traceTransaction, Michael. What could it cost, $10?
1
8
661
Ok hear me out A magnet link for all data required to trace all blocks that start with some byte. And a little client that can ingest those and serve debug_traceTransaction Entry point via @trueblocks to know which 🧲. Post next magnet links in a contract every so often
4
2
669
In the spirit of @EthereumDenver I conjured up a hair-brained scheme: Let's shard/distribute archive nodes! perama-v.github.io/ethereum/… Would you use a light-weight archive node? What an estimated median per-block accessed-state merkle-proof sizes. ~1MB? Roasts are welcome.
100%Would use. Proofs <1MB
0%Wouldn't use. Proofs <1MB
0%Would use. Proofs >1MB
0%Wouldn't use. Proofs >1MB
2 votes • Final results
1
1
366
Each block has a state root though. So run through each block and create a small database of every state value accessed. Database as a tree = proof rooted in the state root = verifiable database. Distribute the databases and a header-accumulator.
1
240
Use eth_getBlockByHash to get all the transactions, start applying them. Use the mini database (aka merkle proof) every time state is accessed (read or write). Stop once you get to the transaction of interest. Enjoy your trace!
210
You've heard of elf on a shelf But have you considered Nametags on a DAG github.com/perama-v/min-know…
1
357
I have been having fun making my little rust library (min-know) generic over any data/database. Its purpose is to make it easier to make any data/database distributable and divisible over IPFS. 🔍🐟 github.com/perama-v/min-know
1
4
11
2,329
Users don't need 1/256th of all event/function signatures. They might only want 3. By automating the lookup to involve getting larger pieces of never-changing data, you make it easy for a casual user to be a data provider. A pin-by-default norm
1
1
285
Min-know is also just an exploration. Maybe this is a bad idea, who knows. The library is written to make a new data type easy to implement. It defines a DataSpec trait that you implement for a naked struct. By following the borrow checker and her magic ways, it writes itself.
247