Skip to content

concordium_base 4.0.0

Compare
Choose a tag to compare

Summary

This is a major release that updates the major core dependencies to more recent versions, as well as replacing the core BLS curve implementation with a more up to date one.

Users of this library are most likely to be affected by the updates of

  • rand from 0.7 to 0.8
  • ed25519-dalek from version 1 to version 2

since these appear in types exposed by concordium-base.

Changes

  • Add MultiExp trait that allows to have different multiexp algorithm implementations for different curves.
  • Improve performance of the generic multiexp algorithm.
  • Add an instance of MultiExp that is specific to curve25519.
  • Add traits Field and PrimeField with implementations for the underlying field of the BLS12-381 curve.
  • Add integration with the arkworks library interfaces for fields and elliptic curves (wrapper types and blanket trait implementations).
  • Add the BLS12-381implementation from the arkworks ecosystem.
  • The public types id::constants::ArCurve, id::constants::IpPairing are defined in terms of the arkworks BLS12-381 implementation.
  • Add a type alias id::constants::BlsG2 for the G2 group of arkworks BLS12-381.
  • Upgrade ed25519-dalek to v2.0.
  • Bump the rand version to v0.8
  • Add implementations of Field, PrimeField and Curve for the Ristretto representation of curve25519.
  • Remove Curve::bytes_to_curve_unchecked().
  • Rename Cipher::from_bytes_unchecked() to Cipher::from_bytes(); the method uses deserial() instead of Curve::bytes_to_curve_unchecked().
  • Support P7 protocol version.
  • The Debug implementation for ContractEvent displays the value in hex.
    The alternate formatter (using #) displays it as a list of bytes.
  • Add FromStr and Display instances to dodis_yampolskiy_prf::SecretKey.
  • Change Debug instance of dodis_yampolskiy_prf::SecretKey to hide the value.
  • Remove Timestamp to instead reexport the similar type from concordium_contracts_common.
    This adds several new methods, but results in a breaking change in the serde::Serialize implementation, which is now using string containing RFC3393 representation instead the underlying milliseconds.
  • Remove smart_contracts::WasmVersion to instead reexport a similar type from concordium_contracts_common.
    This adds a FromStr implementation and changes the associated type TryFrom<u8>::Error from anyhow::Error to concordium_contracts_common::U8WasmVersionConvertError.