Tsunami

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

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:

  1. 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).
  2. 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.
  3. 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

CoinDCX

Gnosis Chain

Gnosis Chain

Gnosis Chain

Shardeum

Shardeum

Shardeum

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.

Discussion

Builders also viewed

See more projects on Devfolio