Verifying computation by potentially un-trusted parties
Verifiable computing is the offloading of computation of some function(s) to another potentially un-trusted party while maintaining that the computation was done correctly. It enables the verification of correctness of a program’s execution on public and private inputs. There are two suitable situations for verifiable computation:
- Offloading computation to a more powerful computing resource
- Offloading computation to a potentially un-trusted party
Some potential use cases include:
- Proving that a party has an input to a hash function that gives rise to a specific hash.
- Proving that a party is part of a group without revealing their identity.
- Proving that a party has a sufficient account balance for a transaction.
- Proving the winner of an auction without revealing details about the bids or parties.
Verifiable computing schemes aim to verify the remote execution of a program on an untrusted machine.
Anthony will explain how to encode the operations of a simple embedded DSL to a single cryptographically-checkable polynomial test, and then prove there is correct execution for given inputs and outputs.