### EPF - Week 18 This week we got our block prover running and we were also able to get our first datapoint from EthRex which does zk stateless block proving. Next week we need to focus on getting better "apples to apple" comparisons and in general improving both the benchmarking setup and our implementation. All in all with the goal of trying to get a better indication of how viable this approach actually is. ## Block proving There turned out to be more transpilation issues. For now, we have added flags in `TranspilerConfig` to turn on and off certain parts of the transpilation process (where we instead do a simpler form of transpilation) ### Benchmark numbers On some example blocks _(TODO for next week: this is missing the time taken to get the actual time used to get the transactions which we also need to add)_ | Block | Transaction Count | Total Instructions | Assembly Time (ms) | Proof Time (ms) | Total Time (ms) | |------------|------------------:|-------------------:|-------------------:|----------------:|----------------:| | 22920995 | 90 | 339,291 | 867 | 268,950 | 269,818 | | 22940999 | 284 | 939,591 | 2,353 | 405,609 | 407,962 | | 22940995 | 209 | 766,073 | 1,647 | 441,943 | 443,590 | ## EthRex We were able to get EthRex working and got our first datapoint. Sadly no RPC provider exposes `debug_executionWitness`, I asked around and so I'm now spinning up my own Reth node. That said, luckily for me, I knew there was a sample request on the [Geth PR](https://github.com/ethereum/go-ethereum/pull/32216) so I just used that as a workaround to get the first numbers. We now have a simple [test binary](https://github.com/2xic/erigon-risc-v-executable-proof-sourcing/blob/c96a05b891c231aa092538879318260abb29290b/benchmarking/ethrex-prover-bench/src/main.rs) which runs the EthRex zk proof engine with the `debug_executionWitness` and a raw block. Currently I have not yet gotten the numbers of running a full block proof (it's still running) which also gives some confidence with our approach. ## Next week Some things we should try to get done - Merge in [existing open PRs](https://github.com/2xic/erigon-risc-v-executable-proof-sourcing/pulls) to get the main repo in a good state. - Standardize some of the tests (same blocks, reproducible with sampling, same proof engine, etc) - We should also get the RPC speed time for our Erigon benchmarking numbers. - Find other implementations to benchmark against, we should at least have two other implementation to compare against. - Currently part of the transpilation logic is less semantically correct than it should be (we don't fully solve for call isolation etc) which we should improve.