Tax-Compliant Private Trades on Osmosis. Paper
web
: Web democontracts
: CosmWasm contractscircuits
: Circom circuits, script for building proving/verification keysgenerate-data
: Generate data for SNARK proofsgenerate-proofs
: Generate SNARK proofs
Whirlwind allows for temporarily private trades on Osmosis until withdrawal.
- User deposits funds from main wallet into Whirlwind via an anonymity pool.
- They can now swap privately using a burner wallet. (Link between wallets is hidden from public)
- Once the user is done swapping, they may withdraw funds back to the main wallet. (At this stage the link between wallets is revealed)
The contract fails if:
- It does not preserve anonymity until withdrawal
- You cannot track where the original depositor withdrew funds to (becoming a regulatory disaster)
- User can steal pool's funds
- Contract loses user's funds
Vectors of failure:
- SNARK verification. Each verifier has different risks associated
- Ownership hash tampering
- Pool whitelisting and updates
- Withdrawals (is it correct to source)
- Output denom should be inferred from the passed in routes
- Will Osmosis support CW-20s?
- Bigger root history size
- Handle any string for wallet address input