Skip to content

Architecture of the SNARK-friendly STM library #2763

@jpraynaud

Description

@jpraynaud

Why

Building a SNARK friendly STM library requires that the following elements cohabit:

  • 2 signature schemes (BLS multi signature and Schnorr signature)
  • 2 commitment schemes (Merkle trees with different leaves, or Merkle tree and Pedersen commitment)
  • 2 proof systems (Concatenation and SNARK)

We have the following constraints:

  • Do not introduce any breaking change to the stable implementation for Concatenation proofs
  • Support the optional activation of the unstable implementation for SNARK proofs (via feature)

What

Design an architecture and an implementation plan for the SNARK-friendly STM library.

How

  • Design an ideal architecture for the SNARK friendly STM
  • Prototype a non working implementation of this architecture
  • Prepare the implementation path for the SNARK-friendly STM library

Constraints to solve:

  • Support activation of the SNARK signature by activation of a feature
  • Do not change the stable Concatenation proof system to provide full backward compatibility for:
    • Signer node (key registration and signature diffusion messages)
    • Client node (aggregate signature verification message)
  • Decouple BLS keys from signer registration
  • Support different types of leaves in Merkle tree
  • Support for eventual different commitment scheme for SNARKs
  • Support for a an Initializer which creates Single signatures for both BLS and Schnorr
  • Support for a SignatureAggregator (aka Clerk) which creates either Concatenation proof or SNARK proof
  • Support for a Basic verifier which does not check the registration of the signers (do we want to keep that feature?)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions