A Prototype for a Central Bank Digital Currency with Support for Cash-Like Privacy
This repository is work in progress
This prototype implements a subset of the features of the CBDC proposal by Matthias Babel, Alexander Bechtel, Jonas Gross, Benjamin Schellinger, and Johannes Sedlmeir.
So far, the prototype implements the Merkle-tree for storing the commitments, a list for the nullifiers, and the basics for
account and transaction management. In addition, it supports fully private transactions while respecting
account transaction limits, ensuring compliance by design.
This is achieved by implementing generic zero-knowledge proofs (zk-SNARKs) using the iden3 libraries circom and snarkjs.
For information on how zero-knowledge proofs work, https://github.com/matter-labs/awesome-zero-knowledge-proofs is an awesome source of material.
The academic paper is available here.
git clone https://github.com/applied-crypto/cbdc --recurse-submodules
cd cbdc/cbdc
npm install
node test.js