What is it:
ZeroPool is an anonymous multi-asset pool implemented as a smart contract with zero-knowledge proofs. The project we made on the hackathon also includes a browser-based client that uses already existing HDWallet on BabyJubJub curve and server relayer that do transaction batching;
Asset types and asset values within the pool are hidden from an external observer. That property makes all transfers and atomic swaps completely private
We also want to emphasize that it is NOT a MIXER, so it:
- Suites asset storing
- Supports arbitrary amount of assets (not fixed)
- Support atomic swaps between different type of assets
We use the UTXO model with zkSNARKs implemented in Circom. We use the following and crypto primitives to assemble our solution:
- Pedersen Hash,
- ECVRF (for nullifier),
- EDDSA (for UTXO signatures)
- MiMC-hash (only for optimization within pipeline)
What we did on hackathon:
We had some separate parts, of a solution made from before, such as BabyJubJub based HDWallet. All parts that we used are completely open-source.
During the hackathon, got an idea to assemble all of these separated primitives into a complete solution that most features privacy solutions for Ethereum at this time.
In this 48 hours we made:
- Develop a smart contract (Solidity)
- Browser-based JS client ( Angular, TypeScript) that able to generate zero-knowledge proofs.
- Made basic relayer implementation (Go Lang)
- Develop zkSNARK on Circom for atomic swaps
- Put formal idea description into a paper https://ethresear.ch/t/some-snarky-tricks-from-ethboston-zeropool-under-the-hood/6115