This is a POC implementation of the CHIP-8 instruction set using STARKs. It can be a good learning resource to understand how modern zkVMs are implemented. This includes concepts like preprocessing, cross-table lookups, offline memory checking etc. It can also serve as a playground for benchmarking different proving systems.
Turns out, two days are not enough to put together a zkVM from scratch.
I used plonky3 to implement the underlying STARKs for the VM. Plonky3 works on small 32-bit fields, which have performance benefits. Since plonky3 is relatively new, there's not much tooling or resources to refer to, which led to some headaches during debugging. Debugging lookups was especially nasty since they work in extension fields.
Tracks Applied (2)
Polygon
Technologies used
Discussion