diff --git a/pkgs/development/ocaml-modules/tezos-bls12-381-polynomial/default.nix b/pkgs/development/ocaml-modules/tezos-bls12-381-polynomial/default.nix new file mode 100644 index 000000000000..9a157c4db0f8 --- /dev/null +++ b/pkgs/development/ocaml-modules/tezos-bls12-381-polynomial/default.nix @@ -0,0 +1,36 @@ +{ + lib, + fetchFromGitLab, + buildDunePackage, + bls12-381, + data-encoding, + alcotest, + alcotest-lwt, + bisect_ppx, + qcheck-alcotest, +}: + +buildDunePackage rec { + pname = "tezos-bls12-381-polynomial"; + version = "0.1.2"; + duneVersion = "3"; + src = fetchFromGitLab { + owner = "nomadic-labs/cryptography"; + repo = "privacy-team"; + rev = "v${version}"; + sha256 = "sha256-HVeKZCPBRJWQXkcI2J7Fl4qGviYLD5x+4W4pAY/W4jA="; + }; + + propagatedBuildInputs = [bls12-381 data-encoding]; + + checkInputs = [alcotest alcotest-lwt bisect_ppx qcheck-alcotest]; + + doCheck = false; # circular dependencies + + meta = { + description = "Polynomials over BLS12-381 finite field"; + license = lib.licenses.mit; + homepage = "https://gitlab.com/nomadic-labs/privacy-team"; + maintainers = [lib.maintainers.ulrikstrid]; + }; +} diff --git a/pkgs/development/ocaml-modules/tezos-bls12-381-polynomial/plompiler.nix b/pkgs/development/ocaml-modules/tezos-bls12-381-polynomial/plompiler.nix new file mode 100644 index 000000000000..0f618f0d1e6b --- /dev/null +++ b/pkgs/development/ocaml-modules/tezos-bls12-381-polynomial/plompiler.nix @@ -0,0 +1,40 @@ +{ lib +, buildDunePackage +, hacl-star +, bls12-381 +, tezos-bls12-381-polynomial +, data-encoding +, hex +, stdint +, ff +, mec +, alcotest +, qcheck-alcotest +, bisect_ppx +}: + +buildDunePackage rec { + pname = "tezos-plompiler"; + duneVersion = "3"; + + inherit (tezos-bls12-381-polynomial) version src; + + propagatedBuildInputs = [ + hacl-star + bls12-381 + tezos-bls12-381-polynomial + data-encoding + hex + stdint + ff + mec + ]; + + checkInputs = [ alcotest qcheck-alcotest bisect_ppx ]; + + doCheck = false; # circular deps + + meta = tezos-bls12-381-polynomial.meta // { + description = "Library to write arithmetic circuits for Plonk"; + }; +} diff --git a/pkgs/development/ocaml-modules/tezos-bls12-381-polynomial/plonk.nix b/pkgs/development/ocaml-modules/tezos-bls12-381-polynomial/plonk.nix new file mode 100644 index 000000000000..7eba7fd255de --- /dev/null +++ b/pkgs/development/ocaml-modules/tezos-bls12-381-polynomial/plonk.nix @@ -0,0 +1,35 @@ +{ + lib, + buildDunePackage, + hacl-star, + bls12-381, + tezos-bls12-381-polynomial, + data-encoding, + tezos-plompiler, + alcotest, + qcheck-alcotest, + bisect_ppx, +}: + +buildDunePackage rec { + pname = "tezos-plonk"; + duneVersion = "3"; + + inherit (tezos-bls12-381-polynomial) version src; + + propagatedBuildInputs = [ + hacl-star + bls12-381 + tezos-bls12-381-polynomial + data-encoding + tezos-plompiler + ]; + + checkInputs = [ alcotest qcheck-alcotest bisect_ppx ]; + + doCheck = false; # broken + + meta = tezos-bls12-381-polynomial.meta // { + description = "Plonk zero-knowledge proving system"; + }; +} diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index e305ffc5ab4b..979026baca3c 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -1442,6 +1442,12 @@ let tezos-base58 = callPackage ../development/ocaml-modules/tezos-base58 { }; + tezos-bls12-381-polynomial = callPackage ../development/ocaml-modules/tezos-bls12-381-polynomial { }; + + tezos-plompiler = callPackage ../development/ocaml-modules/tezos-bls12-381-polynomial/plompiler.nix { }; + + tezos-plonk = callPackage ../development/ocaml-modules/tezos-bls12-381-polynomial/plonk.nix { }; + theora = callPackage ../development/ocaml-modules/theora { }; toml = callPackage ../development/ocaml-modules/toml { };