Introducing zkAssets and zkAddresses
A core part of Manta Network’s infrastructure towards building a privacy-first future
Manta’s mission is to use zero-knowledge proofs to protect users’ privacy in Web3. We strongly believe privacy is a necessity, not only a “good to have”, especially as Web3 adoption is increasing.
Currently, many fully public on-chain applications need a private counterpart:
To bring this vision one step closer to reality, we are introducing two fundamental concepts on Manta: zkAddresses and zkAssets.
What are zkAssets?
zkAssets are a new crypto asset class where privacy, integrity, and access policy are guarded by zero-knowledge proofs. It has the following properties:
- Flexible Asset Types: zkAssets include flexible asset types, for example, fungible tokens (e.g. ERC20 like tokens), non-fungible tokens (e.g. ERC721, ERC1155 like tokens), non-transferable non-fungible tokens (a.k.a soul bound tokens).
- Privacy by Default: zkAssets are private by default (a.k.a. zero-knowledge) on chain, which means that the asset holder’s address, the nomination of the assets of each holder, as well as the type of the assets are encrypted on chain.
- Disclosing at Will: zkAssets support disclosing provable assets information with the assets holders permission. More specifically, the asset holders can disclose the asset transaction history to auditors without having to disclose the spending secret key. The asset holders are also able to selectively disclose the assets information that can be verified using zero-knowledge proofs.
- Configurable Asset Policy: zkAssets issuer can customize the access control policies of a zkAssets (see the figure), for example, KYC rules, access control policy like to have or not have the ability to blacklist the hacked assets (Note: espresso systems also have a proposal for CAP, however, manta’s cap is a multi-circuits implementation compared with expresso’s monolithic circuit implementation).
Compared with existing crypto assets (the only option they have are to be fully public), zkAssets bring privacy to asset holders, at the same time, make auditing and opt-in regulation compliance easy to achieve.
zkAddress System: the public key infrastructure for zkAssets
zkAddress system is the public key infrastructure for zkAssets. It consists of 3 parts:
- Spending secret: it is generated randomly (for example, by using BIP39 mnemonics), and derives two other keys, zkAddress, and viewing key. Spending secret is needed to generate the zero-knowledge-proof to transfer zkAssets.
- zkAddress: the public key for the zkAssets. A zkAddress is needed to receive any kind of zkAssets. Note, zkAddress is not disclosed in any zk-transaction on-chain, thus, an observer cannot associate a zk-transaction on-chain with an zkAddresses unless the sender or the receiver of the transaction grants the viewing key to the observer.
- Viewing key: an access token to view the full transaction history of a zkAddress. As its name suggests, it is read-only. A viewing key can only inspect the transaction history rather than spend zkAsset of any zkAddress.
What is the difference between zkAddress and public addresses that Polkadot/Ethereum uses?
zkAddress (and its associated spending secret and viewing keys) serves and only serves the zkAssets. It uses a different (zero-knowledge proof friendly) cryptographic construction to support viewing keys and to make the zero-knowledge proof generation efficient. Thus, we cannot reuse the existing Ethereum or Polkadot public addresses to support zkAssets. Additionally, there is no binding (or mappings) between the zkAddress and Ethereum/Polkadot public addresses.
MantaPay: the transportation layer for zkAssets
We are excited to launch MantaPay on Calamari Network (Manta’s canary network on Kusama). MantaPay is the transfer protocol for zkAssets. Initially, MantaPay on Calamari will support 3 zkAssets: zkKMA, zkMOVR, zkKSM, with zkACA, zkAUSD, zkLDOT and more parachain and bridged assets in the launch pipeline. You can get a sneak preview of MantaPay on Dolphin Testnet V2.
With the launch of MantaPay, you can convert your Kusama/Parachain assets to zkAssets and transfer zkAssets among zkAddressses. This is the most important first step to bring the zkAssets to the Web3 world. We will publish a deep dive article on MantaPay in the coming weeks!
The Future of zkAssets = the Future of Privacy
MantaPay is the foundational transportation layer of zkAssets. However, Manta will be growing to be more than just a transferring protocol. In fact, the Manta team has, from the beginning of 2022, begun to develop the programming layer of zkAssets, which give zkAssets programmability and composability.
In the not too distant future, developers can deploy zkApps on Manta for DeFi, Gaming, DAO and many other cool applications that leverage MantaPay/zkAssets/zkAddress as primitives. We are happy to share the zkAsset roadmap in the coming months.