orchard/CHANGELOG.md

5.7 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Rust's notion of Semantic Versioning.

[Unreleased]

Added

  • orchard::builder:
    • {SpendInfo::new, InputView, OutputView}
    • Builder::{spends, outputs}
    • SpendError
    • OutputError

Changed

  • MSRV is now 1.60.0.
  • Migrated to ff 0.13, group 0.13, pasta_curves 0.5, halo2_proofs 0.3, halo2_gadgets 0.3, reddsa 0.5, zcash_note_encryption 0.3.
  • orchard::builder:
    • Builder::{add_spend, add_output} now use concrete error types instead of &'static strs.
    • Error has been renamed to BuildError to differentiate from new error types.
    • BuildError now implements std::error::Error and std::fmt::Display.
  • Migrate to zcash_note_encryption 0.3.0

[0.3.0] - 2022-10-19

Added

  • orchard::Proof::add_to_batch
  • orchard::address::Address::diversifier
  • orchard::keys::
    • Diversifier::from_bytes
    • PreparedEphemeralPublicKey
    • PreparedIncomingViewingKey
  • orchard::note:
    • RandomSeed
    • Note::{from_parts, rseed}
    • impl memuse::DynamicUsage for Nullifier
  • orchard::note_encryption:
    • impl memuse::DynamicUsage for OrchardDomain
  • orchard::circuit::Circuit::from_action_context
  • impls of Eq for:
    • orchard::zip32::ChildIndex
    • orchard::value::ValueSum

Changed

  • Migrated to zcash_note_encryption 0.2.

[0.2.0] - 2022-06-24

Added

  • orchard::bundle::BatchValidator
  • orchard::builder::Builder::value_balance
  • orchard::note_encryption:
    • CompactAction::from_parts
    • CompactAction::nullifier
    • OrchardDomain::for_nullifier
  • Low-level APIs in orchard::value for handling ValueCommitments. These are useful in code that constructs proof witnesses itself, but note that doing so requires a detailed knowledge of the Zcash protocol to avoid privacy and correctness pitfalls.
    • ValueCommitTrapdoor
    • ValueCommitment::derive

Changed

  • Migrated to halo2_proofs 0.2.

[0.1.0] - 2022-05-10

Changed

  • Migrated to bitvec 1, ff 0.12, group 0.12, incrementalmerkletree 0.3, pasta_curves 0.4, halo2_proofs 0.1, reddsa 0.3.
  • orchard::bundle:
    • Action has been moved to orchard::Action.
    • Bundle::{try_}authorize have been renamed to Bundle::{try_}map_authorization.
    • Flags::from_byte now returns Option<Flags> instead of io::Result<Flags>.
  • impl Sub for orchard::value::NoteValue now returns ValueSum instead of Option<ValueSum>, as the result is guaranteed to be within the valid range of ValueSum.

[0.1.0-beta.3] - 2022-04-06

Added

  • orchard::keys:
    • Scope enum, for distinguishing external and internal scopes for viewing keys and addresses.
    • FullViewingKey::{to_ivk, to_ovk}, which each take a Scope argument.
    • FullViewingKey::scope_for_address

Changed

  • Migrated to halo2_proofs 0.1.0-beta.4, incrementalmerkletree 0.3.0-beta.2.
  • orchard::builder:
    • Builder::add_spend now requires that the FullViewingKey matches the given Note, and handles any scoping itself (instead of requiring the caller to pass the FullViewingKey for the correct scope).
  • orchard::keys:
    • FullViewingKey::{address, address_at} now each take a Scope argument.

Removed

  • orchard::keys:
    • FullViewingKey::derive_internal
    • impl From<&FullViewingKey> for IncomingViewingKey (use FullViewingKey::to_ivk instead).
    • impl From<&FullViewingKey> for OutgoingViewingKey (use FullViewingKey::to_ovk instead).

[0.1.0-beta.2] - 2022-03-22

Added

  • orchard::keys:
    • DiversifierIndex::to_bytes
    • FullViewingKey::derive_internal
    • IncomingViewingKey::diversifier_index
  • orchard::note:
    • impl PartialEq, Eq, PartialOrd, Ord for Nullifier
  • orchard::primitives::redpallas::VerificationKey::verify
  • orchard::tree:
    • MerklePath::from_parts
    • impl PartialEq, Eq, PartialOrd, Ord for MerkleHashOrchard
  • impl From<orchard::bundle::BundleCommitment> for [u8; 32]
  • Clone impls for various structs:
    • orchard::Bundle::{recover_outputs_with_ovks, recover_output_with_ovk}
    • orchard::builder:
      • InProgress, SigningMetadata, SigningParts, Unauthorized, Unproven
    • orchard::circuit::Circuit
    • orchard::keys::SpendAuthorizingKey
    • orchard::primitives::redpallas::SigningKey

Changed

  • MSRV is now 1.56.1.
  • Bumped dependencies to pasta_curves 0.3, halo2_proofs 0.1.0-beta.3.
  • The following methods now have an additional rng: impl RngCore argument:
    • orchard::builder::Bundle::create_proof
    • orchard::builder::InProgress::create_proof
    • orchard::circuit::Proof::create
  • orchard::Bundle::commitment now requires the bound V: Copy + Into<i64> instead of i64: From<&'a V>.
  • orchard::Bundle::binding_validating_key now requires the bound V: Into<i64> instead of V: Into<ValueSum>.
  • orchard::builder::InProgressSignatures and orchard::bundle::Authorization now have Debug bounds on themselves and their associated types.

Removed

  • orchard::bundle:
    • commitments::hash_bundle_txid_data (use Bundle::commitment instead).
    • commitments::hash_bundle_auth_data (use Bundle::authorizing_commitment instead).
  • orchard::keys:
    • FullViewingKey::default_address
    • IncomingViewingKey::default_address
    • DiversifierKey (use the APIs on FullViewingKey and IncomingViewingKey instead).
  • impl std::hash::Hash for orchard::tree::MerkleHashOrchard (use BTreeMap instead of HashMap).
  • orchard::value::ValueSum::from_raw

[0.1.0-beta.1] - 2021-12-17

Initial release!