Aegis
A privacy-focused shielded pool implementation using Zero-Knowledge Proofs (ZKPs). It enables private transactions with verifiable commitments and nullifiers in a blockchain ecosystem.
Screenshots



Problem Statement
This project is a cryptographic shielded pool framework leveraging @protokit Zero-Knowledge Proofs (ZKPs) to facilitate secure and private transactions. It implements a JoinSplit transaction model, where users can privately deposit, transfer, and withdraw funds while maintaining verifiable integrity and privacy.The system uses a Merkle tree structure to track commitments and nullifiers, ensuring spent assets cannot be reused. It supports input-output balance verification, cryptographic nullifier tracking, and efficient note management. Integration with a runtime module provides seamless blockchain operation, including setting roots and processing transactions with enforced privacy guarantees.
Solution
The project is built using the Protokit Framework from Mina.Technologies:o1js: For cryptographic primitives like Poseidon hash, Merkle trees, and key handling (private and public keys).Merkle Tree: Manages transaction commitments and nullifiers with tree-based proofs of inclusion.Proto-kit Module SDK: Provides runtime hooks and blockchain state handling for integrating the shielded pool.Components:JoinSplitTransaction:Encodes the ZKPs logic for verifying inputs, outputs, and nullifiers.Proves input-output balance while maintaining confidentiality of amounts and participants.ShieldedPool Runtime:Processes transactions by verifying proofs, validating roots, and recording nullifiers to prevent double-spending.Emits events for nullifiers to track changes in state.NoteStore:Manages notes (spendable assets) and integrates with Merkle tree for inclusion proofs.Handles note creation, addition, and nullifier management.Hacky Details:A customIndexedMerkleTreewas created for precise leaf handling and proof generation, streamlining root updates and witness creation.TheNoteabstraction simplifies cryptographic encoding of user-specific transactions, making it easy to work with commitments and nullifiers programmatically.Integration:Combined with a blockchain testing environment (TestingAppChain) to simulate transaction workflows, enabling end-to-end validation.UtilizedProto-kitfor seamless runtime deployment and proof-of-concept testing.
Hackathon
ETHGlobal Bangkok
2024
Prizes
- 🏆
Best Mina application or library built using Protokit2nd place
Mina Protocol
Contributors
- maht0rz
65 contributions
- rpanic
16 contributions
- ryardley
13 contributions
- hmzakhalid
12 contributions
- turbobot-temp
8 contributions
- asimaranov
1 contributions