## EPF - Week 16 This week we were able to get proof generation working for UniswapV2 transactions, although not fully in the [way we had hoped](#Things-we-did-do). That said, we still have some time to clean it up and the current state might also be sufficient for the evaluation and benchmarking. We also wrote an (unoptimized) way of [proving blocks](#slow-Block-proving). We want to start spending more focus next week and spend most (70%) of our time starting to think about evaluating/benchmarking the approach while also doing some continued work on the actual implementation (30%). ## Things we did this week ### [Uniswap V2 transaction proving](https://github.com/2xic/erigon-risc-v-executable-proof-sourcing/pull/9) We are able to transpile and generate proofs for UniswapV2 transactions. There were a few issues that we ran into along the way. To unblock ourselves, most of these issues were solved by loading in data from the `.data` section. - Memory model was incorrect. I'm a bit unsure what exactly was wrong, but the way we had implemented certain memory opcodes like `MCOPY` made the transpilation start reading bad data and the transpiled binary would crash :( - There turned out to be many more opcodes that I hadn't implemented, mostly arithmetic-like opcodes. If time allows, we will spend some more time looking at solving the transpilation without relying on the `.data` section. ### (slow) Block proving We have a new CLI binary which does block proving. It's not very efficient currently since it will trace each transaction sequentially. There are probably ways we could improve this. For instance, instead of transpiling each independently, we should be able to transpile the entire block into one program. Next week we will look into ways of speeding this up. ## Things we were not able to do I had hoped to already start a bit on the benchmarking and evaluation plan, but did not have time to get to that. ## Plans for next week We have about two weeks left of the milestone we are working on: being able to transpile and [prove real world transactions](https://github.com/eth-protocol-fellows/cohort-six/blob/master/projects/erigon_riscv_proof_sourcing.md#stabilizing-the-transpilation-module-weeks-11-17). Things are not in as "perfect" of a state as I wanted. That said, I think there will be benefits to starting early on the benchmarking and then returning to some final optimizations if time allows. I will therefore spend most of my focus (~70%) starting on the evaluation and benchmarks next week, as I think that might take a bit longer than I initially had planned. The remaining 30% will be spent continuing to improve the implementation.