All Projects → ing-bank → Zkproofs

ing-bank / Zkproofs

Licence: lgpl-3.0
Original iteration of ING zero-knowledge range proofs. This repo has been archived as a prior works knowledge base, for latest Bulletproofs implementation please go to ing-bank/zkrp.

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to Zkproofs

Status React
a free (libre) open source, mobile OS for Ethereum
Stars: ✭ 3,307 (+936.68%)
Mutual labels:  ethereum
Edge React Gui
Edge Wallet React Native GUI for iOS and Android
Stars: ✭ 303 (-5.02%)
Mutual labels:  ethereum
Embark
Framework for serverless Decentralized Applications using Ethereum, IPFS and other platforms
Stars: ✭ 3,478 (+990.28%)
Mutual labels:  ethereum
Ethatomicswap
Ethereum atomic swap
Stars: ✭ 298 (-6.58%)
Mutual labels:  ethereum
Khipu
An enterprise blockchain platform based on Ethereum
Stars: ✭ 301 (-5.64%)
Mutual labels:  ethereum
Cryptolist
Curated collection of blockchain & cryptocurrency resources.
Stars: ✭ 3,501 (+997.49%)
Mutual labels:  ethereum
Uport Connect
Main uPort library for front end developers
Stars: ✭ 295 (-7.52%)
Mutual labels:  ethereum
Populus
The Ethereum development framework with the most cute animal pictures
Stars: ✭ 315 (-1.25%)
Mutual labels:  ethereum
Kyberswap
Codebase for KyberSwap that helps users convert tokens instantly and directly from their own hardware wallets, metamask and so on. No setup, No deposit, no withdrawal needed. Try it out on https://kyberswap.com or join telegram for developers https://t.me/KyberDeveloper.
Stars: ✭ 301 (-5.64%)
Mutual labels:  ethereum
Squeezer
Squeezer Framework - Build serverless dApps
Stars: ✭ 3,242 (+916.3%)
Mutual labels:  ethereum
Parity Bridge
Stars: ✭ 301 (-5.64%)
Mutual labels:  ethereum
Bamboo
Bamboo see https://github.com/cornellblockchain/bamboo
Stars: ✭ 300 (-5.96%)
Mutual labels:  ethereum
Ethersplay
EVM dissassembler
Stars: ✭ 304 (-4.7%)
Mutual labels:  ethereum
Web3.swift
A pure swift Ethereum Web3 library
Stars: ✭ 295 (-7.52%)
Mutual labels:  ethereum
Uniswap V1
🐍Uniswap V1 smart contracts
Stars: ✭ 313 (-1.88%)
Mutual labels:  ethereum
Solidity Repl
Ethereum Solidity REPL
Stars: ✭ 294 (-7.84%)
Mutual labels:  ethereum
Alpha
Follow the white rabbit 🐇
Stars: ✭ 304 (-4.7%)
Mutual labels:  ethereum
Contracts
[DEPRECATED] 0x smart contracts and tests.
Stars: ✭ 317 (-0.63%)
Mutual labels:  ethereum
Nmr
The Numeraire Ethereum Smart Contract
Stars: ✭ 316 (-0.94%)
Mutual labels:  ethereum
Requestnetwork
A JavaScript library for interacting with the Request Network protocol
Stars: ✭ 311 (-2.51%)
Mutual labels:  ethereum

THIS PROJECT IS OUTDATED AND HAS BEEN ARCHIVED! Please see ing-bank/zkrp for an updated version.

Please note that no maintenance is done on this code base. This means that it might contain serious security issues. Please dont't use this code. For an updated and secure version, please use ing-bank/bulletproofs.

Old README:

Zero Knowledge Proofs

This repository contains ING's Zero Knowledge Range Proof (ZKRP) and Zero Knowledge Set Membership (ZKSM). The current implementations are based on the following papers:

Getting Started

Highlights 🚀

  • Significantly more efficient than generic Zero Knowledge Proofs, like is the case of zkSNARKS.
  • Currently used to provide private transactions on Monero, zkLedger, Confidential Transactions and many others.

Zero Knowledge Range Proofs

One fundamental concern in blockchain technology is the confidentiality of the data. In order to reach consensus between all independent nodes, each node must be able to validate all transactions (for instance against double-spend), in most cases this means that the content of the transactions is visible to all nodes. Fortunately, several solutions exist that preserve confidentiality on a blockchain (private transactions, HyperLedger Fabric Channels, Payment Channels, Homomorphic encryption, transaction-mixing, zero knowledge proofs etc.).

The Zero Knowledge Range Proof allows the blockchain network to validate that a secret number is within known limits without disclosing the secret number. This is useful to reach consensus in a variety of use cases:

  • Validate that someone's age is between 18 and 65 without disclosing the age.
  • Validate that someone is in Europe without disclosing the exact location.
  • Validate that a payment-amount is positive without disclosing the amount (as done by Monero).

The Zero Knowledge Range Proof requires a commitment on a number by a trusted party (for instance a government committing on someone's age), an Ethereum user can use this commitment to generate a range proof. The Ethereum network will verify this proof.

Zero Knowledge Set Membership Proofs

Since ZKRP is a subcase of ZK Set Membership Proofs, the latter may be used as a replacement of ZKRP. This is interesting because for certain scenarios it performs better.

ZKSM allows to prove that some secret value is an element of a determined set, without disclosing which value. We can do the following examples using it:

  • Prove that we live in a country that belongs to the European Union.
  • Validation of KYC private data. For example, proving that a postcode is valid, without revealing it.
  • Private Identity Management Systems.
  • Other interesting applications like: Anti-Money Laundering (AML) and Common Reference Standard (CRS).

Bulletproofs

In 2017 researchers proposed the scheme called Bulletproofs to provide a more efficient solution for Zero Knowledge Range Proofs (ZKRP). It was specifically designed for Blockchain, where it is important to have short proofs. For instance, Bulletproofs allows to construct proofs whose size is only logarithmic with respect to the input size. Also, Bulletproofs doesn't require a trusted setup, solving an important problem in order to use this technology to solve practical problems. Previous solutions do require a trusted setup, what means that if the setup is not carried out in an appropriate way, then it would be possible to generate fake ZK proofs.

Bulletproofs can be used to solve the abovementioned problems and even more, because it is possible to use it for any computable function which requires privacy for its input data. Therefore, Bulletproofs is similiar to zk-SNARKs and zk-STARKs. However, this functionalities were not yet implemented and should be considered as future work. In particular, Bulletproofs seems an interesting building block to construct private smart contracts.

Contribute 👋

We would love your contributions. Please feel free to submit any PR.

License

This repository is GNU Lesser General Public License v3.0 licensed, as found in the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].