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 149ca423cd4..6dbff2df09c 100644 --- a/zebra-chain/src/primitives/zcash_primitives.rs +++ b/zebra-chain/src/primitives/zcash_primitives.rs @@ -351,10 +351,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, } 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),