A ZK shielded pool with programmability for derivative trading on Optimism
We are trying to solve the problem of copy trading from on-chain derivative exchanges to enhance enhance privacy in the Ethereum ecosystem. To solve this issue, we build a shielded pool on top of Optimism. We can then shield the assets on Optimism into zkAssets, which is a programmable private assets with a reusable public address. Next we can enable zkassets to transact and interact with smart contracts (going from account->UTXO model). For zk proof generation, we are using Metamask Snaps. So with this infrastructure, the the on-chain trading platfrom can have a zkTrade option, whereby both parties doing transactions cannot see the addresses, while the whole process has the same experiences as the existing on-chain transaction.
We used zkSnark (Groth 16) to build this shielded pool, but we didn’t have enough time to write the circuit but the programmable zkAssets idea is proven. The specific design can be referred to this spec (https://github.com/Manta-Network/spec/blob/main/manta-pay/spec.pdf). The prove generation can be on metamask snaps. The public assets remains on Optimism, the zkAssets is saved in the zkAddress on metamask snaps. For the wallet interaction, we built a wallet interface on the trading page to show both public assets and zkAssets. In regard of the on chain contracts, to mimic the complete trading algorithm on chain is not our top priority and time consuming, thus we choose to simply implement the logic in the frontend just to demonstrate the ideology. We decided to build this on Optimism because of the scalability and composability, which Aztec connect doesn’t have right now. The shielded pool can empower Optimism with privacy. Also the derivative trading platform can help Optimism bring institution funds into the layer2 once this is delivered as a functional product. Our team was light on personnel so we ended up focusing on the specific problem, and who would actually use the platform. We created an interface in the shortest amount of time possible and stayed up all night, which was a first for us.