## EPF - Week 12
This week we started on milestone [two of our roadmap](https://github.com/eth-protocol-fellows/cohort-six/blob/master/projects/erigon_riscv_proof_sourcing.md#stabilizing-the-transpilation-module-weeks-11-17). The focus is on getting real-world contracts working which involves both implementing more opcodes and also starting to integrate with Erigon for accessing the state database and generating the proofs in a real-world environment.
## More opcodes
We want to start supporting real-world transactions with this milestone. Starting with [UniswapV2](https://etherscan.io/address/0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc#code) as our first target application. Mostly because it's an application people know and it involves interacting with other applications at different levels (some example include the ERC20 pairs within the pool, factories creating it and routers etc that are built on top of it).
After implementing more opcodes [this week](https://github.com/2xic/erigon-risc-v-executable-proof-sourcing/pull/6), we are left with a few opcodes that we still don't yet support (these are for `UniswapV2Pair`, more opcodes may be needed as Uniswap calls into other contracts):
- JUMP
- RETURNDATASIZE
- GAS
- ADDRESS
- STATICCALL
- CALLER
- RETURNDATACOPY
- LOG3
- TIMESTAMP
- CALL
- CREATE2
- MCOPY
- LOG2
- LOG1
- EXTCODESIZE
- CHAINID
- CALLDATACOPY
- CALLCODE
I think by next week all / most of them should be supported as we have most of the building blocks after having implemented similar opcodes.
## Integrating with Erigon
Since I didn't have a devbox ready with the Erigon with a full historical state, I spent some time this week to set up a VPS to make it easier to get the state db set up and be able to run my own custom version.
_("proof" of Erigon running on my vps)_
```bash
> ./run.sh
INFO[09-06|22:22:07.227] logging to file system log dir=/root/erigon-datadir/logs file prefix=erigon log level=info json=false
INFO[09-06|22:22:07.227] Build info git_branch= git_tag= git_commit=
INFO[09-06|22:22:07.227]
########b oo d####b.
## '##
##aaaa ##d###b. dP .d####b. .d####b. ##d###b. aaad#'
## ##' '## ## ##' '## ##' '## ##' '## '##
## ## ## ##. .## ##. .## ## ## .##
########P dP dP '####P## '#####P' dP dP d#####P
.##
d####P
```
## Stark proofs
One benefit of setting up a VPS is that I could also get some extra ram to be able to generate the stark proofs.
```bash
> cargo openvm setup
Writing STARK aggregation proving key to /root/.openvm/agg_stark.pk
Writing STARK aggregation verifying key to /root/.openvm/agg_stark.vk
Generating root verifier ASM...
```
This enables full aggregated proofs, as discussed [last week](https://hackmd.io/HP08nFPSQX6oXCvuo4rPVg#Follow-up-on-the-large-proofs).
## Next week
We need to implement the remaining opcodes, ideally we get them done somewhat early and are able to do some test where we do a trace against the real state db of Erigon.
Some continued work was done on the proof assumptions [document from last week](https://hackmd.io/HP08nFPSQX6oXCvuo4rPVg#Thinking-about-the-proof-assumptions), although it still needs more work. It's probably something that will be worked on between implementing more opcodes for the next few weeks.