Polkadot Treasury: Implement Privacy Transfer Primitives and Application

Short Description

In this proposal, we are going to implement privacy transfer primitives and applications, specifically confidential transfers and anonymous transfers. The confidential transfer hides transfer amount and the anonymous transfer hides transfer amount and relevant address. These functionalities are mainly realized by homomorphic encryption and zero knowledge proof. By implementing these functionalities and applications, not only whole Polkadot network users can use privacy transfer but also Polkadot developers can use latest cryptographic libraries compatible with no_std environment and parity scale codec.

architecture

Problem Statement

Privacy is one of the most important blockchain missing pieces because all transaction history is public on blockchain. Everyone knows what kind of NFT you have and your account balance. The more blockchain closest to daily life, the more privacy users want. Polkadot needs a simple to use and trustless privacy payment system. We also think it's a problem that there is no fully Polkadot compatible homomorphic encryption and zero knowledge proof libraries. We have been working on four web3 foundation grants programs related to zero knowledge proof. Everytime we started the programs, we needed to make all related libraries compatible with Polkadot and it took more than half of our workload of the whole development process. It may make other privacy projects hesitate to work on Polkadot. We would like to address these problems through this proposal.

Proposal

In this proposal, we are going to implement privacy transfer functionalities and the latest cryptographic scheme. The privacy transfer consists of client wallet, cryptographic primitives and encrypted on-chain storage, verification function. The on-chain users balances are encrypted by default with homomorphic encryption. When users transfer their assets, they generate the proof which proves the validity of state transition and correct encryption. The proof is attached to the transaction, on-chain verification checks the proof and executes the state transition. For criminal prevention, the scheme can use rerandomize signatures to make transactions auditable as optional. We need to think about privacy with a combination of auditability. To force exchanges to send transactions with rerandomize signatures, we can prevent money laundering.

How does this proposal change the network

Polkadot developers, users and investors get benefits from this proposal.

Firstly, we are going to implement zero knowledge proof circuit language and related primitives. These libraries are totally compatible with Polkadot so they can use these functionalities on the Substrate blockchain and build new privacy projects on top of these.

Secondly, we are going to implement privacy transfer transactions functionality and wallet client. These libraries are public and users can use it and send privacy transfer transactions. They can hide the transfer amount and even the relevant address.

Finally, our project focuses on Polkadot. There are quite a few projects working on privacy blockchain and there are no official libraries related to privacy transaction components totally compatible with Polkadot. The zero knowledge proof is also used for scaling. This makes Polkadot far easier to support privacy and scaling functionality. More users and projects will want to use Polkadot instead of other blockchains.

Why Polkadot Network?

The most significant feature of Polkadot is that we can customize the blockchain itself. If we try to implement privacy transfer, we would need to implement a layer 2 solution on Ethereum or build blockchain from scratch. Former one is not a good option from usability and workload perspective. If users use a layer 2 solution, they would need to deposit their asset to contract and the layer 2 node synchronizes it to layer 2. After that, users request transactions on layer 2 and layer 2 node synchronize with the main chain. Then the recipient can withdraw assets from the contract. It’s quite complicated. Latter one is not a good option from security and feasibility. Building blockchain from scratch needs a lot of development cost and computation to maintain the network. On the contrary to these, by implementing complex functionalities as built-in of blockchain and, optimizing data structure and arithmetic domain, not only we can keep architecture simple but also build use case specific blockchain. The more unique blockchains are connected to Polkadot, the more value Polkadot has. Combination of unique functionality increases Polkadot capabilities exponentially. It will be the best differentiation from other blockchains. By implementing cryptographic primitives, it drives other projects to create new things on Polkadot.

Gantt Chart

gantt_chart

Note

Hello there, I am Ash.

This proposal can be found following.

https://docs.google.com/document/d/14RM72brMzxUR0I8BrrRa40RussjjDaiB/edit?usp=sharing&ouid=116197126832835062977&rtpof=true&sd=true

I would appreciate it if you could check, comment and post somethings to improve. Thank you.

Up
Comments
No comments here