blog single image

08 Dec

Verifiable computing

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:

  1. Offloading computation to a more powerful computing resource
  2. Offloading computation to a potentially un-trusted party

Some potential use cases include:

  1. Proving that a party has an input to a hash function that gives rise to a specific hash.
  2. Proving that a party is part of a group without revealing their identity.
  3. Proving that a party has a sufficient account balance for a transaction.
  4. Proving the winner of an auction without revealing details about the bids or parties.

Verifiable computing in Haskell

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.

Verifiable Computing - Slides