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.
orchard::note::Rho
orchard::action::Action::rho
orchard::note_encryption::CompactAction::rho
orchard::note_encryption::OrchardDomain::for_compact_action
- Additions under the
test-dependencies
feature flag:orchard::tree::MerkleHashOrchard::random
impl Distribution<MerkleHashOrchard> for Standard
- The following methods have their
Nullifier
-typed argument or return value now take or returnnote::Rho
instead:orchard::note::RandomSeed::from_bytes
orchard::note::Note::from_parts
orchard::note::Note::rho
orchard::note_encryption::OrchardDomain::for_nullifier
(usefor_action
orfor_compact_action
instead).
impl subtle::ConstantTimeEq for orchard::note::Nullifier
orchard::note_encryption
:CompactAction::cmx
impl Clone for CompactAction
- 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.
orchard::builder
:bundle
BundleMetadata
BundleType
OutputInfo
orchard::bundle::Flags::{ENABLED, SPENDS_DISABLED, OUTPUTS_DISABLED}
orchard::tree::Anchor::empty_tree
- Migrated to the
zip32
crate. The following types have been replaced by the equivalent ones in that crate are now re-exported from there:orchard::keys::{DiversifierIndex, Scope}
orchard::zip32::ChildIndex
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 toadd_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 additionalBundleType
argument that specifies how actions should be padded, instead of using hardcoded padding. It also now returns aResult<Option<(Bundle<...>, BundleMetadata)>, ...>
instead of aResult<Bundle<...>, ...>
.BuildError
has additional variants:SpendsDisabled
OutputsDisabled
AnchorMismatch
SpendInfo::new
now returns aResult<SpendInfo, SpendError>
instead of anOption
.
orchard::keys::SpendingKey::from_zip32_seed
now takes azip32::AccountId
.
orchard::bundle::Flags::from_parts
- MSRV is now 1.65.0.
- Migrated to
incrementalmerkletree 0.5
.
- Migrated to
zcash_note_encryption 0.4
,incrementalmerkletree 0.4
,bridgetree 0.3
.bridgetree
is now exclusively a test dependency.
orchard::builder
:{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
- 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 toBuildError
to differentiate from new error types.BuildError
now implementsstd::error::Error
andstd::fmt::Display
.
- 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.
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
- Migrated to
zcash_note_encryption 0.2
.
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 handlingValueCommitment
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
- Migrated to
halo2_proofs 0.2
.
- 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 toorchard::Action
.Bundle::{try_}authorize
have been renamed toBundle::{try_}map_authorization
.Flags::from_byte
now returnsOption<Flags>
instead ofio::Result<Flags>
.
impl Sub for orchard::value::NoteValue
now returnsValueSum
instead ofOption<ValueSum>
, as the result is guaranteed to be within the valid range ofValueSum
.
orchard::keys
:Scope
enum, for distinguishing external and internal scopes for viewing keys and addresses.FullViewingKey::{to_ivk, to_ovk}
, which each take aScope
argument.FullViewingKey::scope_for_address
- Migrated to
halo2_proofs 0.1.0-beta.4
,incrementalmerkletree 0.3.0-beta.2
. orchard::builder
:Builder::add_spend
now requires that theFullViewingKey
matches the givenNote
, and handles any scoping itself (instead of requiring the caller to pass theFullViewingKey
for the correct scope).
orchard::keys
:FullViewingKey::{address, address_at}
now each take aScope
argument.
orchard::keys
:FullViewingKey::derive_internal
impl From<&FullViewingKey> for IncomingViewingKey
(useFullViewingKey::to_ivk
instead).impl From<&FullViewingKey> for OutgoingViewingKey
(useFullViewingKey::to_ovk
instead).
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
- 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 boundV: Copy + Into<i64>
instead ofi64: From<&'a V>
.orchard::Bundle::binding_validating_key
now requires the boundV: Into<i64>
instead ofV: Into<ValueSum>
.orchard::builder::InProgressSignatures
andorchard::bundle::Authorization
now haveDebug
bounds on themselves and their associated types.
orchard::bundle
:commitments::hash_bundle_txid_data
(useBundle::commitment
instead).commitments::hash_bundle_auth_data
(useBundle::authorizing_commitment
instead).
orchard::keys
:FullViewingKey::default_address
IncomingViewingKey::default_address
DiversifierKey
(use the APIs onFullViewingKey
andIncomingViewingKey
instead).
impl std::hash::Hash for orchard::tree::MerkleHashOrchard
(useBTreeMap
instead ofHashMap
).orchard::value::ValueSum::from_raw
Initial release!