diff --git a/zcash_client_sqlite/src/wallet/transparent.rs b/zcash_client_sqlite/src/wallet/transparent.rs index 06d534ef0..c4beffb8c 100644 --- a/zcash_client_sqlite/src/wallet/transparent.rs +++ b/zcash_client_sqlite/src/wallet/transparent.rs @@ -418,6 +418,10 @@ pub(crate) fn generate_gap_addresses( let account = get_account_internal(conn, params, account_id)? .ok_or_else(|| SqliteClientError::AccountUnknown)?; + if !account.uivk().has_transparent() { + return Ok(()); + } + let gen_addrs = |key_scope: KeyScope, index: NonHardenedChildIndex| { Ok::<_, SqliteClientError>(match key_scope { KeyScope::Zip32(zip32::Scope::External) => { @@ -426,7 +430,7 @@ pub(crate) fn generate_gap_addresses( .uivk() .transparent() .as_ref() - .ok_or(AddressGenerationError::KeyNotAvailable(Typecode::P2pkh))? + .expect("presence of transparent key was checked above.") .derive_address(index)?; ( ua.map_or_else( @@ -448,7 +452,7 @@ pub(crate) fn generate_gap_addresses( let internal_address = account .ufvk() .and_then(|k| k.transparent()) - .ok_or(AddressGenerationError::KeyNotAvailable(Typecode::P2pkh))? + .expect("presence of transparent key was checked above.") .derive_internal_ivk()? .derive_address(index)?; ( @@ -460,7 +464,7 @@ pub(crate) fn generate_gap_addresses( let ephemeral_address = account .ufvk() .and_then(|k| k.transparent()) - .ok_or(AddressGenerationError::KeyNotAvailable(Typecode::P2pkh))? + .expect("presence of transparent key was checked above.") .derive_ephemeral_ivk()? .derive_ephemeral_address(index)?; (