← Back to home

Noir Secret Sharing

Verifiable secret sharing amongst various clients. The ZKP that accompanies the share proves the share is valid.

Screenshots

Noir Secret Sharing screenshot 1
Noir Secret Sharing screenshot 2
Noir Secret Sharing screenshot 3

Problem Statement

The idea is to let client generate secrets, make shares and share them amongst each other. Along with the shares commitments are generated as well as a Noir proof that confirms the shares is valids by checking out the shares wrt the commitments. Both the share and the proof is sent to the other client. The proof can be checked on the other side to make sure the share is valid.The idea is that this is a starting point to build more thing upon. For example it can be a building block for adkg (asynchronous distributed keygeneration). And the proof only has to be generated once and then can be checked multiple times, instead of every client having to do the computation of the verification of the commitments.

Solution

It has a verification part in Noir, and clients in Javascript that use NoirJS.I used the "Tiny Noir app" as a starting point. Then added communication between clients, as sort of a chat service between them. It uses a library from zk-kit to generate the shares and comitments in baby jubjub (this was difficult to figure out).The hacky part is the communication between the clients for sure! This is not production ready haha.

Hackathon

Circuit Breaker

2024

Prizes

  • 🏆

    Best Noir App2nd place

    Aztec

Contributors