Skip to content

Releases: clearmatics/zeth

v0.9.0

05 Sep 10:22
0c7fcf5
Compare
Choose a tag to compare
v0.9.0 Pre-release
Pre-release

Changelog

  • Using custom ganache from docker container
  • Fixes for documentation typos
  • CI fixes and robustness improvements
  • Clean-up in serialization logic
  • Move curve and snark specific code into dependent library (libsnark)
  • Update libsnark and libff
  • Upgrade grpc to 1.44

0.8 - Drachma

26 Aug 13:42
a0f89b2
Compare
Choose a tag to compare
0.8 - Drachma Pre-release
Pre-release

Changelog

Features and improvements

  • Refactor the MiMC round constant generation scripts and support constants for
    up to 93 rounds

  • Add zeth-tool for advanced operations (manipulating objects, serializing,
    verifying proofs etc)

  • Improved genericity of the client to allow for different JSIN/JSOUT values

  • Add prover profiling operations

  • Clean up client dependencies and bump major for web3.py

  • Rely exclusively on estimateGas in the client

Optimizations

  • Migrate serialization functions to libff and pull libff optimizations

Tooling

  • Add scripts for generating large circuits and build on EC2 instances

  • Upgrade to actions/checkout to the v2 in all CI scripts

  • Extend Doxygen configuration and add CI for docs generation

Code quality

  • Rename bits<numBits>::fill_variable_array to bits<numBits>::fill_pb_variable_array for consistency

  • Rename inconsistent commands (CLIs, executable scripts etc) to stick to kebab-case

Fixes

  • Fix interface of sha256 gadget to remove the need for the ZERO pb_variable

  • Fix access specifiers in gadget inheritance tree

0.7 - Daric

06 May 15:04
8247fc3
Compare
Choose a tag to compare
0.7 - Daric Pre-release
Pre-release

Changelog

Features

  • Zecale support for Zeth transaction aggregation

  • Data structures serialization/deserialization improvements

  • Support native cpp snark verifier

  • New flags for prover_server command to export data

Security fixes

  • Bump cryptography python package from 3.2 to 3.3.2

  • Upgrade solidity code to 0.8 solidity version (to support safe arithmetic, non-experimental ABIEncoderv2 etc.)

Optimizations

  • Swith MiMC round function degree and corresponding round numbers
    • Related issues: #364
    • Related PRs: #369

Tooling

  • Ran contract tests as part of the CI

  • Support caching on the CI and add integration tests

  • Migrate docker build from Docker Hub to Github Container Regisry

  • Better code re-use for the Continuous Integration

  • Update custom ganache-cli to bring changes in libff used in bls12-377 and bw6-761 precompiled contracts

Code quality

  • Solidity code cleanup to align with newly established coding standards

Fixes

  • Fixed R1CS serialization

  • Fix test data for Groth16 to ease cross-library tests with NeoDIZK

0.6 - Obol

21 Dec 16:38
9f3809c
Compare
Choose a tag to compare
0.6 - Obol Pre-release
Pre-release

Changelog

Features

  • Extend prover_server configuration to the client

  • Full support for BLS12-377

  • Client and smart contracts refator to improve configuration management and abstract curve operations

  • More generic MiMC operations (templatized gadgets and configuration):

Security fixes

None

Optimizations

  • Improved object encodings:

  • More compact encoding of smart-contract arguments

  • Negate B attribute of Groth16 arguments for simpler and more efficient SNARK verification on-chain

Code quality

  • Solidity coding standards and switch from solium to solhint linter

  • Improved type management in the client

Testing

  • Enable tests on all supported curves

Tooling

  • Support for ganache-cli to enable BW6-761 and BLS12-377 precompiled contracts

Build and CI

  • Enable docker images build and push to DockerHub via Github Actions

  • Split (and enhancement) of the CI workflows

  • Enable code scanning on the CI:

Documentation

  • Extend contribution guide

  • Adoption of NatSpec documentation comments for solidity code

0.5-Sigloi

11 Sep 14:36
07ffdca
Compare
Choose a tag to compare
0.5-Sigloi Pre-release
Pre-release

Changelog

Features

  • Generalize MPC code to support curves other than bn256

  • Add support for generic serialization of field and group elements

  • Refactor and improve serialization functions in the server code (C++) and in the client code (Python)

  • Change semantics of --keypair flag on prover_server to easily import/export the SRS

  • Extend client to work with Ethereum-like clients (e.g. Autonity, Geth etc.)

  • Add --show-parameters flag to zeth mix command

  • Add support for TLS in the client

Fixes

  • Fix the serialization of the VK

  • Fix JSON output of PGHR13 arguments

  • Fix linking issues with boost when building pot-process

  • Fix tests for the MerkleTreeMiMC7.sol contract

  • Fix the mpc code and documentation (support streaming when sending challenges, fix path to binaries, switched time to UTC)

  • Add extra logging information and extend MPC contribution window in CI script to troubleshoot macOS job failing on the CI:

Security fixes

None

Optimizations

None

Tooling

  • Switched to latest Ubuntu LTS (20.04) in CI

  • Add IS_ZETH_PARENT build option to avoid build rule name collision when Zeth is used as a dependency

  • Add script to process and recover the full SRS from several chunks (useful for the distribution)

  • Extend docker configuration to package the various components of the code base (prover_server, client, mpc) into separate images

Code quality

  • Adopt a consistent naming for types and type-params

  • Support full parameterization in the library and clean the configuration of the snark and curve types

  • Refine the clang-tidy configuration and add cpp_check in the CI checks

  • Refactor and repackage the client

  • Remove useless notestore folder an rename env variables in setup_env.sh

  • Use a single namespace for tests in libzeth

Documentation

  • Add reference to the Zeth protocol specifications

  • Add missing flags to client

  • Include missing documentation to the Doxygen documentation output

0.4-Croeseid

07 May 18:49
7a0251b
Compare
Choose a tag to compare
0.4-Croeseid Pre-release
Pre-release

Changelog

Features

Security fixes

  • Fix replay attack allowing to steal "vout"

    • Related issues: #160
    • Related PRs: #161
  • Use IK-CCA encryption scheme to encrypt note data

Optimizations

  • Smart contracts optimizations

    • Related issues: #94
    • Related PRs: #138
  • Reduced number of primary inputs - saving scalar multiplications for the verifier

  • Use the full blake2s hash function as commitment scheme instead of custom multiple calls to the compression function - saving a call to the compression function for each commitment

    • Related issues: #158
    • Related PRs: #190

Tooling

  • Switch from Travis to Github Actions

    • Related issues: #164
    • Related PRs: #167
  • Use formatting in CI

  • Switch from Ubuntu to Alpine as base image for Zeth Docker image

  • Improve and fix the build

  • Add LLVM sanitizers options to the build and support tools to enforce code conventions/best practices, generate documentation and code coverage reports, and carry out static analysis.

Code quality

  • Change project structure and refactor of the c++ code

  • Improved test structure

  • Parameterized circuit

    • Related issues: #153
    • Related PRs: #185
  • Refactor of proto files and API-related files

0.3-Lydia

13 Dec 20:43
d325b88
Compare
Choose a tag to compare
0.3-Lydia Pre-release
Pre-release

Changelog

Features

  • Refactor of the APIs to build a layer of abstraction for proof systems used in the backend and ease the support for multiple proof systems:

    • Related issues: #3
    • Related PRs: #19
  • Support for the Groth16 SNARK:

    • Related issues: #3
    • Related PRs: #22
  • Multi-party computation protocol for the SRS generation of Groth16:

  • Support for higher denomination private payments:

    • Related issues: #24
    • Related PRs: #101
  • Support for R1CS export in json format and minimal R1CS-json parser to analyze the Arithmetic Circuit:

Security fixes

  • Fix the transaction malleability attack:

  • Fix a double spend attack based on modular arithmetic on primary inputs:

Circuit optimizations

  • Switch to MiMC-based compression function in the Merkle tree of commitments:

    • Related issues: #4
    • Related PRs: #34, #42
  • Switch to Blake2s compression function to instantiate COMMs and PRFs:

Other enhancements

  • Better tooling to maintain and raise code standards:

These come along with various PRs to enhance code quality (#25, #29, #64, #110, #114, #121)

  • Refactor of the build:

  • Refactor of the Python client to split functionalities into separate modules and use type annotations

0.2-Sproken

04 Apr 18:27
03a67d6
Compare
Choose a tag to compare
0.2-Sproken Pre-release
Pre-release

This release of the PoC contains:

  • A complete re-write of the circuit from ZCash sprout
  • A new version of the mixer contract that now implements a single function able to support deposits, transfers and withdrawals of arbitrary denominations.
  • A prover server that implements a RPC interface and can listen to incoming requests from clients (requests can be of two natures: fetching the verification key to instantiate an on-chain verifier smart contract for instance, or requesting the generation of a proof on a given input)
  • Two clients (one in javascript, the other in python) that show how Zeth can work, by requesting proofs generation to the prover server and executing a few confidential asset transfers on a local Ethereum test network.

Note: The name of the release is a play on word between "Sprout" (ZCash before Sapling) and "Broken" as this PoC is not secure (see the checks removed in the circuit from the original Zcash version)