Releases: clearmatics/zeth
v0.9.0
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
Changelog
Features and improvements
-
Refactor the MiMC round constant generation scripts and support constants for
up to 93 rounds- PRs: #376
-
Add zeth-tool for advanced operations (manipulating objects, serializing,
verifying proofs etc) -
Improved genericity of the client to allow for different JSIN/JSOUT values
- PRs: #378
-
Add prover profiling operations
- PRs: #382
-
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
- PRs: #382
Tooling
-
Add scripts for generating large circuits and build on EC2 instances
- PRs: #385
-
Upgrade to
actions/checkout
to thev2
in all CI scripts- PRs: #397
-
Extend Doxygen configuration and add CI for docs generation
Code quality
-
Rename
bits<numBits>::fill_variable_array
tobits<numBits>::fill_pb_variable_array
for consistency- PRs: #396
-
Rename inconsistent commands (CLIs, executable scripts etc) to stick to
kebab-case
- PRs: #392
Fixes
0.7 - Daric
Changelog
Features
-
Zecale support for Zeth transaction aggregation
-
Data structures serialization/deserialization improvements
- Related PRs: #358
-
Support native cpp snark verifier
- Related PRs: #358
-
New flags for
prover_server
command to export data- Related PRs: #368
Security fixes
-
Bump cryptography python package from 3.2 to 3.3.2
- Related PRs: #353
-
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
Tooling
-
Ran contract tests as part of the CI
- Related PRs: #341
-
Support caching on the CI and add integration tests
-
Migrate docker build from Docker Hub to Github Container Regisry
- Related PRs: #350
-
Better code re-use for the Continuous Integration
- Related PRs: #354
-
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
0.6 - Obol
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
- PR: #302
-
More generic MiMC operations (templatized gadgets and configuration):
Security fixes
None
Optimizations
-
Improved object encodings:
- PR: #283
-
More compact encoding of smart-contract arguments
- PR: #288
-
Negate
B
attribute of Groth16 arguments for simpler and more efficient SNARK verification on-chain- PR: #287
Code quality
-
Solidity coding standards and switch from
solium
tosolhint
linter -
Improved type management in the client
- PR: #289
Testing
- Enable tests on all supported curves
- PR: #327
Tooling
- Support for
ganache-cli
to enableBW6-761
andBLS12-377
precompiled contracts- PR: #280
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
0.5-Sigloi
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)
- PR: #237
-
Change semantics of
--keypair
flag onprover_server
to easily import/export the SRS -
Extend client to work with Ethereum-like clients (e.g. Autonity, Geth etc.)
-
Add
--show-parameters
flag tozeth mix
command- PR: #263
-
Add support for TLS in the client
- PR: #267
Fixes
-
Fix the serialization of the VK
-
Fix JSON output of PGHR13 arguments
- PR: #218
-
Fix linking issues with boost when building
pot-process
- PR: #231
-
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:- PRs: #269
Security fixes
None
Optimizations
None
Tooling
-
Switched to latest Ubuntu LTS (20.04) in CI
- PR: #227
-
Add
IS_ZETH_PARENT
build option to avoid build rule name collision when Zeth is used as a dependency- PR: #235
-
Add script to process and recover the full SRS from several chunks (useful for the distribution)
- PR: #256
-
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
- PR: #233
-
Support full parameterization in the library and clean the configuration of the snark and curve types
- PR: #225
-
Refine the clang-tidy configuration and add cpp_check in the CI checks
-
Refactor and repackage the client
- PR: #254
-
Remove useless
notestore
folder an rename env variables insetup_env.sh
- PR: #259
-
Use a single namespace for tests in libzeth
- PR: #276
Documentation
0.4-Croeseid
Changelog
Features
-
Zeth wallet CLI
-
Improved field element serialization to support bigints with arbitrary number of limbs
Security fixes
-
Fix replay attack allowing to steal "vout"
-
Use IK-CCA encryption scheme to encrypt note data
Optimizations
-
Smart contracts optimizations
-
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
Tooling
-
Switch from Travis to Github Actions
-
Use formatting in CI
- Related PRs: #172
-
Switch from Ubuntu to Alpine as base image for Zeth Docker image
-
Improve and fix the build
- Related PRs: #202
-
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.
- Related PRs: #208
Code quality
0.3-Lydia
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:
-
Support for the Groth16 SNARK:
-
Multi-party computation protocol for the SRS generation of Groth16:
-
Support for higher denomination private payments:
-
Support for R1CS export in json format and minimal R1CS-json parser to analyze the Arithmetic Circuit:
- Related PRs: #124
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:
-
Switch to Blake2s compression function to instantiate
COMM
s andPRF
s:
Other enhancements
These come along with various PRs to enhance code quality (#25, #29, #64, #110, #114, #121)
0.2-Sproken
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)