Inspiration
We aim to bring private transactions to the Clover blockchain. So we have built a non-custodial on-chain privacy solution based on zkSNARKs. It breaks the on-chain link between the sender and destination address.
What it does
Sender, recipient, and smart contract are here:
- To make a deposit, the sender generates a secret and sends its hash along with the deposit amount to the smart contract.
- The contract accepts the deposit and adds the hash to its list of deposits.
- When some number of deposits is happened (anonymity set is big enough), the recipient decides to make a withdrawal. They should provide proof that they own a secret to an unspent deposit. zkSnark technology allows that to happen without revealing which exact deposit corresponds to this secret.
- The smart contract will check the proof and transfer deposited funds to the recipient's address.
So an external observer will be unable to determine which deposit this withdrawal came from.
How we built it
Clover smart contract is used as backend. All functionality and data are stored in the Clover blockchain.
Zk part of the project is implemented using circom and wasmsnark libraries. These libraries generate wasm prover and verifier which allow generating and verifying proofs in web browser effectively.
Client is the static web page which connects with the Clover blockchain using Likelib.
Challenges we ran into
As none of us didn't work with Clover blockchain before, it was challenging for us to interact with it using local Clover node.
What's next for Hiding Pot
We are going to add tokens support and improve UX.
Built With
- angular.js
- circom
- clover
- solidity
- typescript
- web3
- websnark
- zk-snark


Log in or sign up for Devpost to join the conversation.