Skip to content

Releases: TaceoLabs/co-snarks

ultrahonk: 0.3.0

18 Dec 13:44
499e20a
Compare
Choose a tag to compare

0.3.0 (2024-12-18)

⚠ BREAKING CHANGES

  • Align to upstream bb behavior of calculating the grand product argument only over the relevant trace size, which leads to a different proof being output.
  • Bump Noir to v0.38.0, implement range checks, and allow nargo-asserts
  • Move builder to new co-builder crate
  • The interface of the UltraCircuitVariable trait has change. Thus, also ProvingKey::create() throws an error now.
  • co-noir now stores shared inputs in a different format (BTreeMap<String, Rep3AcvmType<ark_bn254::Fr>> instead of BTreeMap<String, Rep3PrimeFieldShare<ark_bn254::Fr>>)
  • The produced proofs are now different due to new transcript handling in bb 0.55.1, and they are no longer backwards compatible.

Features

  • Add builder for ultrahonk and fix prover (929dd1d)
  • Add co-noir binary (#201) (3163aec)
  • Add co-oink prover (#194) (b5fbd85)
  • Add co-zeromorph to co-ultrahonk (#195) (e7df56e)
  • Add first version of a (untested) UltraHonk prover (9f2911f)
  • Add MPC tests for co-ultrahonk (#199) (5a36ad5)
  • Add sumcheck prover (without relations) (be44986)
  • Add the sumcheck relations to the co-ultrahonk prover (#198) (846c4f0)
  • Add Ultrahonk verifier (5c5b5d8)
  • Add Verifying key serialization and add verification to co-noir binary (#202) (3467425)
  • Bump Noir to v0.38.0, implement range checks, and allow nargo-asserts (d1a5d83)
  • Bump versions to Nargo v0.39.0 and Barretenberg v0.63.1 (#275) (db255e6)
  • Make builder generic for both shares and plain, add shared proving key and start with MPC prover (#193) (e3559a0)
  • Replace a panic from the ultracircuitbuilder with an Error (#217) (5d9c870)
  • skip creating unnecessary beta products (118f2bf)
  • Update UltraHonk to BB v0.62.0, required to replace zeromorph with shplemini (#251) (f35cdd4)
  • Upgrade UltraHonk to be compatible with Barretenberg v0.55.1 (#211) (f817d76)

Bug Fixes

  • Adapt co-noir binary to handle public noir inputs correctly (#216) (bed3996)
  • clippy (e43534a)
  • Fix reading ultrahonk proof (f16ef68)
  • simplify path handling in co-noir binary (26fae55)

Code Refactoring

  • Move builder to new co-builder crate (3cd8955)

mpc-net: v0.2.1

18 Dec 13:22
499e20a
Compare
Choose a tag to compare

0.2.1 (2024-12-16)

Bug Fixes

  • dont ignore network write errors in tokio taks, log them instead (0823a5c)
  • increase max frame length to 1Tb (f50ab33)

mpc-core: v0.7.0

18 Dec 13:22
499e20a
Compare
Choose a tag to compare

0.7.0 (2024-12-16)

⚠ BREAKING CHANGES

  • !: Added functionality to traits of brillig/acvm
  • Added docs for brillig. Also updated the trait to better match the functionallity
  • modified traits for ACVM
  • Start adding replicated secret sharing for rings

Features

  • !: first version of shared if by forking brillig (a25e4a5)
  • Add casts bestween different ring-shares, and cast between rings (e680da6)
  • Add functionality to reshare a vector of fieldshares from two parties to a 3rd (#292) (65f5be1)
  • Add remaing rep3 ring implementations. Untested so far (b8c9a12)
  • Add tests for the REP3 ring implementation and fix minor bugs" (ae3408a)
  • Allow on-the-fly preprocessing for Shamir (699ea14)
  • first plain unconstrained fn working (56e1c80)
  • implement a radix sort in MPC and use it for range checks in co-noir (#290) (bc8c458)
  • implement many featuers for the co-brillig rep3 backend (#284) (11e0b03)
  • Start adding replicated secret sharing for rings (f4dca00)

Bug Fixes

  • Fix the GC for the ring-to-ring upcast (b5bf8b1)

Documentation

  • Added docs for brillig. Also updated the trait to better match the functionallity (a2df63a)

Dependencies

  • The following workspace dependencies were updated
    • dependencies
      • mpc-net bumped from 0.2.0 to 0.2.1

co-ultrahonk: v0.3.0

18 Dec 13:22
499e20a
Compare
Choose a tag to compare

0.3.0 (2024-12-16)

⚠ BREAKING CHANGES

  • Align to upstream bb behavior of calculating the grand product argument only over the relevant trace size, which leads to a different proof being output.
  • Bump Noir to v0.38.0, implement range checks, and allow nargo-asserts

Features

  • Add process ROM gate stuff for co-noir and some fixes (9f0a9fa)
  • Bump Noir to v0.38.0, implement range checks, and allow nargo-asserts (d1a5d83)
  • Bump versions to Nargo v0.39.0 and Barretenberg v0.63.1 (#275) (db255e6)
  • implement tool to compare output of upstream BB with our implementation (8af8540)

Dependencies

  • The following workspace dependencies were updated
    • dependencies
      • co-acvm bumped from 0.3.0 to 0.4.0
      • co-builder bumped from 0.1.0 to 0.2.0
      • mpc-core bumped from 0.6.0 to 0.7.0
      • ultrahonk bumped from 0.2.0 to 0.3.0

co-plonk: 0.5.0

18 Dec 13:48
499e20a
Compare
Choose a tag to compare

0.5.0 (2024-12-18)

⚠ BREAKING CHANGES

  • Now the verify impls from groth16/plonk circom return an error indicating whether it was a success or not
  • changed the traits for circom bridge. Also modified the from_reader impl for the two Zkeys
  • the prover for Groth16/Plonk now expects an Arc. Cleaner than having multiple Arcs in ZKey
  • now uses new mpc-core and forked networking but NO rayon

Features

  • now can specify whether we want curve checks during zkey deser (e1c03f3)
  • prepare functions for compressed rep3 sharing (55bef10)
  • refactor to use new mpc-core (43da344)

Code Refactoring

  • prove for circom now expect Arc<ZKey> (c2ac465)
  • Removed ark_relations deps. Also changed verify impls to not return bool but a common error (b4f4bf1)

co-noir: 0.4.0

18 Dec 13:52
499e20a
Compare
Choose a tag to compare

0.4.0 (2024-12-16)

⚠ BREAKING CHANGES

  • Align to upstream bb behavior of calculating the grand product argument only over the relevant trace size, which leads to a different proof being output.
  • Bump Noir to v0.38.0, implement range checks, and allow nargo-asserts
  • Add more commands to co-noir binary to prepare for cases where
  • co-noir adapted to ACVMType instead of sharedbuildervariable
  • Use ACVMType in co-builder
  • MpcNetworkHandler::establish now takes the config with already read certs and key.
  • The interface of the UltraCircuitVariable trait has change. Thus, also ProvingKey::create() throws an error now.
  • co-noir now stores shared inputs in a different format (BTreeMap<String, Rep3AcvmType<ark_bn254::Fr>> instead of BTreeMap<String, Rep3PrimeFieldShare<ark_bn254::Fr>>)
  • The produced proofs are now different due to new transcript handling in bb 0.55.1, and they are no longer backwards compatible.
  • Add merging inputs to co-noir binary (#208)

Features

  • Add co-noir binary (#201) (3163aec)
  • Add merging inputs to co-noir binary (#208) (9365fdc)
  • Add more commands to co-noir binary to prepare for cases where (268ebe9)
  • Add process ROM gate stuff for co-noir and some fixes (9f0a9fa)
  • Add Verifying key serialization and add verification to co-noir binary (#202) (3467425)
  • Bump Nargo to version v1.0.0-beta.0 (#286) (f7cbae8)
  • Bump Noir to v0.38.0, implement range checks, and allow nargo-asserts (d1a5d83)
  • Bump versions to Nargo v0.39.0 and Barretenberg v0.63.1 (#275) (db255e6)
  • Do not use the builder in co-noir split witness (d304986)
  • implement many featuers for the co-brillig rep3 backend (#284) (11e0b03)
  • implement tool to compare output of upstream BB with our implementation (8af8540)
  • Replace a panic from the ultracircuitbuilder with an Error (#217) (5d9c870)
  • squashed commit of co-noir (b132afc)
  • Update UltraHonk to BB v0.62.0, required to replace zeromorph with shplemini (#251) (f35cdd4)
  • Upgrade UltraHonk to be compatible with Barretenberg v0.55.1 (#211) (f817d76)

Bug Fixes

  • Adapt co-noir binary to handle public noir inputs correctly (#216) (bed3996)
  • fixed a bug where the constant for linear terms was ignored (23883ff)
  • install rustls default crypto provider in our main binaries & examples (#238) (78757e4)
  • simplify path handling in co-noir binary (26fae55)

Code Refactoring

  • co-noir adapted to ACVMType instead of sharedbuildervariable (e6518a7)
  • split network config into two types (dca1756)
  • Use ACVMType in co-builder (e078c22)

Dependencies

  • The following workspace dependencies were updated
    • dependencies
      • co-acvm bumped from 0.3.0 to 0.4.0
      • co-ultrahonk bumped from 0.2.0 to 0.3.0
      • mpc-core bumped from 0.6.0 to 0.7.0
      • mpc-net bumped from 0.2.0 to 0.2.1

co-groth16: 0.7.0

18 Dec 13:50
499e20a
Compare
Choose a tag to compare

0.7.0 (2024-12-16)

⚠ BREAKING CHANGES

  • Now the verify impls from groth16/plonk circom return an error indicating whether it was a success or not
  • Removed unnecessary parts of the zkey
  • changed the traits for circom bridge. Also modified the from_reader impl for the two Zkeys
  • Removes the zkey in the said function signature. We needed it earlier because we had to know domain size, which we now no longer need.
  • the prover for Groth16/Plonk now expects an Arc. Cleaner than having multiple Arcs in ZKey
  • the public interface of the Groth16MPCProver trait has changed.
  • refactors everything that all groth16 specific functionallity is not in MPC-core anymore.

Features

  • added plain prover shorthand function (b365fcd)
  • now can specify whether we want curve checks during zkey deser (e1c03f3)
  • prepare functions for compressed rep3 sharing (55bef10)
  • refactors all according to MPC-core + Rayon (44a5d2d)

Bug Fixes

  • added a check during groth16 prover for public inputs (76466eb)

Code Refactoring

  • make pointshare in Groth16 MPC trait generic over the curve (dc5acd2)
  • prove for circom now expect Arc<ZKey> (c2ac465)
  • Removed ark_relations deps. Also changed verify impls to not return bool but a common error (b4f4bf1)
  • Removed unnecessary parts of the zkey (0713260)
  • with_network_config for ShamirGroth16 doesn't need zkey anymore (2052d89)

Dependencies

  • The following workspace dependencies were updated
    • dependencies
      • circom-types bumped from 0.6.0 to 0.7.0
      • co-circom-snarks bumped from 0.2.0 to 0.3.0
      • mpc-core bumped from 0.6.0 to 0.7.0
      • mpc-net bumped from 0.2.0 to 0.2.1

co-circom: 0.7.0

18 Dec 13:51
499e20a
Compare
Choose a tag to compare

0.7.0 (2024-12-16)

⚠ BREAKING CHANGES

  • Now the verify impls from groth16/plonk circom return an error indicating whether it was a success or not
  • changed the traits for circom bridge. Also modified the from_reader impl for the two Zkeys
  • serialization format of shared inputs has changed to allow for optional values used to indicate missing elements of an array
  • MPC accelerator changed public API. Also now stores #output signals in component
  • input to compiler now takes PathBuf
  • run and run_with_flat methods on WitnessExtension now consume self again
  • MpcNetworkHandler::establish now takes the config with already read certs and key.
  • Removes the zkey in the said function signature. We needed it earlier because we had to know domain size, which we now no longer need.
  • the prover for Groth16/Plonk now expects an Arc. Cleaner than having multiple Arcs in ZKey
  • The serialized format of shares is now different.
  • Refactor calls to other crates because of API changes

Features

  • add support for merging input arrays (#260) (2c72231)
  • Add the possibility to share co-circom inputs and witness in compressed form (c3443e1)
  • added run_and_get_network to CircomRep3VmWitnessExtension, changed run and run_with_flat back to consume self (b362504)
  • allow to set circom simplification level via CLI (b0d64ba)
  • also allow circom-compatible way to handle link library via cli (#285) (48e6c0f)
  • can now parse bool inputs (#236) (d0147b6)
  • now can specify whether we want curve checks during zkey deser (e1c03f3)
  • num2bits accelerator working (13cdf10)

Bug Fixes

  • added a check during groth16 prover for public inputs (76466eb)
  • fixed path in zkey benches (#231) (99ab2de)
  • handle inputs that are >= mod in the same way as snarkjs (76f701b)
  • install rustls default crypto provider in our main binaries & examples (#238) (78757e4)

Code Refactoring

  • input to compiler now takes PathBuf (9f36774)
  • prove for circom now expect Arc<ZKey> (c2ac465)
  • Refactor calls to other crates because of API changes (6ed7c1a)
  • Removed ark_relations deps. Also changed verify impls to not return bool but a common error (b4f4bf1)
  • split network config into two types (dca1756)
  • with_network_config for ShamirGroth16 doesn't need zkey anymore (2052d89)

Dependencies

  • The following workspace dependencies were updated
    • dependencies
      • circom-mpc-compiler bumped from 0.7.0 to 0.8.0
      • circom-mpc-vm bumped from 0.5.0 to 0.6.0
      • circom-types bumped from 0.6.0 to 0.7.0
      • co-circom-snarks bumped from 0.2.0 to 0.3.0
      • co-groth16 bumped from 0.6.0 to 0.7.0
      • co-plonk bumped from 0.4.0 to 0.5.0
      • mpc-core bumped from 0.6.0 to 0.7.0
      • mpc-net bumped from 0.2.0 to 0.2.1

co-circom-snarks: v0.3.0

18 Dec 13:22
499e20a
Compare
Choose a tag to compare

0.3.0 (2024-12-16)

⚠ BREAKING CHANGES

  • Now the verify impls from groth16/plonk circom return an error indicating whether it was a success or not

Bug Fixes

  • added a check during groth16 prover for public inputs (76466eb)
  • default maybe_shared_inputs field while deserializing (#276) (b029f37)

Code Refactoring

  • Removed ark_relations deps. Also changed verify impls to not return bool but a common error (b4f4bf1)

Dependencies

  • The following workspace dependencies were updated
    • dependencies
      • circom-types bumped from 0.6.0 to 0.7.0
      • mpc-core bumped from 0.6.0 to 0.7.0

co-builder: v0.2.0

18 Dec 13:22
499e20a
Compare
Choose a tag to compare

0.2.0 (2024-12-16)

⚠ BREAKING CHANGES

  • removed acvm in trait names of solver
  • Align to upstream bb behavior of calculating the grand product argument only over the relevant trace size, which leads to a different proof being output.
  • Bump Noir to v0.38.0, implement range checks, and allow nargo-asserts

Features

  • Add process ROM gate stuff for co-noir and some fixes (9f0a9fa)
  • Bump Noir to v0.38.0, implement range checks, and allow nargo-asserts (d1a5d83)
  • Bump versions to Nargo v0.39.0 and Barretenberg v0.63.1 (#275) (db255e6)
  • implement tool to compare output of upstream BB with our implementation (8af8540)

Code Refactoring

  • removed acvm in trait names of solver (6d07de3)

Dependencies

  • The following workspace dependencies were updated
    • dependencies
      • co-acvm bumped from 0.3.0 to 0.4.0
      • mpc-core bumped from 0.6.0 to 0.7.0