From d6a5cbab19b0589413052de8d3b3825674fa4a55 Mon Sep 17 00:00:00 2001 From: Arya Date: Fri, 24 Jan 2025 17:33:14 -0500 Subject: [PATCH 1/2] Use `TestnetKind` as transparent addr network kinds on Regtest --- zebra-chain/src/parameters/network.rs | 13 +++++++++++-- zebra-chain/src/primitives/zcash_primitives.rs | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/zebra-chain/src/parameters/network.rs b/zebra-chain/src/parameters/network.rs index e8571340b7d..71ede1ba7f6 100644 --- a/zebra-chain/src/parameters/network.rs +++ b/zebra-chain/src/parameters/network.rs @@ -29,8 +29,7 @@ pub enum NetworkKind { /// A test network. Testnet, - /// Regtest mode, not yet implemented - // TODO: Add `new_regtest()` and `is_regtest` methods on `Network`. + /// Regtest mode Regtest, } @@ -186,6 +185,16 @@ impl Network { } } + /// Returns [`NetworkKind::Testnet`] on Testnet and Regtest, or [`NetworkKind::Mainnet`] on Mainnet. + /// + /// This is used for transparent addresses, as the address prefix is the same on Regtest as it is on Testnet. + pub fn t_addr_kind(&self) -> NetworkKind { + match self { + Network::Mainnet => NetworkKind::Mainnet, + Network::Testnet(_) => NetworkKind::Testnet, + } + } + /// Returns an iterator over [`Network`] variants. pub fn iter() -> impl Iterator { [Self::Mainnet, Self::new_default_testnet()].into_iter() diff --git a/zebra-chain/src/primitives/zcash_primitives.rs b/zebra-chain/src/primitives/zcash_primitives.rs index 7ab2f32d751..ac6fe5d9c65 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -367,10 +367,10 @@ pub(crate) fn transparent_output_address( match alt_addr { Some(zcash_primitives::legacy::TransparentAddress::PublicKeyHash(pub_key_hash)) => Some( - transparent::Address::from_pub_key_hash(network.kind(), pub_key_hash), + transparent::Address::from_pub_key_hash(network.t_addr_kind(), pub_key_hash), ), Some(zcash_primitives::legacy::TransparentAddress::ScriptHash(script_hash)) => Some( - transparent::Address::from_script_hash(network.kind(), script_hash), + transparent::Address::from_script_hash(network.t_addr_kind(), script_hash), ), None => None, } From 1d73f1c60ff5d3618feb5c45f9d35033ef502ca0 Mon Sep 17 00:00:00 2001 From: Arya Date: Wed, 29 Jan 2025 20:17:00 -0500 Subject: [PATCH 2/2] Updates outdated error message --- zebra-consensus/src/error.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zebra-consensus/src/error.rs b/zebra-consensus/src/error.rs index caf68bad225..9c7307d5ee1 100644 --- a/zebra-consensus/src/error.rs +++ b/zebra-consensus/src/error.rs @@ -204,7 +204,7 @@ pub enum TransactionError { #[error("could not find a mempool transaction input UTXO in the best chain")] TransparentInputNotFound, - #[error("could not validate nullifiers and anchors on best chain: {0}")] + #[error("could not contextually validate transaction on best chain: {0}")] #[cfg_attr(any(test, feature = "proptest-impl"), proptest(skip))] // This error variant is at least 128 bytes ValidateContextError(Box),