Taiga is a framework for generalized shielded state transitions. This repository contains the implementation of Taiga in Rust. It is a WIP project and cannot be used in production yet.
- How Taiga works (with code examples)
- Cryptographic details of Taiga
- Current performance details
- Choice of ZK-proof implementation. Currently, we use the PLONK implementation of ZK-Garage. The current choice of proof system is not final and might change, as well as the curves we chose:
- The main curve is
bls12_381_new
, a different curve from the well-knownbls12_381
. Poseidon hash circuits are small for the base field and the scalar field of this curve. - The inner curve is
ed_on_bls12_381_new
. Its base field is the main curve scalar field and it has a small degree endomorphism enabling faster scalar multiplications compared toed_on_bls12_381
. - The outer curve is
bw6_764_new
. Its scalar field is the base field of the main curve.
- The main curve is
To generate the Taiga book, run:
cd book
mdbook serve --open
We provide several VP examples. To generate VP example proofs and verify them, run:
cargo test vp_example --release
- Blake2 hash circuits and all of the proofs that use blake2s
- The main curve base field Poseidon hash circuit
- Proper note encryption
- Proper blinding algorithm