# EPF - Week 3 This week I was at EthCC. I was able to talk to Mark Holt who proposed all the Erigon project ideas. I did testing of ZkVMs and started on the path to writing up a concrete project proposal with a roadmap. ## Meeting with Mark Holt at EthCC I was a bit unsure if I wanted to do the Block Access List (BAL) or the RISC-V transpilation project. I was told that since BAL is on the roadmap (ish) it's likely that I'll be front run if I picked the project as it's less of a research project. Given that and wanting to help grow the pie more, I'm going with the RISC-V transpilation project. On the RISC-V project, I was a bit curious on what Erigon wanted to achieve by the project. What is considered a successful POC was not agreed on, but will be discussed once a concrete proposal is ready. They have plans to use it for beyond just Zk proving which made me even more interested in working on it. Mark mentioned that one way to implement the transpilation module would be by reusing/extending the tracer interface that Erigon provides. ## Proposal updates There was some good progress this week (even though this probably was one of the more busy weeks). ### Deep dive I started to look at how some of the guest / host interactions are in the various ZkVM frameworks. I was able to successfully look at the Powdr and SP1 guest / host programs, opened a (small) issue against [OpenVm](https://github.com/openvm-org/openvm/issues/1816) as I wasn't able to get that working and reached out on the [Taiko Discord to ask whether guest program proving](https://discord.com/channels/984015101017346058/1117285651394600960/1390817148028452884) is even possible. It's important to understand this to be able to do the construction of ELF binaries that the provers will accept and prove. ## Proposal writeup checklist Small checklist that I created for creating the project proposal. The first phase involves getting an overview of how the guest programs in a ZkVM are constructed and looking at the Erigon source code to see where it can make sense to add the transpilation component. This is also done to do some calibration to get a sense of what is realistic to get done as part of the fellowship since this is a more "open" project, I want to create some success criteria with the proposal. - [x] Do the quick start guide of various ZkVMs and inspect the guest programs that provers accept. I'll post a small writeup of this with the proposal. - [X] Powdr - [X] SP1 - [X] OpenVM - [X] (likely to be skipped) Taiko (suggested in the proposal). I didn't see any way to prove guest programs from their docs, I also reached out on [their Discord](https://discord.com/channels/984015101017346058/1117285651394600960/1390817148028452884), but I haven't heard anything back. They only do block proving as far as I can tell. - [ ] "Handcraft" (custom toolchain, doesn't need to be fancy) a simple binary which the prover will accept. - [ ] Explore the Erigon source code for looking at where it makes sense to add the transpilation (tracer or somewhere else?) The second phase is using the knowledge from the first phase to create a proposal with an associated roadmap. - [ ] Write up a concrete proposal as described [here](https://github.com/eth-protocol-fellows/cohort-six/blob/master/projects/project-template.md). - Thinking about some of the edge cases (precompiles, 256-bit word size in EVM world vs 64 bit word sizes in RISC-V) and what can be in scope for the POC. ## Next week Some of the prerequisite work for the proposal and roadmap started this week by exploring some of the guest / host programs and looking at how they are compiled and the content of their ELF binary. Next week, the plan is to get out a draft for the proposal.