Skip to content

A Prototype for a Central Bank Digital Currency with Support for Cash-Like Privacy

Notifications You must be signed in to change notification settings

applied-crypto/cbdc

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This repository is work in progress

A Prototype for a Central Bank Digital Currency with Support for Cash-Like Privacy

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. Further we implemented the integration of a digital ID and a revocation check of it for each transfer.

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.

Roadmap

  • Semi-private transactions
  • Fully transparent transactions

Install

  • Install nodejs(@v16.0.0) and npm(@7.10.0) (for instructions, see, e.g., https://heynode.com/tutorial/install-nodejs-locally-nvm/)
  • Clone this repository including submodules: git clone https://github.com/applied-crypto/cbdc --recurse-submodules
  • Go to the cbdc directory: cd cbdc/cbdc
  • Install dependencies: npm install
  • Run an example transaction: node test.js

About

A Prototype for a Central Bank Digital Currency with Support for Cash-Like Privacy

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published