diff --git a/zcash_client_sqlite/src/lib.rs b/zcash_client_sqlite/src/lib.rs index ea488cf29..ff8502b0a 100644 --- a/zcash_client_sqlite/src/lib.rs +++ b/zcash_client_sqlite/src/lib.rs @@ -107,8 +107,13 @@ pub(crate) const VERIFY_LOOKAHEAD: u32 = 10; pub(crate) const SAPLING_TABLES_PREFIX: &str = "sapling"; -pub const DEFAULT_UA_REQUEST: UnifiedAddressRequest = - UnifiedAddressRequest::unsafe_new(false, true, true); +#[cfg(not(feature = "transparent-inputs"))] +pub(crate) const UA_TRANSPARENT: bool = false; +#[cfg(feature = "transparent-inputs")] +pub(crate) const UA_TRANSPARENT: bool = true; + +pub(crate) const DEFAULT_UA_REQUEST: UnifiedAddressRequest = + UnifiedAddressRequest::unsafe_new(false, true, UA_TRANSPARENT); /// A newtype wrapper for received note identifiers. #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] diff --git a/zcash_client_sqlite/src/wallet/init/migrations/add_transaction_views.rs b/zcash_client_sqlite/src/wallet/init/migrations/add_transaction_views.rs index 3794a76d9..4e48e9ce0 100644 --- a/zcash_client_sqlite/src/wallet/init/migrations/add_transaction_views.rs +++ b/zcash_client_sqlite/src/wallet/init/migrations/add_transaction_views.rs @@ -398,6 +398,8 @@ mod tests { use zcash_client_backend::keys::UnifiedAddressRequest; use zcash_primitives::transaction::components::amount::NonNegativeAmount; + use crate::UA_TRANSPARENT; + let network = Network::TestNetwork; let data_file = NamedTempFile::new().unwrap(); let mut db_data = WalletDb::for_path(data_file.path(), network).unwrap(); @@ -438,7 +440,11 @@ mod tests { let usk = UnifiedSpendingKey::from_seed(&network, &[0u8; 32][..], AccountId::ZERO).unwrap(); let ufvk = usk.to_unified_full_viewing_key(); - let (ua, _) = ufvk.default_address(UnifiedAddressRequest::unsafe_new(false, true, true)); + let (ua, _) = ufvk.default_address(UnifiedAddressRequest::unsafe_new( + false, + true, + UA_TRANSPARENT, + )); let taddr = ufvk .transparent() .and_then(|k| { diff --git a/zcash_client_sqlite/src/wallet/init/migrations/addresses_table.rs b/zcash_client_sqlite/src/wallet/init/migrations/addresses_table.rs index 12311b2a2..353da97b2 100644 --- a/zcash_client_sqlite/src/wallet/init/migrations/addresses_table.rs +++ b/zcash_client_sqlite/src/wallet/init/migrations/addresses_table.rs @@ -8,7 +8,10 @@ use zcash_client_backend::{address::Address, keys::UnifiedFullViewingKey}; use zcash_keys::keys::UnifiedAddressRequest; use zcash_primitives::{consensus, zip32::AccountId}; -use crate::wallet::{init::WalletMigrationError, insert_address}; +use crate::{ + wallet::{init::WalletMigrationError, insert_address}, + UA_TRANSPARENT, +}; #[cfg(feature = "transparent-inputs")] use zcash_primitives::legacy::keys::IncomingViewingKey; @@ -85,8 +88,11 @@ impl RusqliteMigration for Migration

{ "Address in accounts table was not a Unified Address.".to_string(), )); }; - let (expected_address, idx) = - ufvk.default_address(UnifiedAddressRequest::unsafe_new(false, true, true)); + let (expected_address, idx) = ufvk.default_address(UnifiedAddressRequest::unsafe_new( + false, + true, + UA_TRANSPARENT, + )); if decoded_address != expected_address { return Err(WalletMigrationError::CorruptedData(format!( "Decoded UA {} does not match the UFVK's default address {} at {:?}.", @@ -156,8 +162,11 @@ impl RusqliteMigration for Migration

{ ], )?; - let (address, d_idx) = - ufvk.default_address(UnifiedAddressRequest::unsafe_new(false, true, true)); + let (address, d_idx) = ufvk.default_address(UnifiedAddressRequest::unsafe_new( + false, + true, + UA_TRANSPARENT, + )); insert_address(transaction, &self.params, account, d_idx, &address)?; } diff --git a/zcash_client_sqlite/src/wallet/init/migrations/ufvk_support.rs b/zcash_client_sqlite/src/wallet/init/migrations/ufvk_support.rs index 7b80be3ba..7e5f7b6e4 100644 --- a/zcash_client_sqlite/src/wallet/init/migrations/ufvk_support.rs +++ b/zcash_client_sqlite/src/wallet/init/migrations/ufvk_support.rs @@ -19,9 +19,12 @@ use zcash_primitives::legacy::keys::IncomingViewingKey; #[cfg(feature = "transparent-inputs")] use zcash_client_backend::encoding::AddressCodec; -use crate::wallet::{ - init::{migrations::initial_setup, WalletMigrationError}, - pool_code, +use crate::{ + wallet::{ + init::{migrations::initial_setup, WalletMigrationError}, + pool_code, + }, + UA_TRANSPARENT, }; pub(super) const MIGRATION_ID: Uuid = Uuid::from_u128(0xbe57ef3b_388e_42ea_97e2_678dafcf9754); @@ -65,7 +68,7 @@ impl RusqliteMigration for Migration

{ let mut stmt_fetch_accounts = transaction.prepare("SELECT account, address FROM accounts")?; - let ua_request = UnifiedAddressRequest::new(false, true, true) + let ua_request = UnifiedAddressRequest::new(false, true, UA_TRANSPARENT) .expect("A shielded receiver type is requested."); let mut rows = stmt_fetch_accounts.query([])?; while let Some(row) = rows.next()? {