Zero-Knowledge Proof (ZKP)
A Zero-Knowledge Proof (ZKP) is a type of cryptographic proof that provides users with a higher degree of privacy when engaging in digital transactions. In essence, ZKPs enable one party to prove to another party that they know a specific value, without conveying any other information apart from the fact that they know that value. In short, these proofs allow for information to be accurately verified without sharing any details about the underlying information and the identities of the transaction participants.
Zero-Knowledge Rollup (zk-Rollup)
A Zero-Knowledge Rollup (zk-Rollup) — also known as a Zero-Knowledge Proof Rollup or ZKR — is a Layer-2 scaling solution that uses zk-SNARKs (privacy-based cryptographic proofs) to allow blockchains to bundle transactions into one computation prior to execution by using a smart contract. This secure scaling solution increases transactional throughput while also enhancing protocol privacy. StarkWare, Loopring, Hermez, and Aztec are blockchain networks that use zk-Rollups. Sometimes used in unison with decentralized exchange (DEX) protocols, implementing zk-Rollups on some blockchains can lead to lower transaction fees, improved liquidity, enhanced non-custodial crypto ownership, and more.
A Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (zk-SNARK) is a type of cryptographic proof used to ensure privacy on blockchain-based distributed ledger systems. It works by proving that one party is in possession of specific data without actually revealing the data to the network by using a secret key before the transaction is broadcasted. zk-SNARKS became prominent with Zcash, Monero, and other privacy-based blockchain protocols.
A z-address is a 'shielded,' or privacy-enhanced Zcash address. Transactions between one z-address and another do not reveal the parties' addresses, the transaction amount, or the contents of the transaction's memo field on the blockchain. A z-address utilizes zero-knowledge-proof cryptography to achieve these features. z-addresses are interoperable with transparent z-cash addresses, which reveal the transacting parties' addresses, transaction amount, and the contents of the transaction's memo field. Users can therefore send transactions from private address to private address (two z-addresses), from transparent address (t-address) to private address (z-address), or from private address (z-address) to transparent address (t-address). z-addresses employ zk-SNARK cryptographic proof technology.
Zcash is a privacy-focused cryptocurrency project which aims to provide efficient, private transactions for its users via its shielded addresses feature. The Zcash protocol utilizes its native token, ZEC, to facilitate these transactions.
Hyperledger Fabric and ZKP
Hyperledger Fabric 1.3 and later versions are providing privacy preserving attribute based authentication through Identity Mixer components. It is integrated into the Membership Service Provider (MSP) services. Identity Mixer is a cryptographic protocol suite for strong privacy-preserving authentication, signatures, and transfer of certified attributes.
Identity Mixer systems allow for efficient zero-knowledge proofs (ZKP) of possession of a signature and the corresponding attributes. It does not reveal the signature and (selected) attribute values themselves, but only prove that the signature on some attributes is valid.
There are three actors involved in an Identity Mixer flow: user, issuer, and verifier. Following are the components in the implemented approach.
- The Fabric SDK is the API for the user.
- Fabric provides two possible Identity Mixer issuers: Fabric CA for production environments or development, and the 'idemixgen' tool for development environments.
- The verifier is an Idemix MSP in Fabric.
The Identity Mixer implementation in the Fabric SDK can be found in the following GitHub repository.