ZyKloon: zoom into privacy like a typhoon

The problem ZyKloon solves

ZyKloon is a solution that allows anonymous transactions between accounts that belong to the same sismo vault.

The main idea is that within a given epoch (which we have set to 1 week), users can deposit a fixed amount of funds to the vault (i.e. 0.1 ether). This deposit emits an event, which is picked-up by our Sismo group generator, which adds the depositor address to the ZyKloon depositors group. After the epoch is over, users can withdraw the deposited funds (to another address) by proving via onchain ZKConnect that they, in fact, belong to the group.

Challenges we ran into

The main issues we ran into were mostly conceptual: how do we enable anonymous transactions powered by Sismo ZKConnect without creating obvious links between sender and receiver? After discussion with the Sismo team, we discarded several architectures and followed their advice regarding an epoch-based lock. Why? Because the epoch variable is used as the namespace, which allows to obtain different proof identifiers for the same combination of sender address, receiver address and application (ZyKloon).

An additional challenge was the short amount of time given in this hackaton, so the implementation showcased here may be (in fact) a bit "hacky".