Tsunami
Tsunami is a protocol for PRIVATE token streaming at a per-second rate - without revealing information about the stream or its participants. Powered by zkSNARK tech.
Created on 3rd December 2022
•
Tsunami
Tsunami is a protocol for PRIVATE token streaming at a per-second rate - without revealing information about the stream or its participants. Powered by zkSNARK tech.
The problem Tsunami solves
Token streaming on per-second basis as a payroll or grant has already been picking up and showing uses. That includes, for example let's say a DAO funding a project while having a hold of a part of promised granted amount over time as stream. As using a stream allows DAO to stop stream if funds are misused. However, with increasing concerns over privacy on public blockchain & not-so-friendly regulations not every DAO may want to stream funds to a project publicly. Some may have concerns about the funded-team even if team is building a public good! But that doesn't mean DAO or any other party doesn't want to fund it!
Tsunami allows DAOs or any entity to start a stream to some other party. Apart from duo-party (sender & receiver) being anonymized, stream parameters like - stream rate, start & stop time of stream remain private between sender & receiver. Preserving privacy of sender DAO & receiver team allows for innovations to thrive (esp. in other privacy tech) without constantly be concerned of annoying implications that stop it.
Challenges I ran into
Some major hurdles were:
- Coming up with a logic/design that preserves privacy with token streaming as there's nothing like it yet currently. We came up with a approach which we call - Stream as a UTXO - where each stream is a UTXO in a Merkle tree. Only two parties - sender or receiver - can spend this UTXO to create a new one. But each party is restricted to what they can change in newly created UTXO (e.g. receiver can change checkpoint time of last withdraw).
- zkSNARK tooling is not very mature yet - so debugging errors related to Circom circuits are hard. It required some manual debugging to dig into spot where errors originated in the circuit.
- Unlike other UTXO based apps - a stream UTXO should be able to spent by two parties - either Sender or Receiver. So to decrypt the encrypted notes (UTXOs) a shared secret key is calculated with one party's shielded private key & other's shielded address or public key. So that both parties can decrypt the encrypted note & use it to spend it conveniently.
Tracks Applied (3)
CoinDCX
CoinDCX
Gnosis Chain
Gnosis Chain
Shardeum
Shardeum
Technologies used
Cheer Project
Cheering for a project means supporting a project you like with as little as 0.0025 ETH. Right now, you can Cheer using ETH on Arbitrum, Optimism and Base.