Our system is simple: users (e.g., a bank customers) are directly connected to privacy nodes (i.e., a high-performance single-node EVM blockchain). Each of the privacy nodes, is connected to a private network hub, which effectively acts as a bulletin board for all privacy nodes to leverage as a universal (encrypted) messaging layer and verification layer. Issuer(s) are the managers/admins of specific assets on the private network hub. Optionally, there is an auditor that oversees (some of) the transactions that take place in the network. A more formal protocol description is documented here.
---
config:
theme: redux
layout: elk
look: handDrawn
---
flowchart LR
UA(["User(s)"])
UB(["User(s)"])
UC(["User(s)"])
PLA(["Privacy Node"])
PLB(["Privacy Node"])
PLC(["Privacy Node"])
B(["Blockchain"])
I(["Issuer"])
A(["Auditor"])
PLA & PLB & PLC <-.-> B <-.-> I & A
UA <-.-> PLA
UB <-.-> PLB
UC <-.-> PLC
---
config:
theme: redux
layout: elk
look: handDrawn
---
flowchart TD
A(["Enygma Payments"])
Symmetric("Symmetric Crypto")
Asymmetric("Asymmetric Crypto")
A --> Symmetric & Asymmetric & ZK("Zero-Knowledge Proofs") & Commits("Commitments")
Asymmetric --> View("View Keypair") & Spend("Spend Keypair")
Symmetric --> AES("Authenticated Encryption<br>(AES-GCM-256)") & HKDF("Key Derivation Function<br>(HKDF)")
View --> MLKEM("Lattice-based<br>(ML-KEM)")
Spend --> Hash("Hash-based<br>(Poseidon)")
ZK --> snarks("ZK-SNARKs<br>(Groth16)")
Commits --> pedersen("Pedersen Commitments")
pedersen --> Babyjubjub("Elliptic Curve Crypto<br>(Baby Jubjub)")
Note: We intend to update the ZK module to use a quantum-secure ZK scheme, which will make the entire system quantum-secure (as opposed to quantum-private). We also intend to leverage the ability of having Single-Server Private Outsourcing of zk-SNARKs to allow clients to submit ZK proofs to the Private Network Hub component of the system without incurring in unnecessary hardware costs.
To show that our protocol runs on commodity hardware and does not come with extreme hardware requirements, we measured the performance of our design using a Mac mini M1 from 2020 with 16GB of memory. We obtained the following numbers:
- Constraints: 82086
- (Groth16) Prover time: 334.28 ms
- (Groth16) Verifier cost: 389578 gas
- Rayls: A Novel Design for CBDCs, published at 45th IEEE Symposium on Security and Privacy 2024 (Poster Track)
- Rayls: A Novel Design for CBDCs, published at The 6th Workshop on Coordination of Decentralized Finance (CoDecFin) 2025
- Rayls II: Fast, Private, and Compliant CBDCs, published at Financial Cryptography in Rome (FCiR) 2025