diff --git a/zcash_client_sqlite/src/chain.rs b/zcash_client_sqlite/src/chain.rs index 9dc3d585d..c74a975c0 100644 --- a/zcash_client_sqlite/src/chain.rs +++ b/zcash_client_sqlite/src/chain.rs @@ -163,7 +163,7 @@ mod tests { init::{init_accounts_table, init_data_database}, rewind_to_height, }, - AccountId, BlockDB, WalletDB, NoteId, + AccountId, BlockDB, NoteId, WalletDB, }; #[test] diff --git a/zcash_client_sqlite/src/wallet.rs b/zcash_client_sqlite/src/wallet.rs index b221e0728..2878e54e3 100644 --- a/zcash_client_sqlite/src/wallet.rs +++ b/zcash_client_sqlite/src/wallet.rs @@ -20,7 +20,7 @@ use zcash_client_backend::{ }, }; -use crate::{error::SqliteClientError, AccountId, WalletDB, NoteId}; +use crate::{error::SqliteClientError, AccountId, NoteId, WalletDB}; pub mod init; pub mod transact; @@ -284,10 +284,7 @@ pub fn block_height_extrema( .or(Ok(None)) } -pub fn get_tx_height( - conn: &WalletDB, - txid: TxId, -) -> Result, rusqlite::Error> { +pub fn get_tx_height(conn: &WalletDB, txid: TxId) -> Result, rusqlite::Error> { conn.0 .query_row( "SELECT block FROM transactions WHERE txid = ?", @@ -415,9 +412,7 @@ pub fn get_witnesses( Ok(res) } -pub fn get_nullifiers( - data: &WalletDB, -) -> Result, AccountId)>, SqliteClientError> { +pub fn get_nullifiers(data: &WalletDB) -> Result, AccountId)>, SqliteClientError> { // Get the nullifiers for the notes we are tracking let mut stmt_fetch_nullifiers = data .0 diff --git a/zcash_primitives/src/consensus.rs b/zcash_primitives/src/consensus.rs index f939ea4d8..09a3ea426 100644 --- a/zcash_primitives/src/consensus.rs +++ b/zcash_primitives/src/consensus.rs @@ -129,32 +129,56 @@ pub trait Parameters: Clone { /// if an activation height has been set. fn activation_height(&self, nu: NetworkUpgrade) -> Option; - /// The coin type for ZEC, as defined by [SLIP 44]. - /// - /// [SLIP 44]: https://github.com/satoshilabs/slips/blob/master/slip-0044.md - fn coin_type(&self) -> u32; - - /// Returns the human-readable prefix for Sapling extended full - /// viewing keys for the network to which this Parameters value applies. - fn hrp_sapling_extended_full_viewing_key(&self) -> &str; - - /// Returns the human-readable prefix for Sapling payment addresses - /// viewing keys for the network to which this Parameters value applies. - fn hrp_sapling_payment_address(&self) -> &str; - - /// Returns the human-readable prefix for transparent pay-to-public-key-hash - /// payment addresses for the network to which this Parameters value applies. - fn b58_pubkey_address_prefix(&self) -> [u8; 2]; - - /// Returns the human-readable prefix for transparent pay-to-script-hash - /// payment addresses for the network to which this Parameters value applies. - fn b58_script_address_prefix(&self) -> [u8; 2]; - /// Determines whether the specified network upgrade is active as of the /// provided block height on the network to which this Parameters value applies. fn is_nu_active(&self, nu: NetworkUpgrade, height: BlockHeight) -> bool { self.activation_height(nu).map_or(false, |h| h <= height) } + + /// The coin type for ZEC, as defined by [SLIP 44]. + /// + /// [SLIP 44]: https://github.com/satoshilabs/slips/blob/master/slip-0044.md + fn coin_type(&self) -> u32; + + /// Returns the Bech32-encoded human-readable prefix for Sapling extended spending keys + /// the network to which this Parameters value applies. + /// + /// Defined in [ZIP 32]. + /// + /// [`ExtendedSpendingKey`]: zcash_primitives::zip32::ExtendedSpendingKey + /// [ZIP 32]: https://github.com/zcash/zips/blob/master/zip-0032.rst + fn hrp_sapling_extended_spending_key(&self) -> &str; + + /// Returns the Bech32-encoded human-readable prefix for Sapling extended full + /// viewing keys for the network to which this Parameters value applies. + /// + /// Defined in [ZIP 32]. + /// + /// [`ExtendedFullViewingKey`]: zcash_primitives::zip32::ExtendedFullViewingKey + /// [ZIP 32]: https://github.com/zcash/zips/blob/master/zip-0032.rst + fn hrp_sapling_extended_full_viewing_key(&self) -> &str; + + /// Returns the Bech32-encoded human-readable prefix for Sapling payment addresses + /// viewing keys for the network to which this Parameters value applies. + /// + /// Defined in section 5.6.4 of the [Zcash Protocol Specification]. + /// + /// [`PaymentAddress`]: zcash_primitives::primitives::PaymentAddress + /// [Zcash Protocol Specification]: https://github.com/zcash/zips/blob/master/protocol/protocol.pdf + fn hrp_sapling_payment_address(&self) -> &str; + + /// Returns the Base58Check-encoded human-readable prefix for transparent + /// pay-to-public-key-hash payment addresses for the network to which this Parameters value + /// applies. + /// + /// [`TransparentAddress::PublicKey`]: zcash_primitives::legacy::TransparentAddress::PublicKey + fn b58_pubkey_address_prefix(&self) -> [u8; 2]; + + /// Returns the Base58Check-encoded human-readable prefix for transparent pay-to-script-hash + /// payment addresses for the network to which this Parameters value applies. + /// + /// [`TransparentAddress::Script`]: zcash_primitives::legacy::TransparentAddress::Script + fn b58_script_address_prefix(&self) -> [u8; 2]; } /// Marker struct for the production network. @@ -179,6 +203,10 @@ impl Parameters for MainNetwork { constants::mainnet::COIN_TYPE } + fn hrp_sapling_extended_spending_key(&self) -> &str { + constants::mainnet::HRP_SAPLING_EXTENDED_SPENDING_KEY + } + fn hrp_sapling_extended_full_viewing_key(&self) -> &str { constants::mainnet::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY } @@ -218,6 +246,10 @@ impl Parameters for TestNetwork { constants::testnet::COIN_TYPE } + fn hrp_sapling_extended_spending_key(&self) -> &str { + constants::testnet::HRP_SAPLING_EXTENDED_SPENDING_KEY + } + fn hrp_sapling_extended_full_viewing_key(&self) -> &str { constants::testnet::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY } @@ -256,6 +288,13 @@ impl Parameters for Network { } } + fn hrp_sapling_extended_spending_key(&self) -> &str { + match self { + Network::MainNetwork => MAIN_NETWORK.hrp_sapling_extended_spending_key(), + Network::TestNetwork => TEST_NETWORK.hrp_sapling_extended_spending_key(), + } + } + fn hrp_sapling_extended_full_viewing_key(&self) -> &str { match self { Network::MainNetwork => MAIN_NETWORK.hrp_sapling_extended_full_viewing_key(),