Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> pass program code + data to this virtual machine

If you have to pass the data, then how can this possibly help solve, as others have said, scenarios that prove something about data without revealing the data?



In order to verify the proof, you only need a "commitment" to the fact that you passed specific input data. This can be in the form of calculating a cryptographic hash.

Imagine that you represent a program and data as a flat byte array (which is the typical case for risc-v). Your program contains a prologue at the very start (0x0) that calculates the hash of the rest of the memory and checks that the hash is equal to some value hardcoded right after the prologue and if it doesn't match - then it panics. Then if you can prove that the VM followed all steps exactly as the hardware architecture prescribes, it's just impossible for the result to be any other way. What you need now is to only send to other side this prologue together with the hash. You don't have to reveal the rest of the memory.

Of course I'm simplifying a bit, but I hope the idea is clear.


You don't _have_ to, I think the parent poster is just giving an example of how this can be used.

The "Zero Knowledge" part is that you can tell me "for this particular program code, I know an input that gives an output of 'foobar'" and I can be convinced that you're telling me the truth without seeing what that input actually is.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: