zkFi

zkFi

A middleware solution designed to facilitate seamless integration of privacy between blockchain and protocols while remaining compliant with strong composability.

The problem zkFi solves

After solving the problem of scaling for blockchain, privacy is the next biggest problem to solve to onboard the next billion users and for mainstream adoption of decentralized applications. People don't always want their online activities, including sensitive financial, online purchase activity, or medical data, to be visible to everyone, just like they don't want their purchases on Venmo, google pay, or other payment apps to be visible to everyone. Imagine a setting on Venmo where everyone can see every purchase — but magnified for all aspects of your digital life.

This is also applicable to businesses, as it would be challenging to operate if contracts, capital investments, and salaries were made visible to everyone. For enterprises considering doing business on blockchain-based systems, the transparent reality of an architecture like Ethereum has been a non-starter.

How would you feel, if your live bank balance was always visible to those around you? How would you feel, if everyone around you could see where you spend your money? Well...That’s exactly how everyone in Web3 feels right now.
Most blockchains lack privacy and are only pseudonymous but to make DeFi a viable alternative to traditional finance, there is a need for privacy in current user experience with strong compliance.

Vitalik Buterin also recognized the significance of privacy emphasizing privacy(https://vitalik.eth.limo/general/2023/06/09/three_transitions.html) as one of the pillars of successful blockchain adoption. Buterin had also proposed concepts like stealth addresses(https://vitalik.ca/general/2023/01/20/stealth.html) previously, allowing transactions on Ethereum to occur anonymously between parties. Developing a robust privacy infrastructure is crucial for enabling secure and confidential transactions and attracting a wider user base, including businesses and institutions.

Challenges we ran into

Problems:
-> making support for multi-asset private tx as to support further defi apps (ex uniswap LP )
-> decoupling tx signing from proof gen so that support for snaps
-> incorporating stealth address protocols & finding signature schemes that support/complements it
-> allowing the flexibility of design for transactional assets for the integrating protocol
-> prevent called proxy from transacting any un-intended asset

Solution in order:
-> modified circuit design to take input array of asset IDs to transact & corresponding tx data & constraint them accordingly
-> modify circuit design to include in-circuit verifying of an input signature (signed by users shielded account)
-> replace EdDSA signature scheme (prev. used) to use Schnorr signature for tx signing & verification. Schnorr goes well with the stealth address generation protocols
-> introduce/allow integrating protocol to write a simple proxy contract for protocols such that proxy conforms to a standard interface. Proxy can handle passed assets however it wants & simply return any output asset of defi operation.
Decouple pooled asset to another contract - "vault" & during tx pool contract only holds transacting assets (req. from vault after verification) so that any contract pool calls can only spend asset it currently holds

Discussion