# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to Rust's notion of [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### Added - `halo2_gadgets::poseidon::primitives::{Mds, generate_constants}` ### Changed - Migrated to `ff 0.13`, `group 0.13`, `pasta_curves 0.5`. - APIs with `F: pasta_curves::arithmetic::FieldExt` bounds have been changed to use `ff` traits directly. ## [0.2.0] - 2022-06-23 ### Added - `halo2_gadgets::utilities::RangeConstrained>::bitrange_of` ### Changed All APIs that represented witnessed values as `Option` now represent them as `halo2_proofs::circuit::Value`. The core API changes are listed below. - Migrated to `halo2_proofs 0.2.0`. - The following APIs now take `Value<_>` instead of `Option<_>`: - `halo2_gadgets::ecc`: - `EccInstructions::{witness_point, witness_point_non_id}` - `EccInstructions::{witness_scalar_var, witness_scalar_fixed}` - `ScalarVar::new` - `ScalarFixed::new` - `NonIdentityPoint::new` - `Point::new` - `halo2_gadgets::sinsemilla`: - `SinsemillaInstructions::witness_message_piece` - `MessagePiece::{from_field_elem, from_subpieces}` - `halo2_gadgets::sinsemilla::merkle`: - `MerklePath::construct` - `halo2_gadgets::utilities`: - `UtilitiesInstructions::load_private` - `RangeConstrained::witness_short` - `halo2_gadgets::utilities::cond_swap`: - `CondSwapInstructions::swap` - `halo2_gadgets::utilities::decompose_running_sum`: - `RunningSumConfig::witness_decompose` - `halo2_gadgets::utilities::lookup_range_check`: - `LookupRangeCheckConfig::{witness_check, witness_short_check}` - The following APIs now return `Value<_>` instead of `Option<_>`: - `halo2_gadgets::ecc::chip`: - `EccPoint::{point, is_identity}` - `NonIdentityEccPoint::point` - `halo2_gadgets::utilities`: - `FieldValue::value` - `Var::value` - `RangeConstrained::value` - `halo2_gadgets::sha256::BlockWord` is now a newtype wrapper around `Value` instead of `Option`. ### Removed - `halo2_gadgets::utilities::RangeConstrained>::bitrange_of` ## [0.1.0] - 2022-05-10 ### Added - `halo2_gadgets::utilities`: - `FieldValue` trait. - `RangeConstrained` newtype wrapper. - `halo2_gadgets::ecc`: - `EccInstructions::witness_scalar_var` API to witness a full-width scalar used in variable-base scalar multiplication. - `EccInstructions::witness_scalar_fixed`, to witness a full-width scalar used in fixed-base scalar multiplication. - `EccInstructions::scalar_fixed_from_signed_short`, to construct a signed short scalar used in fixed-base scalar multiplication from its magnitude and sign. - `BaseFitsInScalarInstructions` trait that can be implemented for a curve whose base field fits into its scalar field. This provides a method `scalar_var_from_base` that converts a base field element that exists as a variable in the circuit, into a scalar to be used in variable-base scalar multiplication. - `ScalarFixed::new` - `ScalarFixedShort::new` - `ScalarVar::new` and `ScalarVar::from_base` gadget APIs. - `halo2_gadgets::ecc::chip`: - `ScalarVar` enum with `BaseFieldElem` and `FullWidth` variants. `FullWidth` is unimplemented for `halo2_gadgets v0.1.0`. - `halo2_gadgets::poseidon`: - `primitives` (moved from `halo2_gadgets::primitives::poseidon`) - `halo2_gadgets::sinsemilla`: - `primitives` (moved from `halo2_gadgets::primitives::sinsemilla`) - `MessagePiece::from_subpieces` ### Changed - `halo2_gadgets::ecc`: - `EccInstructions::ScalarVar` is now treated as a full-width scalar, instead of being restricted to a base field element. - `EccInstructions::mul` now takes a `Self::ScalarVar` as argument, instead of assuming that the scalar fits in a base field element `Self::Var`. - `EccInstructions::mul_fixed` now takes a `Self::ScalarFixed` as argument, instead of requiring that the chip always witness a new scalar. - `EccInstructions::mul_fixed_short` now takes a `Self::ScalarFixedShort` as argument, instead of the magnitude and sign directly. - `FixedPoint::mul` now takes `ScalarFixed` instead of `Option`. - `FixedPointShort::mul` now takes `ScalarFixedShort` instead of `(EccChip::Var, EccChip::Var)`. - `halo2_gadgets::ecc::chip`: - `FixedPoint::u` now returns `Vec<[::Repr; H]>` instead of `Vec<[[u8; 32]; H]>`. - `ScalarKind` has been renamed to `FixedScalarKind`. - `halo2_gadgets::sinsemilla`: - `CommitDomain::{commit, short_commit}` now take the trapdoor `r` as an `ecc::ScalarFixed` instead of `Option`. - `merkle::MerklePath` can now be constructed with more or fewer than two `MerkleChip`s. ### Removed - `halo2_gadgets::primitives` (use `halo2_gadgets::poseidon::primitives` or `halo2_gadgets::sinsemilla::primitives` instead). ## [0.1.0-beta.3] - 2022-04-06 ### Changed - Migrated to `halo2_proofs 0.1.0-beta.4`. ## [0.1.0-beta.2] - 2022-03-22 ### Changed - Migrated to `halo2_proofs 0.1.0-beta.3`. ## [0.1.0-beta.1] - 2022-02-14 Initial release!