Tutorial

In this section, we describe how to use the pallet for privacy-preserving transactions.

You can check Frequent Errors when the error happens.

Abstract

The privacy-preserving transactions consists of several pallet components. We roughly explain what kind of role for each pallet has.

pallet-plonk

plonk is a zk-Snarks scheme and allows us to prove that the computation was done correctly. We perform transaction on off-chain and generate the proof. The blockchain verifies the proof and approve the transaction. We define the constraints circuit for confidential transfers and confidential smart contracts by this pallet.

pallet-encrypted-balance

Users balances are encrypted by default. We use additive homomorphic arithmetic to hide the integer in transaction. Combining original pallet-balance and ElGamal encryption and we implemented pallet-encrypted-balance. This pallet can't be used only by this self, because this doesn't check the validity of additive homomorphic arithmetic.

confidential_transfer

Users can transfer without being known actual amount by others with this pallet. plonk checks the confidential transfer constraints and pallet-encrypted-balance performs the additive homomorphic state transition.