# EPF Week 12 Update I verified that my [PR](https://github.com/grandinetech/universal-precompiles/pull/1) for introducing SHA-256 precompiles for ziren zkVM is actually working by running a test case with and without them. In the [PR](https://github.com/grandinetech/universal-precompiles/pull/1), I had implemented a SHA-256 hash compression function using external system calls. Here is the side by side comparison of the output. In the left shell, the zkVM ran using the SHA-256 precompiles and in the right shell without using those precompiles. A significant difference in the performance benchmarks could be observed, wherein the one with SHA-256 precompiles reported elapsed time of ~110 seconds and ~1.56 billion cycles and the one without the SHA-256 precompiles reported elapsed time of ~192 seconds and ~4.82 billion cycles. ![Screenshot 2025-09-05 at 1.21.17 PM](https://hackmd.io/_uploads/Hkl8Dx59xx.png) ## Proof generation I also ran the `prove` command on the smallest test case, which is `consensus spec tests mainnet electra empty block transition`, an empty block transition from consensus spec tests and reflected upon the detailed execution report. ![Screenshot 2025-09-04 at 4.49.28 PM](https://hackmd.io/_uploads/BycCme95ge.png) The entire process took ~1.2 hours and ~1.47 billion GPU clock cycles for verification. It has various other state information like proof size, idle/busy time etc. The khz value (34.11) is probably the clock speed for ZK proof generation. 34.11 kHz indicates ~34,110 cycles. If we divide the number of cycles by the clock speed, we get a value of ~4310s nearly equal to the time utilized which suggests that my assumption is likely correct. Ziren emulates an MIPS32 processor and its clock speed is quite slow likely due to contraint generation overhead. ## precompiles (bls12_381) Apart from this, I have also started working on merging the Ziren precompiles to the [universal-precompiles](https://github.com/grandinetech/universal-precompiles) repository and I will open a PR soon after verifying that everything is working as intended. ## Conclusion I have made some progress on optimizing the performance benchmarks of the zkVM Ziren through some precompiles and I look forward to making some more interesting changes to it and improve it further.