diff --git a/zcash_client_sqlite/src/wallet/init.rs b/zcash_client_sqlite/src/wallet/init.rs index 572e54b2b..a55f8c609 100644 --- a/zcash_client_sqlite/src/wallet/init.rs +++ b/zcash_client_sqlite/src/wallet/init.rs @@ -2,13 +2,9 @@ use rusqlite::{types::ToSql, NO_PARAMS}; -use zcash_primitives::{ - block::BlockHash, - consensus::{self, BlockHeight}, - zip32::ExtendedFullViewingKey, -}; +use zcash_primitives::{block::BlockHash, consensus::{self, BlockHeight}, legacy::TransparentAddress, zip32::ExtendedFullViewingKey}; -use zcash_client_backend::encoding::encode_extended_full_viewing_key; +use zcash_client_backend::encoding::{encode_extended_full_viewing_key, AddressCodec}; use crate::{address_from_extfvk, error::SqliteClientError, WalletDb}; @@ -161,6 +157,7 @@ pub fn init_wallet_db

(wdb: &WalletDb

) -> Result<(), rusqlite::Error> { pub fn init_accounts_table( wdb: &WalletDb

, extfvks: &[ExtendedFullViewingKey], + taddrs: &Vec, ) -> Result<(), SqliteClientError> { let mut empty_check = wdb.conn.prepare("SELECT * FROM accounts LIMIT 1")?; if empty_check.exists(NO_PARAMS)? { @@ -169,21 +166,23 @@ pub fn init_accounts_table( // Insert accounts atomically wdb.conn.execute("BEGIN IMMEDIATE", NO_PARAMS)?; - for (account, extfvk) in extfvks.iter().enumerate() { + for (account, (extfvk, taddr)) in extfvks.iter().zip(taddrs.iter()).enumerate() { let extfvk_str = encode_extended_full_viewing_key( wdb.params.hrp_sapling_extended_full_viewing_key(), extfvk, ); let address_str = address_from_extfvk(&wdb.params, extfvk); + let taddress_str: String = taddr.encode(&wdb.params); wdb.conn.execute( - "INSERT INTO accounts (account, extfvk, address) - VALUES (?, ?, ?)", + "INSERT INTO accounts (account, extfvk, address, transparent_address) + VALUES (?, ?, ?, ?)", &[ (account as u32).to_sql()?, extfvk_str.to_sql()?, address_str.to_sql()?, + taddress_str.to_sql()?, ], )?; }