# EPF Week 8 Update This week, I have opened a [PR](https://github.com/Dyslex7c/grandine-zk/pull/1) in my own repository and started the integration work by adding Ziren zkvm into the Grandine codebase. (I have added Mário and Josh to my repository since it's marked as private by Grandine). I found an example guest code in the [ZKM documentation](https://docs.zkm.io/dev/guest-program.html) which I used initially for compilation in Rust. Following is the command I used to compile it ```bash $HOME/.cargo/bin/cargo +nightly-2025-06-30 build --release --target mipsel-zkm-zkvm-elf ``` Here `mipsel-zkm-zkvm-elf` is the rust compilation target for converting programs to MIPS ELF format. MIPS supports smaller number of circuit constraints and an optimal match to zk circuit design. I created the Ziren module that implements the same `VmBackend`, `ReportTrait`, and `ProofTrait` interfaces using ZKM SDK components like `ZKMStdin`, `ZKMProofWithPublicValues`, and `ZKMVerifyingKey`, following the pattern of the already present backends of RISC Zero and SP1. This implementation also handles the setup of proving and verifying keys, processing the SSZ serialized state/block/cache inputs, and executing or proving the state transition. Currently I'm facing a compilation error but I'll fix this in no time. I had opened an [issue](https://github.com/ProjectZKM/Ziren/issues/267) in the concerned repository for better understanding and context, and I consulted Artiom also for his guidance. The issue is that `mipsel-zkm-zkvm-elf` target is a 32-bit MIPS little-endian target so it lacks support for 64-bit atomics present in the SSZ library. ## Resources - [Ziren github](https://github.com/ProjectZKM/Ziren) - [ZKM documentation](https://docs.zkm.io/) ## Work for upcoming weeks I will try to finish the integration within the next 1 or 2 weeks and start preparing tests and benchmarks covering the initial results. ## Conclusion So far, everything has been quite smooth overall and I look forward to completing the integration successfully.