From Esperanto, miksi (miks·i): to mingle, to blend, to mix, to shuffle
Ethereum trustless zk-mixer. Computations and Merkle tree reconstructions are done offchain and then proved inside a zkSNARK to the smart-contract. This approach requires only ~325.000 gas to deposit, compared to ~1M gas for an onchain computation approach (as currently implemented in tornado.cash).
WARNING: experimental code, use only in Göerli testnet. Do not use with real ETH.
Under the hood, we'll generate a zkSNARK proof that proves you know a secret for a commitment. And that this commitment has been correctly added to the MerkleTree containing all the commitments in the mixer.
We'll send this proof, along with the new commitment and the hash of the updated MerkleTree, to the miksi smart-contract. The contract will then verify the proof. If the proof is valid, both the new root and the commitment will be added to the contract, and the ETH will be deposited.
Under the hood, we'll generate a zkSNARK proof that proves you know a secret for a commitment in the MerkleTree that you wish to withdraw from.
We'll send this proof, along with your withdrawal address, to the miksi smart-contract. The contract will then verify the proof. If the proof is valid, and it's the first time it's been correctly verified for this commitment, the contract will send the associated ETH to your withdrawal address.
Please connect Metamask
Specs and core code: https://github.com/arnaucube/miksi-core
What is a mixer? A mixer is a tool to increase transaction privacy by breaking the on-chain link between the recipient and destination addresses. It uses a smart contract that accepts ETH deposits that can be withdrawn by a different address. Whenever a new address withdraws ETH, the link between the withdrawal and the deposit is obfuscated.