orchard/CHANGELOG.md

247 lines
8.9 KiB
Markdown
Raw Permalink Normal View History

2021-01-22 15:57:34 -08:00
# 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]
2024-01-26 11:34:25 -08:00
2024-03-24 18:23:51 -07:00
## [0.8.0] - 2024-03-25
### Added
- `orchard::keys::IncomingViewingKey::prepare`
- `orchard::note::Rho`
- `orchard::action::Action::rho`
- `orchard::note_encryption::CompactAction::rho`
- `orchard::note_encryption::OrchardDomain::for_compact_action`
2024-03-24 18:23:51 -07:00
- Additions under the `test-dependencies` feature flag:
- `orchard::tree::MerkleHashOrchard::random`
- `impl Distribution<MerkleHashOrchard> for Standard`
### Changed
- The following methods have their `Nullifier`-typed argument or return value
now take or return `note::Rho` instead:
- `orchard::note::RandomSeed::from_bytes`
- `orchard::note::Note::from_parts`
- `orchard::note::Note::rho`
### Removed
- `orchard::note_encryption::OrchardDomain::for_nullifier` (use `for_action`
or `for_compact_action` instead).
2024-02-29 14:26:40 -08:00
## [0.7.1] - 2024-02-29
### Added
2024-02-29 14:26:40 -08:00
- `impl subtle::ConstantTimeEq for orchard::note::Nullifier`
- `orchard::note_encryption`:
- `CompactAction::cmx`
- `impl Clone for CompactAction`
2024-01-26 11:34:25 -08:00
## [0.7.0] - 2024-01-26
### Licensing
- The license for this crate is now "MIT OR Apache-2.0". The license
exception that applied to the Zcash and Zebra projects, other projects
designed to integrate with Zcash, and certain forks of Zcash, is no longer
necessary. For clarity, this is intended to be a strict relaxation of the
previous licensing, i.e. it permits all usage that was previously possible
with or without use of the license exception.
### Added
2024-01-10 14:29:59 -08:00
- `orchard::builder`:
- `bundle`
- `BundleMetadata`
- `BundleType`
- `OutputInfo`
- `orchard::bundle::Flags::{ENABLED, SPENDS_DISABLED, OUTPUTS_DISABLED}`
2023-12-20 19:08:51 -08:00
- `orchard::tree::Anchor::empty_tree`
2023-09-08 10:44:13 -07:00
### Changed
- Migrated to the `zip32` crate. The following types have been replaced by the
equivalent ones in that crate are now re-exported from there:
2024-01-25 19:05:42 -08:00
- `orchard::keys::{DiversifierIndex, Scope}`
- `orchard::zip32::ChildIndex`
2024-01-10 14:29:59 -08:00
- `orchard::builder`:
- `Builder::new` now takes the bundle type to be used in bundle construction,
instead of taking the flags and anchor separately.
- `Builder::add_recipient` has been renamed to `add_output` in order to
clarify than more than one output of a given transaction may be sent to the
same recipient.
- `Builder::build` now takes an additional `BundleType` argument that
specifies how actions should be padded, instead of using hardcoded padding.
It also now returns a `Result<Option<(Bundle<...>, BundleMetadata)>, ...>`
instead of a `Result<Bundle<...>, ...>`.
- `BuildError` has additional variants:
- `SpendsDisabled`
- `OutputsDisabled`
- `AnchorMismatch`
- `SpendInfo::new` now returns a `Result<SpendInfo, SpendError>` instead of an
`Option`.
- `orchard::keys::SpendingKey::from_zip32_seed` now takes a `zip32::AccountId`.
### Removed
- `orchard::bundle::Flags::from_parts`
2023-09-08 10:44:13 -07:00
## [0.6.0] - 2023-09-08
### Changed
- MSRV is now 1.65.0.
- Migrated to `incrementalmerkletree 0.5`.
2023-04-11 02:00:07 -07:00
2023-06-06 10:06:11 -07:00
## [0.5.0] - 2023-06-06
### Changed
- Migrated to `zcash_note_encryption 0.4`, `incrementalmerkletree 0.4`, `bridgetree 0.3`.
`bridgetree` is now exclusively a test dependency.
2023-04-11 02:00:07 -07:00
## [0.4.0] - 2023-04-11
2022-12-08 07:00:50 -08:00
### Added
- `orchard::builder`:
2022-12-08 06:59:36 -08:00
- `{SpendInfo::new, InputView, OutputView}`
- `Builder::{spends, outputs}`
- `SpendError`
- `OutputError`
- `orchard::keys`:
- `PreparedEphemeralPublicKey`
- `PreparedIncomingViewingKey`
- impls of `memuse::DynamicUsage` for:
- `orchard::note::Nullifier`
- `orchard::note_encryption::OrchardDomain`
- impls of `Eq` for:
- `orchard::zip32::ChildIndex`
- `orchard::value::ValueSum`
2022-12-08 07:00:50 -08:00
### Changed
2023-02-28 14:20:39 -08:00
- 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 str`s.
- `Error` has been renamed to `BuildError` to differentiate from new error
types.
- `BuildError` now implements `std::error::Error` and `std::fmt::Display`.
2023-04-11 02:00:07 -07:00
### Fixed
- Several bugs have been fixed that were preventing Orchard bundles from being
created or verified on 32-bit platforms, or with recent versions of Rust.
2022-10-19 11:44:28 -07:00
## [0.3.0] - 2022-10-19
### Added
- `orchard::Proof::add_to_batch`
- `orchard::address::Address::diversifier`
- `orchard::keys::Diversifier::from_bytes`
- `orchard::note`:
- `RandomSeed`
- `Note::{from_parts, rseed}`
- `orchard::circuit::Circuit::from_action_context`
2022-06-24 08:37:35 -07:00
2022-10-13 14:41:25 -07:00
### Changed
- Migrated to `zcash_note_encryption 0.2`.
2022-06-24 08:37:35 -07:00
## [0.2.0] - 2022-06-24
### Added
- `orchard::bundle::BatchValidator`
2022-08-23 12:23:15 -07:00
- `orchard::builder::Builder::value_balance`
2022-06-24 08:36:12 -07:00
- `orchard::note_encryption`:
- `CompactAction::from_parts`
- `CompactAction::nullifier`
- `OrchardDomain::for_nullifier`
- Low-level APIs in `orchard::value` for handling `ValueCommitment`s.
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`
2022-06-08 17:01:10 -07:00
### Changed
- Migrated to `halo2_proofs 0.2`.
## [0.1.0] - 2022-05-10
2022-04-28 13:45:05 -07:00
### Changed
2022-05-10 15:13:32 -07:00
- Migrated to `bitvec 1`, `ff 0.12`, `group 0.12`, `incrementalmerkletree 0.3`,
2022-05-10 15:51:33 -07:00
`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`.
2022-04-06 13:29:56 -07:00
## [0.1.0-beta.3] - 2022-04-06
2022-02-15 14:56:01 -08:00
### 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
2022-04-06 11:01:03 -07:00
- 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
2022-02-15 14:56:01 -08:00
- `orchard::keys`:
- `DiversifierIndex::to_bytes`
2022-02-28 12:58:34 -08:00
- `FullViewingKey::derive_internal`
2022-02-15 14:56:01 -08:00
- `IncomingViewingKey::diversifier_index`
2022-02-28 12:58:34 -08:00
- `orchard::note`:
- `impl PartialEq, Eq, PartialOrd, Ord for Nullifier`
2022-02-15 14:56:01 -08:00
- `orchard::primitives::redpallas::VerificationKey::verify`
2022-02-28 12:58:34 -08:00
- `orchard::tree`:
- `MerklePath::from_parts`
- `impl PartialEq, Eq, PartialOrd, Ord for MerkleHashOrchard`
2022-02-15 14:56:01 -08:00
- `impl From<orchard::bundle::BundleCommitment> for [u8; 32]`
2022-03-22 14:00:03 -07:00
- `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`
2022-01-05 06:14:08 -08:00
### Changed
2022-02-28 12:58:34 -08:00
- 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`
2022-02-15 14:56:01 -08:00
- `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>`.
2022-02-28 12:58:34 -08:00
- `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).
2022-02-15 14:56:01 -08:00
- `orchard::keys`:
- `FullViewingKey::default_address`
- `IncomingViewingKey::default_address`
2022-02-28 12:58:34 -08:00
- `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
2021-01-22 15:57:34 -08:00
Initial release!