Functional Commitments
Historical demonstration. The steps below display recorded values from an earlier implementation.
One interesting potential use-case for Lurk is programming functional commitments. A functional commitment is a cryptographic primitive that allows a committer (or prover) to commit to a secret function in a way that hides the function from clients and binds the committer to correctly applying the function to any input without changing the function. In a functional commitment scheme, there are three primary actors:
- Prover / committer.
- Client
- Verifier
The prover, or committer, commits to the function. The client offers an input to the commitment and asks the prover to "open" the commitment in a way that gives an output without revealing any information about the function as a whole. This results in both an output and a proof that the output is correct. The verifier, which could be the client or another party, confirms that the proof is correct, thus confirming that the function was correctly applied to the input.
The basic steps of a functional commitment workflow are demoed below. For a scholarly treatment of Functional Commitments, see Boneh 2021: https://eprint.iacr.org/2021/1342.pdf
1. Commit
A prover commits to a function, producing a commitment in the form of a hash. This binds the prover to applying this function to any inputs without the prover being able to change the function in any way. The commitment is public. The function is not.
(lambda (a) (* a a))2. Provide input
A client provides an input for the commitment to the prover.
173. Open
The prover opens the commitment for that input and returns an output as well as a proof that the output is correct. This is done without revealing any information about the function other than that it was applied correctly.
80c4e9edb43fbaaef0e3b1c0da248bd60981ba79f6425fd48a18bd2afdd7e26e17Recorded proof
4. Verify
The verifier verifies that the proof is correct. This confirms that the prover correctly applied the function to the client’s input.
Client / Verifier · Recorded proof
