Created on 21st June 2025
•
ZeroHour pushes the limit of client-side Zero Knowledge Proof generation by creating proofs of steps walked on a PineTime, an open-source smartwatch that only has 64kb RAM.
If you walk more than 10000 steps a day you'll get a discount from your health insurance. Maybe, one day. With ZKPs.
PineTime is an open-source smartwatch capable of running open-source operating systems. By default it uses InfiniTime which is built on top of FreeRTOS. It contains a nRF52832 CPU chip and common health measurement tracking such has heart rate and steps walked.
This makes the PineTime a great (though extreme) testbed for privacy applications and zero knowledge proofs.
64KB of RAM (assuming we could use all of it!) fits 2000 hashes or 1000 Elliptic Curve points! Clearly running an off-the-shelf SNARK or STARK will be infeasible on this device.
We went back to the roots and designed a Sigma protocol from scratch, which proves that the number steps is above 10k. It roughly works as follows:
number_of_steps - 10000
using hiding Pedersen CommitmentsThere are other problems besides pure proof generation that would need to be solved to ensure this project's real world practicality, which we are not aiming at solving for the hackathon project, for example:
This project was quite ambitious on the technical level, and I think we managed a surprising amount considering the amount of time. The challenges we did overcome:
The clear first challenge was designing the tiny proof system itself. Of course this isn't anything revolutionary and builds on existing literature, but had to be designed in a custom way knowing the limitations of the hardware.
Development for embedded can be painful. And it was. This required changing an operating system that doesn't have that much documentation, and the dev/testing infrastructure is quite limited. The crypto library is also quite low level and required a lot of bit tweaking.
Each part of the pipeline was complicated to design or implement in isolation, which was a challenge in itself. Jumping from complex issue to complex issue is quite draining.
Tracks Applied (1)
Technologies used