# Research

DarkFi maintains a public resource of zero-knowledge and math research
in the [script/research](https://github.com/darkrenaissance/darkfi/tree/master/script/research) directory of
the repo.

It features simple sage implementations of zero-knowledge algorithms
and math primitives, including but not limited to:

* [ZK](https://github.com/darkrenaissance/darkfi/tree/master/script/research/zk)
    * [bootle16](https://github.com/darkrenaissance/darkfi/blob/master/script/research/zk/bootle16.py)
      (precursor to sonic)
    * [sonic](https://github.com/darkrenaissance/darkfi/blob/master/script/research/zk/sonic.sage)
    * [plonk](https://github.com/darkrenaissance/darkfi/blob/master/script/research/zk/plonk.sage)
    * [halo1](https://github.com/darkrenaissance/darkfi/blob/master/script/research/zk/halo1.sage) and
      [halo2](https://github.com/darkrenaissance/darkfi/blob/master/script/research/zk/halo2.sage)
    * [curve trees](https://github.com/darkrenaissance/darkfi/blob/master/script/research/zk/curve_tree.sage)
    * [FFT](https://github.com/darkrenaissance/darkfi/tree/master/script/research/zk/fft)
    * [groth16](https://github.com/darkrenaissance/darkfi/tree/master/script/research/zk/groth16)
    * [bulletproofs](https://github.com/darkrenaissance/darkfi/tree/master/script/research/zk/bltprf)
* [Poseidon hash](https://github.com/darkrenaissance/darkfi/tree/master/script/research/poseidon)
* [x3dh](https://github.com/darkrenaissance/darkfi/tree/master/script/research/x3dh)
  double ratchet algorithm used in signal.
* [Various EC math](https://github.com/darkrenaissance/darkfi/tree/master/script/research/ec)
  such as valuations, riemann-roch basis, hyperelliptic curves, divisor reduction.
