Skip to content

Latest commit

 

History

History
213 lines (159 loc) · 14.3 KB

CHANGELOG_OLD.md

File metadata and controls

213 lines (159 loc) · 14.3 KB

CHANGELOG

WARNING: this repository is under active development. Unlike semantic versioning, we do expect backward incompatible changes when upgrading PATCH version.

We take inspiration from keep changelog and arkworks.

Breaking Changes and Fixed contain backward incompatible changes, bug fixes, and security patches; Added, Changed, Removed, Deprecated contain backward compatible improvements or new features.

Breaking Changes

Fixed

Added

  • #498 (jf-primitives) Add GPU-accelerated MSM for UnivariateKzgPCS::commit/batch_commit() using ICICLE.

Changed

  • #559 (jf-primitives) GPU-accelerated batch_commit() now doesn't require the input polynomials to be of the same degree.

Removed

Deprecated

v0.4.0 - 2024-02-20

Breaking Changes

  • #270 (jf-primitives) Major refactoring on AEAD internals.
    • Switch from crypto_box to chacha20poly1305 (with crypto_kx to establish shared secret) for AEAD.
    • Supports --cfg curve25519_dalek_backend="u32_backend" RUSTFLAGS to select Curve25519 backend.
    • Remove Canonical(De)Serialize on AEAD-related structs, and directly expose serde::(De)Serialize instead.
  • #475 (jf-primitives) Ergonomics changes for Merkle tree.
    • Constructors are removed from trait definitions.
    • Remove the unnecessary trait bounds, for example I: From<u64>.
    • Restricting the index type for AppendableMerkleTreeScheme to be u64.
    • Add new update_with() and remove() interface for the universal Merkle tree.
    • Add new iter() interface for Merkle tree scheme, allows user to iterate through all elements that are in memory.
  • #489 (jf-primitives) Add non destructive universal Merkle tree.

Fixed

  • #243 fixes bug in MerkleTreeGadget implementation for SparseRescueMerkleTree.
  • #377 fix: VID ADVZ allow zero-length payload

Added

  • #233 BLS aggregation APIs
  • #234 New bytes_from_field_elements util
  • #231 Implemented FK23 for fast amortized opening for univariate PCS
  • #225 Implemented Reed Solomon erasure code
  • #254 Ensure no_std and target WASM support
  • #271 Serde support for Aggregateable signatures
  • #291 Non-native field operations and elliptic curve addition
  • #309 Reed-Solomon decoder accept FFT domain
  • #320 Non-native elliptic curve addition in short Weierstrass form
  • #337 Port VID from another repo
  • #341 Port VDF from another repo
  • #343 Rescue parameter for ark_bn254::Fq
  • #362 Derive Eq, Hash at a bunch of places
  • #381 VID take iterator instead of slice
  • #389 Hello-world namespace support for ADVZ VID scheme
  • #406 Implement KZG multiproof
  • #438 ADVZ PayloadProver support requests that span multiple polynomial

Changed

  • #256 Refactored Reed Solomon erasure code
  • #238 add public keys into signature aggregation APIs
  • #251 add sign_key_ref api for BLSKeyPair
  • #297 Updated tagged-base64 dependency to the crates.io package
  • #299 For Merkle tree, DigestAlgorithm now returns a Result type.
  • #302 Followup APIs for non-native ECC circuit support.
  • #323 Improve performance of range gate in ultra plonk.
  • #371 VID disperse also return payload commitment
  • #385 Use FFT to encode polynomials in eval form.

Removed

Deprecated

v0.3.0 - 2023-03-22

Breaking Changes

  • #207 Update arkworks dependency to v0.4.0

v0.2.0 - 2023-01-20

Breaking Changes

  • #80,#87 (jf-plonk) Refactored UniversalSNARK trait
  • #89 (jf-primitives) Use blst library for BLS signature/VRF
  • #91 (jf-plonk) Introduce struct BoolVar whenever necessary and possible
  • #96 (jf-plonk) Introduce comparison gates
  • #107 (jf-primitives) Updated crypto_box from 0.7.1 to 0.8.1
  • #110 (workspace) Reorganized codebase structure
    • Remove jf-rescue crate, rescue hash function now resides in jf-primitives/rescue.
    • Plonk constraint system definition and concrete constructions now live in a standalone crate jf-relation.
      • Basic and customized circuit gates are defined in jf-relation.
      • Customized/advanced circuit implementations are located in their own crates.
        • Plonk verifier related gadgets, transcript and plonk-verifier are now in jf-plonk/circuit.
        • Primitive gadgets, including commitment, el gamal etc. remains in jf-primitives/circuit.
        • Circuit for rescue hash function is now in jf-primitives/circuit/rescue.
    • par-utils is moved to jf-utils.
  • #126 (nix) Used nix flake
  • #135 Major Merkle Tree refactoring, Unification of different variants:
    • Introduce new traits which define the functionalities.
      • MerkleTreeScheme is the abstraction of a static array accumulator,
      • AppendableMerkleTreeScheme is the abstraction of an appendable vector accumulator.
      • UniversalMerkleTreeScheme is the abstraction of a key-value map accumulator, which also supports non-membership query/proof.
      • ForgetableMerkleTreeScheme allows you to forget/remember some leaves from the memory.
    • Implementation of new generic merkle tree: MerkleTree and UniversalMerkleTree
      • A default rate-3 rescue merkle tree implementation is provided in prelude module.
      • Other example instantiation can be found in example module.
  • #137 (jf-primitives) Refactored VRF APIs and traits
  • #144 (jf-primitives) Updated append-only merkle tree gadget with the latest MT API
  • #119 (all) Updated dependencies
    • Upgraded criterion from 0.3.1 to 0.4.0
  • #146 (jf-primitives) Refactored Rescue sponge API:
    • Remove all .*sponge.* methods from Permutation.
    • Introduce RescueCRHF which takes over sponge_with_padding and sponge_no_padding from Permutation.
    • Introduce RescuePRF which takes over full_state_keyed_sponge_with_padding and full_state_keyed_sponge_no_padding from Permutation.
  • #148, #156 (jf-primitives) Refactored BLS Signature implementation
    • #148 Added trait bounds on associated types of trait SignatureScheme
    • #156 Improved BLS correctness and API compliance with IRTF standard with better doc
  • #150 (jf-primitives) Refactor RescueGadget
    • Introduce SpongeStateVar to abstract over RescueStateVar and RescueNonNativeStateVar structs.
    • Unify RescueGadget and RescueNonNativeGadget traits into RescueGadget.
  • #158 (jf-primitives) Refactored MerkleTreeGadget API:
    • Generic only over MerkleTreeScheme.
    • New methods for allocating variables: create_leaf_variable, create_membership_proof_variable, create_root_variable.
    • New methods for enforcing constraints: is_member and enforce_merkle_proof.
    • Move the remaining methods to the internals of circuit implementation for RescueMerkleTree.
    • Implement MerkleTreeGadget for RescueMerkleTree.
  • #169 (jf-primitives) Stabilize API effort
    • Introduced trait CRHF and moved current implementations under struct FixedLengthRescueCRHF, VariableLengthRescueCRHF.
    • Introduced trait CommitmentScheme and moved current implementations under struct FixedLengthRescueCommitment.
  • #194 (all) Set MSVR of all crates to 1.64.
  • (jf-primitives) zeroize from 1.3 to ^1.5

Fixed

  • #76 (jf-plonk) Splitting polynomials are masked to ensure zero-knowledge of Plonk
    • Now PlonkKzgSnark use our own KZG10 implementation.
  • #115 (jf-relation) Fix a bug in logic_or gate

Added

  • #85, #87 (all) Added no_std compliance
  • #116 (jf-primitives) Introduced new PolynomialCommitmentScheme trait
  • #117 (jf-relation) Added gadgets for comparison with constant values
  • #176 (jf-primitives) Added implementation for light weight merkle tree -- an append-only merkle tree who only keeps its frontier.
  • #167 (jf-primitives) Add DigestGadget associated type to MerkleTreeGadget.

Changed

  • #105 (all) Trait bound relaxation
  • #108 (jf-utils) Allowed more general input to deserialize_canonical_bytes!()
  • #113 (jf-plonk) Corrected error type for PlonkVerifier gadgets
  • #162 (jf-utils) Renamed #serde(with="field_elem") to #serde(with="canonical")
  • #177 (jf-primitives) Refactor multilinear PCS opening.
  • #197 (jf-relation) Added no_std attribute.

Removed

  • #143 (jf-utils) Removed tagged_blob, use tagged_base64::tagged instead

Deprecated

v0.1.2-patch.1 - 2022-11-30

Breaking Changes

  • #107 (jf-primitives) Updated crypto_box from 0.7.1 to 0.8.1
  • #149 (jf-primitives, nix)
    • Updated dependencies
      • crypto_box from 0.7.1 to 0.8.1
      • zeroize from 1.3 to ^1.5
    • Used nix flake instead, bumped rust version to 1.65

v0.1.2 - 2022-06-22

Changed

  • #72 (jf-utils) Improved #[tagged_blob(...)] macro to support const variables in addition to string literals

v0.1.1 - 2022-05-17

Breaking Changes

  • #53 (jf-primitives) Defined and using our own signature scheme trait
  • #57 (jf-plonk) Updated is_xxx to check_xxx gadget APIs
  • #65 (jf-plonk) Added HashToGroup implementation to TE Curves

Fixed

  • #65 (jf-plonk) Fixed a missing decomposing check in range gate

Added

  • #51 (jf-plonk) Introduced lookup table domain separation
  • #55 (jf-primitives) Added naive implementations of BLS signature and VRF
  • #65 (jf-primitives) Added HashToGroup support for both SW and TE curves

Changed

  • #66 (dep) Updated tagged-base64 reference url to reflect the Espresso Systems name change

v0.1.0 - 2022-04-05