From 95e4d0973caac075b47589f6a05f9d744acd3db3 Mon Sep 17 00:00:00 2001 From: Marek Date: Wed, 19 Jun 2024 18:31:27 +0200 Subject: [PATCH] chore: Bump `zcash_primitives`, `orchard` and `zcash_proofs` (#8615) * Bump ECC deps * Remove customizable HRPs * Update changelog * Update CHANGELOG.md Co-authored-by: Arya * Update `Cargo.lock` * Bump `orchard` from to 0.8 in `zebra-consensus` --------- Co-authored-by: Arya --- CHANGELOG.md | 2 +- Cargo.lock | 95 +++---------------- deny.toml | 4 - zebra-chain/Cargo.toml | 4 +- zebra-chain/src/parameters/network.rs | 62 ------------ zebra-chain/src/parameters/network/testnet.rs | 90 ------------------ .../src/parameters/network/tests/vectors.rs | 88 +---------------- zebra-chain/src/parameters/network_upgrade.rs | 13 --- .../src/primitives/zcash_primitives.rs | 3 +- zebra-consensus/Cargo.toml | 4 +- zebra-grpc/Cargo.toml | 2 +- zebra-rpc/Cargo.toml | 2 +- zebra-scan/Cargo.toml | 2 +- 13 files changed, 28 insertions(+), 343 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d920485715..dee614752d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org). This means `zebrad` no longer contains users' viewing keys. - We're no longer using general conditional compilation attributes for `tor`, but only feature flags instead. -- Fixed a bug with trailing characters in the openapi spec method descriptions((#8597)[https://github.com/ZcashFoundation/zebra/pull/8597]) +- Fixed a bug with trailing characters in the openapi spec method descriptions ([#8597](https://github.com/ZcashFoundation/zebra/pull/8597)) ## [Zebra 1.7.0](https://github.com/ZcashFoundation/zebra/releases/tag/v1.7.0) - 2024-05-07 diff --git a/Cargo.lock b/Cargo.lock index 7583b2c109..1720bb387f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2743,36 +2743,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "orchard" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb255c3ffdccd3c84fe9ebed72aef64fdc72e6a3e4180dd411002d47abaad42" -dependencies = [ - "aes", - "bitvec", - "blake2b_simd", - "ff", - "fpe", - "group", - "halo2_gadgets", - "halo2_proofs", - "hex", - "incrementalmerkletree", - "lazy_static", - "memuse", - "nonempty", - "pasta_curves", - "rand 0.8.5", - "reddsa", - "serde", - "subtle", - "tracing", - "zcash_note_encryption", - "zcash_spec", - "zip32", -] - [[package]] name = "orchard" version = "0.8.0" @@ -5677,7 +5647,7 @@ dependencies = [ "zcash_encoding", "zcash_keys", "zcash_note_encryption", - "zcash_primitives 0.15.0", + "zcash_primitives", "zcash_protocol", "zip32", ] @@ -5724,7 +5694,7 @@ dependencies = [ "tracing", "zcash_address", "zcash_encoding", - "zcash_primitives 0.15.0", + "zcash_primitives", "zcash_protocol", "zip32", ] @@ -5744,9 +5714,9 @@ dependencies = [ [[package]] name = "zcash_primitives" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9070e084570bb78aed4f8d71fd6254492e62c87a5d01e084183980e98117092d" +checksum = "b5a8d812efec385ecbcefc862c0005bb1336474ea7dd9b671d5bbddaadd04be2" dependencies = [ "aes", "bip0039", @@ -5763,7 +5733,7 @@ dependencies = [ "jubjub", "memuse", "nonempty", - "orchard 0.7.1", + "orchard", "rand 0.8.5", "rand_core 0.6.4", "redjubjub", @@ -5776,41 +5746,6 @@ dependencies = [ "zcash_address", "zcash_encoding", "zcash_note_encryption", - "zcash_spec", - "zip32", -] - -[[package]] -name = "zcash_primitives" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a8d812efec385ecbcefc862c0005bb1336474ea7dd9b671d5bbddaadd04be2" -dependencies = [ - "aes", - "bip0039", - "blake2b_simd", - "byteorder", - "document-features", - "equihash", - "ff", - "fpe", - "group", - "hex", - "incrementalmerkletree", - "jubjub", - "memuse", - "nonempty", - "orchard 0.8.0", - "rand 0.8.5", - "rand_core 0.6.4", - "redjubjub", - "sapling-crypto", - "sha2", - "subtle", - "tracing", - "zcash_address", - "zcash_encoding", - "zcash_note_encryption", "zcash_protocol", "zcash_spec", "zip32", @@ -5818,9 +5753,9 @@ dependencies = [ [[package]] name = "zcash_proofs" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a02eb1f151d9b9a6e16408d2c55ff440bd2fb232b7377277146d0fa2df9bc8" +checksum = "5163a1110f4265cc5f2fdf87ac4497fd1e014b6ce0760ca8d16d8e3853a5c0f7" dependencies = [ "bellman", "blake2b_simd", @@ -5836,7 +5771,7 @@ dependencies = [ "sapling-crypto", "tracing", "xdg", - "zcash_primitives 0.14.0", + "zcash_primitives", ] [[package]] @@ -5895,7 +5830,7 @@ dependencies = [ "jubjub", "lazy_static", "num-integer", - "orchard 0.7.1", + "orchard", "primitive-types", "proptest", "proptest-derive", @@ -5926,7 +5861,7 @@ dependencies = [ "zcash_encoding", "zcash_history", "zcash_note_encryption", - "zcash_primitives 0.14.0", + "zcash_primitives", "zcash_protocol", "zebra-test", ] @@ -5950,7 +5885,7 @@ dependencies = [ "metrics", "num-integer", "once_cell", - "orchard 0.7.1", + "orchard", "proptest", "proptest-derive", "rand 0.8.5", @@ -5992,7 +5927,7 @@ dependencies = [ "tonic-build 0.11.0", "tonic-reflection", "tower", - "zcash_primitives 0.14.0", + "zcash_primitives", "zebra-chain", "zebra-node-services", "zebra-state", @@ -6075,7 +6010,7 @@ dependencies = [ "tower", "tracing", "zcash_address", - "zcash_primitives 0.14.0", + "zcash_primitives", "zebra-chain", "zebra-consensus", "zebra-network", @@ -6112,7 +6047,7 @@ dependencies = [ "zcash_client_backend", "zcash_keys", "zcash_note_encryption", - "zcash_primitives 0.14.0", + "zcash_primitives", "zebra-chain", "zebra-grpc", "zebra-node-services", @@ -6227,7 +6162,7 @@ dependencies = [ "tracing-error", "tracing-subscriber", "zcash_client_backend", - "zcash_primitives 0.15.0", + "zcash_primitives", "zcash_protocol", "zebra-chain", "zebra-node-services", diff --git a/deny.toml b/deny.toml index 6265ca13c5..ad551dd0e8 100644 --- a/deny.toml +++ b/deny.toml @@ -83,10 +83,6 @@ skip-tree = [ # ECC crates - # wait for zcash_client_backend - { name = "orchard", version = "=0.7.0" }, - { name = "zcash_primitives", version = "=0.14.0" }, - # wait for hdwallet to upgrade { name = "ring", version = "=0.16.20" }, diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index ba3b5bee1f..8f163ae80f 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -93,11 +93,11 @@ x25519-dalek = { version = "2.0.1", features = ["serde"] } # ECC deps halo2 = { package = "halo2_proofs", version = "0.3.0" } -orchard = "0.7.0" +orchard = "0.8.0" zcash_encoding = "0.2.0" zcash_history = "0.4.0" zcash_note_encryption = "0.4.0" -zcash_primitives = { version = "0.14.0", features = ["transparent-inputs"] } +zcash_primitives = { version = "0.15.0", features = ["transparent-inputs"] } sapling = { package = "sapling-crypto", version = "0.1" } zcash_protocol = { version = "0.1.1" } zcash_address = { version = "0.3.2" } diff --git a/zebra-chain/src/parameters/network.rs b/zebra-chain/src/parameters/network.rs index dd58012446..054fb76f45 100644 --- a/zebra-chain/src/parameters/network.rs +++ b/zebra-chain/src/parameters/network.rs @@ -305,68 +305,6 @@ impl FromStr for Network { #[error("Invalid network: {0}")] pub struct InvalidNetworkError(String); -impl zcash_primitives::consensus::Parameters for Network { - fn activation_height( - &self, - nu: zcash_primitives::consensus::NetworkUpgrade, - ) -> Option { - // Heights are hard-coded below Height::MAX or checked when the config is parsed. - NetworkUpgrade::from(nu) - .activation_height(self) - .map(|Height(h)| zcash_primitives::consensus::BlockHeight::from_u32(h)) - } - - fn coin_type(&self) -> u32 { - match self { - Network::Mainnet => zcash_primitives::constants::mainnet::COIN_TYPE, - // The regtest cointype reuses the testnet cointype, - // See - Network::Testnet(_) => zcash_primitives::constants::testnet::COIN_TYPE, - } - } - - fn address_network(&self) -> Option { - match self { - Network::Mainnet => Some(zcash_address::Network::Main), - // TODO: Check if network is `Regtest` first, and if it is, return `zcash_address::Network::Regtest` - Network::Testnet(_params) => Some(zcash_address::Network::Test), - } - } - - fn hrp_sapling_extended_spending_key(&self) -> &str { - match self { - Network::Mainnet => { - zcash_primitives::constants::mainnet::HRP_SAPLING_EXTENDED_SPENDING_KEY - } - Network::Testnet(params) => params.hrp_sapling_extended_spending_key(), - } - } - - fn hrp_sapling_extended_full_viewing_key(&self) -> &str { - match self { - Network::Mainnet => { - zcash_primitives::constants::mainnet::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY - } - Network::Testnet(params) => params.hrp_sapling_extended_full_viewing_key(), - } - } - - fn hrp_sapling_payment_address(&self) -> &str { - match self { - Network::Mainnet => zcash_primitives::constants::mainnet::HRP_SAPLING_PAYMENT_ADDRESS, - Network::Testnet(params) => params.hrp_sapling_payment_address(), - } - } - - fn b58_pubkey_address_prefix(&self) -> [u8; 2] { - self.kind().b58_pubkey_address_prefix() - } - - fn b58_script_address_prefix(&self) -> [u8; 2] { - self.kind().b58_script_address_prefix() - } -} - impl zcash_protocol::consensus::Parameters for Network { fn network_type(&self) -> zcash_address::Network { self.kind().into() diff --git a/zebra-chain/src/parameters/network/testnet.rs b/zebra-chain/src/parameters/network/testnet.rs index 7e7a56729f..ca2669fe34 100644 --- a/zebra-chain/src/parameters/network/testnet.rs +++ b/zebra-chain/src/parameters/network/testnet.rs @@ -1,8 +1,6 @@ //! Types and implementation for Testnet consensus parameters use std::{collections::BTreeMap, fmt}; -use zcash_primitives::constants as zp_constants; - use crate::{ block::{self, Height}, parameters::{ @@ -76,12 +74,6 @@ pub struct ParametersBuilder { genesis_hash: block::Hash, /// The network upgrade activation heights for this network, see [`Parameters::activation_heights`] for more details. activation_heights: BTreeMap, - /// Sapling extended spending key human-readable prefix for this network - hrp_sapling_extended_spending_key: String, - /// Sapling extended full viewing key human-readable prefix for this network - hrp_sapling_extended_full_viewing_key: String, - /// Sapling payment address human-readable prefix for this network - hrp_sapling_payment_address: String, /// Slow start interval for this network slow_start_interval: Height, /// Target difficulty limit for this network @@ -100,12 +92,6 @@ impl Default for ParametersBuilder { // // `Genesis` network upgrade activation height must always be 0 activation_heights: TESTNET_ACTIVATION_HEIGHTS.iter().cloned().collect(), - hrp_sapling_extended_spending_key: - zp_constants::testnet::HRP_SAPLING_EXTENDED_SPENDING_KEY.to_string(), - hrp_sapling_extended_full_viewing_key: - zp_constants::testnet::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY.to_string(), - hrp_sapling_payment_address: zp_constants::testnet::HRP_SAPLING_PAYMENT_ADDRESS - .to_string(), genesis_hash: TESTNET_GENESIS_HASH .parse() .expect("hard-coded hash parses"), @@ -167,44 +153,6 @@ impl ParametersBuilder { self } - /// Checks that the provided Sapling human-readable prefixes (HRPs) are valid and unique, then - /// sets the Sapling HRPs to be used in the [`Parameters`] being built. - pub fn with_sapling_hrps( - mut self, - hrp_sapling_extended_spending_key: impl fmt::Display, - hrp_sapling_extended_full_viewing_key: impl fmt::Display, - hrp_sapling_payment_address: impl fmt::Display, - ) -> Self { - self.hrp_sapling_extended_spending_key = hrp_sapling_extended_spending_key.to_string(); - self.hrp_sapling_extended_full_viewing_key = - hrp_sapling_extended_full_viewing_key.to_string(); - self.hrp_sapling_payment_address = hrp_sapling_payment_address.to_string(); - - let sapling_hrps = [ - &self.hrp_sapling_extended_spending_key, - &self.hrp_sapling_extended_full_viewing_key, - &self.hrp_sapling_payment_address, - ]; - - for sapling_hrp in sapling_hrps { - assert!(sapling_hrp.len() <= MAX_HRP_LENGTH, "Sapling human-readable prefix {sapling_hrp} is too long, must be {MAX_HRP_LENGTH} characters or less"); - assert!( - sapling_hrp.chars().all(|c| c.is_ascii_lowercase() || c == '-'), - "human-readable prefixes should contain only lowercase ASCII characters and dashes, hrp: {sapling_hrp}" - ); - assert_eq!( - sapling_hrps - .iter() - .filter(|&&hrp| hrp == sapling_hrp) - .count(), - 1, - "Sapling human-readable prefixes must be unique, repeated Sapling HRP: {sapling_hrp}" - ); - } - - self - } - /// Parses the hex-encoded block hash and sets it as the genesis hash in the [`Parameters`] being built. pub fn with_genesis_hash(mut self, genesis_hash: impl fmt::Display) -> Self { self.genesis_hash = genesis_hash @@ -309,9 +257,6 @@ impl ParametersBuilder { network_magic, genesis_hash, activation_heights, - hrp_sapling_extended_spending_key, - hrp_sapling_extended_full_viewing_key, - hrp_sapling_payment_address, slow_start_interval, target_difficulty_limit, disable_pow, @@ -321,9 +266,6 @@ impl ParametersBuilder { network_magic, genesis_hash, activation_heights, - hrp_sapling_extended_spending_key, - hrp_sapling_extended_full_viewing_key, - hrp_sapling_payment_address, slow_start_interval, slow_start_shift: Height(slow_start_interval.0 / 2), target_difficulty_limit, @@ -352,12 +294,6 @@ pub struct Parameters { /// compiled with the `zebra-test` feature flag AND the `TEST_FAKE_ACTIVATION_HEIGHTS` /// environment variable is set. activation_heights: BTreeMap, - /// Sapling extended spending key human-readable prefix for this network - hrp_sapling_extended_spending_key: String, - /// Sapling extended full viewing key human-readable prefix for this network - hrp_sapling_extended_full_viewing_key: String, - /// Sapling payment address human-readable prefix for this network - hrp_sapling_payment_address: String, /// Slow start interval for this network slow_start_interval: Height, /// Slow start shift for this network, always half the slow start interval @@ -400,11 +336,6 @@ impl Parameters { .with_target_difficulty_limit(U256::from_big_endian(&[0x0f; 32])) .with_disable_pow(true) .with_slow_start_interval(Height::MIN) - .with_sapling_hrps( - zp_constants::regtest::HRP_SAPLING_EXTENDED_SPENDING_KEY, - zp_constants::regtest::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY, - zp_constants::regtest::HRP_SAPLING_PAYMENT_ADDRESS, - ) // Removes default Testnet activation heights if not configured, // most network upgrades are disabled by default for Regtest in zcashd .with_activation_heights(ConfiguredActivationHeights { @@ -429,9 +360,6 @@ impl Parameters { genesis_hash, // Activation heights are configurable on Regtest activation_heights: _, - hrp_sapling_extended_spending_key, - hrp_sapling_extended_full_viewing_key, - hrp_sapling_payment_address, slow_start_interval, slow_start_shift, target_difficulty_limit, @@ -441,9 +369,6 @@ impl Parameters { self.network_name == network_name && self.network_magic == network_magic && self.genesis_hash == genesis_hash - && self.hrp_sapling_extended_spending_key == hrp_sapling_extended_spending_key - && self.hrp_sapling_extended_full_viewing_key == hrp_sapling_extended_full_viewing_key - && self.hrp_sapling_payment_address == hrp_sapling_payment_address && self.slow_start_interval == slow_start_interval && self.slow_start_shift == slow_start_shift && self.target_difficulty_limit == target_difficulty_limit @@ -470,21 +395,6 @@ impl Parameters { &self.activation_heights } - /// Returns the `hrp_sapling_extended_spending_key` field - pub fn hrp_sapling_extended_spending_key(&self) -> &str { - &self.hrp_sapling_extended_spending_key - } - - /// Returns the `hrp_sapling_extended_full_viewing_key` field - pub fn hrp_sapling_extended_full_viewing_key(&self) -> &str { - &self.hrp_sapling_extended_full_viewing_key - } - - /// Returns the `hrp_sapling_payment_address` field - pub fn hrp_sapling_payment_address(&self) -> &str { - &self.hrp_sapling_payment_address - } - /// Returns slow start interval for this network pub fn slow_start_interval(&self) -> Height { self.slow_start_interval diff --git a/zebra-chain/src/parameters/network/tests/vectors.rs b/zebra-chain/src/parameters/network/tests/vectors.rs index 07a337acdb..88aa19b404 100644 --- a/zebra-chain/src/parameters/network/tests/vectors.rs +++ b/zebra-chain/src/parameters/network/tests/vectors.rs @@ -1,16 +1,13 @@ //! Fixed test vectors for the network consensus parameters. -use zcash_primitives::{ - consensus::{self as zp_consensus, Parameters}, - constants as zp_constants, -}; +use zcash_primitives::consensus::{self as zp_consensus, Parameters}; +use zcash_protocol::consensus::NetworkConstants as _; use crate::{ block::Height, parameters::{ testnet::{ - self, ConfiguredActivationHeights, MAX_HRP_LENGTH, MAX_NETWORK_NAME_LENGTH, - RESERVED_NETWORK_NAMES, + self, ConfiguredActivationHeights, MAX_NETWORK_NAME_LENGTH, RESERVED_NETWORK_NAMES, }, Network, NetworkUpgrade, MAINNET_ACTIVATION_HEIGHTS, NETWORK_UPGRADES_IN_ORDER, TESTNET_ACTIVATION_HEIGHTS, @@ -216,85 +213,6 @@ fn check_configured_network_name() { ); } -/// Checks that configured Sapling human-readable prefixes (HRPs) are validated and used correctly. -#[test] -fn check_configured_sapling_hrps() { - // Sets a no-op panic hook to avoid long output. - std::panic::set_hook(Box::new(|_| {})); - - // Check that configured Sapling HRPs must be unique. - std::panic::catch_unwind(|| { - testnet::Parameters::build().with_sapling_hrps("", "", ""); - }) - .expect_err("should panic when setting non-unique Sapling HRPs"); - - // Check that max length is enforced, and that network names may only contain lowecase ASCII characters and dashes. - for invalid_hrp in [ - "a".repeat(MAX_NETWORK_NAME_LENGTH + 1), - "!!!!non-alphabetical-name".to_string(), - "A".to_string(), - ] { - std::panic::catch_unwind(|| { - testnet::Parameters::build().with_sapling_hrps(invalid_hrp, "dummy-hrp-a", "dummy-hrp-b"); - }) - .expect_err("should panic when setting Sapling HRPs that are too long or contain non-alphanumeric characters (except '-')"); - } - - // Restore the regular panic hook for any unexpected panics - drop(std::panic::take_hook()); - - // Check that Sapling HRPs can contain lowercase ascii characters and dashes. - let expected_hrp_sapling_extended_spending_key = "sapling-hrp-a"; - let expected_hrp_sapling_extended_full_viewing_key = "sapling-hrp-b"; - let expected_hrp_sapling_payment_address = "sapling-hrp-c"; - - let network = testnet::Parameters::build() - // Check that Sapling HRPs can contain `MAX_HRP_LENGTH` characters - .with_sapling_hrps("a".repeat(MAX_HRP_LENGTH), "dummy-hrp-a", "dummy-hrp-b") - .with_sapling_hrps( - expected_hrp_sapling_extended_spending_key, - expected_hrp_sapling_extended_full_viewing_key, - expected_hrp_sapling_payment_address, - ) - .to_network(); - - // Check that configured Sapling HRPs are returned by `Parameters` trait methods - assert_eq!( - network.hrp_sapling_extended_spending_key(), - expected_hrp_sapling_extended_spending_key, - "should return expected Sapling extended spending key HRP" - ); - assert_eq!( - network.hrp_sapling_extended_full_viewing_key(), - expected_hrp_sapling_extended_full_viewing_key, - "should return expected Sapling EFVK HRP" - ); - assert_eq!( - network.hrp_sapling_payment_address(), - expected_hrp_sapling_payment_address, - "should return expected Sapling payment address HRP" - ); - - // Check that default Mainnet, Testnet, and Regtest HRPs are valid, these calls will panic - // if any of the values fail validation. - testnet::Parameters::build() - .with_sapling_hrps( - zp_constants::mainnet::HRP_SAPLING_EXTENDED_SPENDING_KEY, - zp_constants::mainnet::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY, - zp_constants::mainnet::HRP_SAPLING_PAYMENT_ADDRESS, - ) - .with_sapling_hrps( - zp_constants::testnet::HRP_SAPLING_EXTENDED_SPENDING_KEY, - zp_constants::testnet::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY, - zp_constants::testnet::HRP_SAPLING_PAYMENT_ADDRESS, - ) - .with_sapling_hrps( - zp_constants::regtest::HRP_SAPLING_EXTENDED_SPENDING_KEY, - zp_constants::regtest::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY, - zp_constants::regtest::HRP_SAPLING_PAYMENT_ADDRESS, - ); -} - /// Checks that configured testnet names are validated and used correctly. #[test] fn check_network_name() { diff --git a/zebra-chain/src/parameters/network_upgrade.rs b/zebra-chain/src/parameters/network_upgrade.rs index a5603e0de5..f4f5750690 100644 --- a/zebra-chain/src/parameters/network_upgrade.rs +++ b/zebra-chain/src/parameters/network_upgrade.rs @@ -515,19 +515,6 @@ impl From for NetworkUpgrade { } } -impl From for NetworkUpgrade { - fn from(value: zcash_primitives::consensus::NetworkUpgrade) -> Self { - match value { - zcash_primitives::consensus::NetworkUpgrade::Overwinter => NetworkUpgrade::Overwinter, - zcash_primitives::consensus::NetworkUpgrade::Sapling => NetworkUpgrade::Sapling, - zcash_primitives::consensus::NetworkUpgrade::Blossom => NetworkUpgrade::Blossom, - zcash_primitives::consensus::NetworkUpgrade::Heartwood => NetworkUpgrade::Heartwood, - zcash_primitives::consensus::NetworkUpgrade::Canopy => NetworkUpgrade::Canopy, - zcash_primitives::consensus::NetworkUpgrade::Nu5 => NetworkUpgrade::Nu5, - } - } -} - impl ConsensusBranchId { /// The value used by `zcashd` RPCs for missing consensus branch IDs. /// diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index ac975cd3e7..227742110e 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -4,6 +4,7 @@ use std::{io, ops::Deref}; use zcash_primitives::transaction::{self as zp_tx, TxDigests}; +use zcash_protocol::value::BalanceError; use crate::{ amount::{Amount, NonNegative}, @@ -209,7 +210,7 @@ impl TryFrom for zp_tx::components::TxOut { /// Convert a Zebra non-negative Amount into a librustzcash one. impl TryFrom> for zp_tx::components::amount::NonNegativeAmount { - type Error = (); + type Error = BalanceError; fn try_from(amount: Amount) -> Result { zp_tx::components::amount::NonNegativeAmount::from_nonnegative_i64(amount.into()) diff --git a/zebra-consensus/Cargo.toml b/zebra-consensus/Cargo.toml index e1b1a0eb3d..c8d0a8bccf 100644 --- a/zebra-consensus/Cargo.toml +++ b/zebra-consensus/Cargo.toml @@ -58,9 +58,9 @@ tracing = "0.1.39" tracing-futures = "0.2.5" sapling = { package = "sapling-crypto", version = "0.1" } -orchard = "0.7.0" +orchard = "0.8.0" -zcash_proofs = { version = "0.14.0", features = ["multicore" ] } +zcash_proofs = { version = "0.15.0", features = ["multicore" ] } wagyu-zcash-parameters = "0.2.0" tower-fallback = { path = "../tower-fallback/", version = "0.2.41-beta.13" } diff --git a/zebra-grpc/Cargo.toml b/zebra-grpc/Cargo.toml index 70f667229e..2010b769d6 100644 --- a/zebra-grpc/Cargo.toml +++ b/zebra-grpc/Cargo.toml @@ -26,7 +26,7 @@ tokio-stream = "0.1.15" tower = { version = "0.4.13", features = ["util", "buffer"] } color-eyre = "0.6.3" -zcash_primitives = { version = "0.14.0" } +zcash_primitives = { version = "0.15.0" } zebra-node-services = { path = "../zebra-node-services", version = "1.0.0-beta.37", features = ["shielded-scan"] } zebra-chain = { path = "../zebra-chain" , version = "1.0.0-beta.37" } diff --git a/zebra-rpc/Cargo.toml b/zebra-rpc/Cargo.toml index 1ea74c342a..6adf640de4 100644 --- a/zebra-rpc/Cargo.toml +++ b/zebra-rpc/Cargo.toml @@ -64,7 +64,7 @@ tracing = "0.1.39" hex = { version = "0.4.3", features = ["serde"] } serde = { version = "1.0.203", features = ["serde_derive"] } -zcash_primitives = { version = "0.14.0" } +zcash_primitives = { version = "0.15.0" } # Experimental feature getblocktemplate-rpcs rand = { version = "0.8.5", optional = true } diff --git a/zebra-scan/Cargo.toml b/zebra-scan/Cargo.toml index bdc8db7b68..1672e1d16f 100644 --- a/zebra-scan/Cargo.toml +++ b/zebra-scan/Cargo.toml @@ -53,7 +53,7 @@ futures = "0.3.30" zcash_client_backend = { version = "0.12.1" } zcash_keys = { version = "0.2.0", features = ["sapling"] } -zcash_primitives = "0.14.0" +zcash_primitives = "0.15.0" zcash_address = "0.3.2" sapling = { package = "sapling-crypto", version = "0.1" }