Implementation

Using Zero-Knowledge Proofs (ZKP) in the context of the Kyōdō Protocol to ensure transaction privacy involves several steps. Here's a high-level overview of how we implement this:

1. Setup Phase:

  • Parameters Generation: Generate common reference strings (CRS) that both the prover (Contractor) and verifier (Professional) will use. This is a one-time setup.

2. Transaction Creation:

  • Commitment: When a Contractor decides to pay a Professional, it creates a commitment of the transaction. This commitment contains the amount and other transaction details but is encrypted and cannot be directly read.

    • Proof Generation: The Contractor (or the protocol on behalf of the contractor) then generates a zero-knowledge proof asserting the validity of the transaction without revealing the actual transaction details. This proof asserts:

    • The contractor has enough funds to make the payment.- The payment details match the commitment.

3. Transaction Verification:

  • Proof Verification: The protocol (or other network nodes) verifies the zero-knowledge proof. If the proof is valid, the transaction is added to the blockchain. The actual transaction details (like who paid whom and how much) remain private.

4. Token Distribution:

  • Developer's Wallet: The developer's wallet balance increases by the payment amount, but this increment is not publicly linked to the contractor's payment.

    • Community Token Reward: The protocol also issues community tokens to the professinal as a reward. This issuance also uses ZKP to keep the amount and source private.

5. Shielded Pools:

  • Future implementations also consider using shielded pools (like Zcash's z-addresses) where funds are pooled together, and when transactions occur, they draw from this pool. This ensures that individual transaction trails are obscured, adding another layer of privacy.

6. Regular Updates:

  • The protocol periodically updates the CRS and other parameters to ensure continued security and privacy.
Last Updated:
Contributors: Daniel Cukier