From d78735fa9f34fae809a78fa5cde926e1aca35b04 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Tue, 4 Mar 2025 18:36:57 -0700 Subject: [PATCH] Update to latest patch revision of `librustzcash` crates. --- Cargo.lock | 42 ++++++++++----------------- Cargo.toml | 14 +++++++++ src/commands/inspect/keys.rs | 6 ++-- src/commands/inspect/keys/view.rs | 6 ++-- src/commands/keystone.rs | 4 +-- src/commands/pczt/create.rs | 4 +-- src/commands/pczt/send.rs | 9 +++--- src/commands/pczt/shield.rs | 4 +-- src/commands/wallet/balance.rs | 8 +++-- src/commands/wallet/enhance.rs | 4 +-- src/commands/wallet/import_ufvk.rs | 4 +-- src/commands/wallet/list_accounts.rs | 2 +- src/commands/wallet/list_addresses.rs | 7 +++-- src/commands/wallet/list_unspent.rs | 2 +- src/commands/wallet/propose.rs | 4 +-- src/commands/wallet/reset.rs | 4 +-- src/commands/wallet/send.rs | 4 +-- src/commands/wallet/shield.rs | 4 +-- src/commands/wallet/sync.rs | 18 +++++++----- src/commands/wallet/upgrade.rs | 3 +- src/data.rs | 5 ++-- 21 files changed, 88 insertions(+), 70 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bec3876..10e8cae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1880,8 +1880,7 @@ dependencies = [ [[package]] name = "equihash" version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "756c3654e279e572484a6061a4f90a67849baeab43be89a622b9950105254674" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "blake2b_simd", "core2", @@ -1932,8 +1931,7 @@ dependencies = [ [[package]] name = "f4jumble" version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d42773cb15447644d170be20231a3268600e0c4cea8987d013b93ac973d3cf7" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "blake2b_simd", ] @@ -3914,8 +3912,7 @@ dependencies = [ [[package]] name = "pczt" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a44b9f258645cbbac406c876e0355f4a71e3f68baa3bb30fd517b28164e0222" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "blake2b_simd", "bls12_381", @@ -7653,8 +7650,7 @@ dependencies = [ [[package]] name = "zcash_address" version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a21f218c86b350d706c22489af999b098e19bf92ed6dd71770660ea29ee707d" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "bech32 0.11.0", "bs58", @@ -7667,8 +7663,7 @@ dependencies = [ [[package]] name = "zcash_client_backend" version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd14f1ef34cacef42dd2149783dad3d1f46949cb72da786f6ab13d6aa142020b" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "arti-client", "base64 0.22.1", @@ -7732,10 +7727,10 @@ dependencies = [ [[package]] name = "zcash_client_sqlite" version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f608480b61455f6ca73d33c6f8154a04506ad388fd56b18e9a4b3e014b3efa7" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "bip32", + "bitflags 2.8.0", "bs58", "byteorder", "document-features", @@ -7772,8 +7767,7 @@ dependencies = [ [[package]] name = "zcash_encoding" version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca38087e6524e5f51a5b0fb3fc18f36d7b84bf67b2056f494ca0c281590953d" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "core2", "nonempty", @@ -7782,8 +7776,7 @@ dependencies = [ [[package]] name = "zcash_keys" version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af2839a7bb0489ccf0db9fb12c67234dd83e4a3b81ef50a10beecf1e852a18e" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "bech32 0.11.0", "bip32", @@ -7825,13 +7818,14 @@ dependencies = [ [[package]] name = "zcash_primitives" version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7574550ec5eba75f4e9d447b186de1541c40251d7f3ae2693ddaa5a477760190" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "bip32", "blake2b_simd", + "block-buffer 0.11.0-rc.3", "bs58", "core2", + "crypto-common 0.2.0-rc.1", "document-features", "equihash", "ff", @@ -7865,8 +7859,7 @@ dependencies = [ [[package]] name = "zcash_proofs" version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bd0b0fe6a98a8b07e30c58457a2c2085f90e57ffac18eec9f72a566b471bde" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "bellman", "blake2b_simd", @@ -7888,8 +7881,7 @@ dependencies = [ [[package]] name = "zcash_protocol" version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72df627873d103e973b536d34d16cc802d06a3d1494dc010781449789a156dc5" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "core2", "document-features", @@ -7912,8 +7904,7 @@ dependencies = [ [[package]] name = "zcash_transparent" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b0c4ea6d9b94b5159106b65b57c4a9ea46859e7f7f8fb1be3e18e2d25bc372" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "bip32", "blake2b_simd", @@ -7990,8 +7981,7 @@ dependencies = [ [[package]] name = "zip321" version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91b5156b2f2e06d7819c2a5fcd4d515e745f5ac97a06cfb3721205d965de8f13" +source = "git+https://github.com/zcash/librustzcash.git?rev=f615a73a673aec8acbcdebea668aff9f4bf4a154#f615a73a673aec8acbcdebea668aff9f4bf4a154" dependencies = [ "base64 0.22.1", "nom", diff --git a/Cargo.toml b/Cargo.toml index babc290..e7b4f31 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,3 +95,17 @@ tui = [ "dep:tokio-util", "dep:tui-logger", ] + +[patch.crates-io] +equihash = { git = "https://github.com/zcash/librustzcash.git", rev = "f615a73a673aec8acbcdebea668aff9f4bf4a154" } +pczt = { git = "https://github.com/zcash/librustzcash.git", rev = "f615a73a673aec8acbcdebea668aff9f4bf4a154" } +transparent = { package = "zcash_transparent", git = "https://github.com/zcash/librustzcash.git", rev = "f615a73a673aec8acbcdebea668aff9f4bf4a154" } +zcash_address = { git = "https://github.com/zcash/librustzcash.git", rev = "f615a73a673aec8acbcdebea668aff9f4bf4a154" } +zcash_client_backend = { git = "https://github.com/zcash/librustzcash.git", rev = "f615a73a673aec8acbcdebea668aff9f4bf4a154" } +zcash_client_sqlite = { git = "https://github.com/zcash/librustzcash.git", rev = "f615a73a673aec8acbcdebea668aff9f4bf4a154" } +zcash_encoding = { git = "https://github.com/zcash/librustzcash.git", rev = "f615a73a673aec8acbcdebea668aff9f4bf4a154" } +zcash_keys = { git = "https://github.com/zcash/librustzcash.git", rev = "f615a73a673aec8acbcdebea668aff9f4bf4a154" } +zcash_primitives = { git = "https://github.com/zcash/librustzcash.git", rev = "f615a73a673aec8acbcdebea668aff9f4bf4a154" } +zcash_proofs = { git = "https://github.com/zcash/librustzcash.git", rev = "f615a73a673aec8acbcdebea668aff9f4bf4a154" } +zcash_protocol = { git = "https://github.com/zcash/librustzcash.git", rev = "f615a73a673aec8acbcdebea668aff9f4bf4a154" } +zip321 = { git = "https://github.com/zcash/librustzcash.git", rev = "f615a73a673aec8acbcdebea668aff9f4bf4a154" } diff --git a/src/commands/inspect/keys.rs b/src/commands/inspect/keys.rs index dc9a9df..7bd1b63 100644 --- a/src/commands/inspect/keys.rs +++ b/src/commands/inspect/keys.rs @@ -12,7 +12,7 @@ use zcash_address::{ unified::{self, Encoding}, ToAddress, ZcashAddress, }; -use zcash_keys::keys::UnifiedFullViewingKey; +use zcash_keys::keys::{UnifiedAddressRequest, UnifiedFullViewingKey}; use zcash_protocol::{ consensus::{Network, NetworkConstants, NetworkType}, local_consensus::LocalNetwork, @@ -201,7 +201,9 @@ pub(crate) fn inspect_sapling_extsk(data: Vec, network: NetworkType) { }; eprintln!("- UFVK: {encoded_ufvk}"); - let (default_ua, _) = ufvk.default_address(None).expect("should exist"); + let (default_ua, _) = ufvk + .default_address(UnifiedAddressRequest::AllAvailableKeys) + .expect("should exist"); let encoded_ua = match network { NetworkType::Main => default_ua.encode(&Network::MainNetwork), NetworkType::Test => default_ua.encode(&Network::TestNetwork), diff --git a/src/commands/inspect/keys/view.rs b/src/commands/inspect/keys/view.rs index e23a73a..791f1da 100644 --- a/src/commands/inspect/keys/view.rs +++ b/src/commands/inspect/keys/view.rs @@ -1,6 +1,6 @@ use bech32::{Bech32, Hrp}; use zcash_address::unified::{self, Container, Encoding}; -use zcash_keys::keys::UnifiedFullViewingKey; +use zcash_keys::keys::{UnifiedAddressRequest, UnifiedFullViewingKey}; use zcash_protocol::{ consensus::{Network, NetworkConstants, NetworkType}, local_consensus::LocalNetwork, @@ -123,7 +123,9 @@ pub(crate) fn inspect_sapling_extfvk(data: Vec, network: NetworkType) { }; eprintln!("- Equivalent UFVK: {encoded_ufvk}"); - let (default_ua, _) = ufvk.default_address(None).expect("should exist"); + let (default_ua, _) = ufvk + .default_address(UnifiedAddressRequest::AllAvailableKeys) + .expect("should exist"); let encoded_ua = match network { NetworkType::Main => default_ua.encode(&Network::MainNetwork), NetworkType::Test => default_ua.encode(&Network::TestNetwork), diff --git a/src/commands/keystone.rs b/src/commands/keystone.rs index 49ba947..fe0c8ce 100644 --- a/src/commands/keystone.rs +++ b/src/commands/keystone.rs @@ -7,7 +7,7 @@ use qrcode::{render::unicode, QrCode}; use tokio::io::{stdout, AsyncWriteExt}; use uuid::Uuid; use zcash_client_backend::data_api::Account; -use zcash_client_sqlite::WalletDb; +use zcash_client_sqlite::{util::SystemClock, WalletDb}; use crate::{config::WalletConfig, data::get_db_paths, ShutdownListener}; @@ -44,7 +44,7 @@ impl Enroll { let params = config.network(); let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let db_data = WalletDb::for_path(db_data, params)?; + let db_data = WalletDb::for_path(db_data, params, SystemClock)?; let account = select_account(&db_data, self.account_id)?; let key_derivation = account diff --git a/src/commands/pczt/create.rs b/src/commands/pczt/create.rs index c8a6e8c..bc8311c 100644 --- a/src/commands/pczt/create.rs +++ b/src/commands/pczt/create.rs @@ -17,7 +17,7 @@ use zcash_client_backend::{ fees::{standard::MultiOutputChangeStrategy, DustOutputPolicy, SplitPolicy, StandardFeeRule}, wallet::OvkPolicy, }; -use zcash_client_sqlite::WalletDb; +use zcash_client_sqlite::{util::SystemClock, WalletDb}; use zcash_protocol::{ memo::{Memo, MemoBytes}, value::Zatoshis, @@ -64,7 +64,7 @@ impl Command { let params = config.network(); let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let mut db_data = WalletDb::for_path(db_data, params)?; + let mut db_data = WalletDb::for_path(db_data, params, SystemClock)?; let account = select_account(&db_data, self.account_id)?; // Create the PCZT. diff --git a/src/commands/pczt/send.rs b/src/commands/pczt/send.rs index 40e0ac1..69ed548 100644 --- a/src/commands/pczt/send.rs +++ b/src/commands/pczt/send.rs @@ -6,7 +6,7 @@ use zcash_client_backend::{ data_api::{wallet::extract_and_store_transaction_from_pczt, WalletRead}, proto::service, }; -use zcash_client_sqlite::WalletDb; +use zcash_client_sqlite::{util::SystemClock, WalletDb}; use zcash_proofs::prover::LocalTxProver; use crate::{ @@ -35,7 +35,7 @@ impl Command { let params = config.network(); let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let mut db_data = WalletDb::for_path(db_data, params)?; + let mut db_data = WalletDb::for_path(db_data, params, SystemClock)?; let server = self.server.pick(params)?; let mut client = if self.disable_tor { @@ -56,9 +56,8 @@ impl Command { let txid = extract_and_store_transaction_from_pczt::<_, ()>( &mut db_data, pczt, - &spend_vk, - &output_vk, - &orchard::circuit::VerifyingKey::build(), + Some((&spend_vk, &output_vk)), + Some(&orchard::circuit::VerifyingKey::build()), ) .map_err(|e| anyhow!("Failed to extract and store transaction from PCZT: {:?}", e))?; diff --git a/src/commands/pczt/shield.rs b/src/commands/pczt/shield.rs index 53f007f..a24a523 100644 --- a/src/commands/pczt/shield.rs +++ b/src/commands/pczt/shield.rs @@ -14,7 +14,7 @@ use zcash_client_backend::{ fees::{standard::MultiOutputChangeStrategy, DustOutputPolicy, SplitPolicy, StandardFeeRule}, wallet::OvkPolicy, }; -use zcash_client_sqlite::WalletDb; +use zcash_client_sqlite::{util::SystemClock, WalletDb}; use zcash_protocol::{value::Zatoshis, ShieldedProtocol}; use crate::{commands::select_account, config::WalletConfig, data::get_db_paths, error}; @@ -42,7 +42,7 @@ impl Command { let params = config.network(); let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let mut db_data = WalletDb::for_path(db_data, params)?; + let mut db_data = WalletDb::for_path(db_data, params, SystemClock)?; let account = select_account(&db_data, self.account_id)?; // Create the PCZT. diff --git a/src/commands/wallet/balance.rs b/src/commands/wallet/balance.rs index 02dea06..7d6bce2 100644 --- a/src/commands/wallet/balance.rs +++ b/src/commands/wallet/balance.rs @@ -9,6 +9,7 @@ use zcash_client_backend::{ tor, }; use zcash_client_sqlite::WalletDb; +use zcash_keys::keys::UnifiedAddressRequest; use zcash_protocol::value::{Zatoshis, COIN}; use crate::{ @@ -33,11 +34,14 @@ impl Command { let params = get_wallet_network(wallet_dir.as_ref())?; let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let db_data = WalletDb::for_path(db_data, params)?; + let db_data = WalletDb::for_path(db_data, params, ())?; let account = select_account(&db_data, self.account_id)?; let address = db_data - .get_current_address(account.id())? + .get_last_generated_address_matching( + account.id(), + UnifiedAddressRequest::AllAvailableKeys, + )? .ok_or(error::Error::InvalidRecipient)?; let printer = if let Some(currency) = self.convert { diff --git a/src/commands/wallet/enhance.rs b/src/commands/wallet/enhance.rs index c3f91c0..1baadbf 100644 --- a/src/commands/wallet/enhance.rs +++ b/src/commands/wallet/enhance.rs @@ -14,7 +14,7 @@ use zcash_client_backend::{ self, compact_tx_streamer_client::CompactTxStreamerClient, BlockRange, RawTransaction, }, }; -use zcash_client_sqlite::WalletDb; +use zcash_client_sqlite::{util::SystemClock, WalletDb}; use zcash_keys::encoding::AddressCodec; use zcash_primitives::transaction::{Transaction, TxId}; use zcash_protocol::consensus::{BlockHeight, BranchId, Network}; @@ -87,7 +87,7 @@ impl Command { let params = get_wallet_network(wallet_dir.as_ref())?; let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let mut db_data = WalletDb::for_path(db_data, params)?; + let mut db_data = WalletDb::for_path(db_data, params, SystemClock)?; let chain_tip = db_data.chain_height()?.ok_or_else(|| { anyhow!("Chain height must be available to perform transaction enhancement.") })?; diff --git a/src/commands/wallet/import_ufvk.rs b/src/commands/wallet/import_ufvk.rs index b8b8f97..ab47956 100644 --- a/src/commands/wallet/import_ufvk.rs +++ b/src/commands/wallet/import_ufvk.rs @@ -6,7 +6,7 @@ use zcash_client_backend::{ data_api::{AccountBirthday, AccountPurpose, WalletWrite, Zip32Derivation}, proto::service, }; -use zcash_client_sqlite::WalletDb; +use zcash_client_sqlite::{util::SystemClock, WalletDb}; use zcash_keys::keys::UnifiedFullViewingKey; use zcash_protocol::consensus; use zip32::fingerprint::SeedFingerprint; @@ -63,7 +63,7 @@ impl Command { }?; let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let mut db_data = WalletDb::for_path(db_data, params)?; + let mut db_data = WalletDb::for_path(db_data, params, SystemClock)?; // Construct an `AccountBirthday` for the account's birthday. let birthday = { diff --git a/src/commands/wallet/list_accounts.rs b/src/commands/wallet/list_accounts.rs index 9d5d0cf..0e075ed 100644 --- a/src/commands/wallet/list_accounts.rs +++ b/src/commands/wallet/list_accounts.rs @@ -12,7 +12,7 @@ impl Command { pub(crate) fn run(self, wallet_dir: Option) -> anyhow::Result<()> { let params = get_wallet_network(wallet_dir.as_ref())?; let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let db_data = WalletDb::for_path(db_data, params)?; + let db_data = WalletDb::for_path(db_data, params, ())?; for account_id in db_data.get_account_ids()?.iter() { let account = db_data.get_account(*account_id)?.unwrap(); diff --git a/src/commands/wallet/list_addresses.rs b/src/commands/wallet/list_addresses.rs index a2a8231..2274e98 100644 --- a/src/commands/wallet/list_addresses.rs +++ b/src/commands/wallet/list_addresses.rs @@ -2,6 +2,7 @@ use clap::Args; use uuid::Uuid; use zcash_client_backend::data_api::Account; use zcash_client_sqlite::WalletDb; +use zcash_keys::keys::UnifiedAddressRequest; use crate::{commands::select_account, config::get_wallet_network, data::get_db_paths}; @@ -16,12 +17,14 @@ impl Command { pub(crate) fn run(self, wallet_dir: Option) -> anyhow::Result<()> { let params = get_wallet_network(wallet_dir.as_ref())?; let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let db_data = WalletDb::for_path(db_data, params)?; + let db_data = WalletDb::for_path(db_data, params, ())?; let account = select_account(&db_data, self.account_id)?; println!("Account {:?}", account.id()); - let (ua, _) = account.uivk().default_address(None)?; + let (ua, _) = account + .uivk() + .default_address(UnifiedAddressRequest::AllAvailableKeys)?; println!(" Default Address: {}", ua.encode(¶ms)); Ok(()) } diff --git a/src/commands/wallet/list_unspent.rs b/src/commands/wallet/list_unspent.rs index a95f04f..667ff5e 100644 --- a/src/commands/wallet/list_unspent.rs +++ b/src/commands/wallet/list_unspent.rs @@ -24,7 +24,7 @@ impl Command { let params = get_wallet_network(wallet_dir.as_ref())?; let (_, db_data) = get_db_paths(wallet_dir); - let db_data = WalletDb::for_path(db_data, params)?; + let db_data = WalletDb::for_path(db_data, params, ())?; let account = select_account(&db_data, self.account_id)?; // Use the height of the maximum scanned block as the anchor height, to emulate a diff --git a/src/commands/wallet/propose.rs b/src/commands/wallet/propose.rs index 3d865ef..37e784f 100644 --- a/src/commands/wallet/propose.rs +++ b/src/commands/wallet/propose.rs @@ -11,7 +11,7 @@ use zcash_client_backend::{ }, fees::{zip317::MultiOutputChangeStrategy, DustOutputPolicy, SplitPolicy, StandardFeeRule}, }; -use zcash_client_sqlite::WalletDb; +use zcash_client_sqlite::{util::SystemClock, WalletDb}; use zcash_protocol::{value::Zatoshis, ShieldedProtocol}; use zip321::{Payment, TransactionRequest}; @@ -50,7 +50,7 @@ impl Command { let params = get_wallet_network(wallet_dir.as_ref())?; let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let mut db_data = WalletDb::for_path(db_data, params)?; + let mut db_data = WalletDb::for_path(db_data, params, SystemClock)?; let account = select_account(&db_data, self.account_id)?; let change_strategy = MultiOutputChangeStrategy::new( diff --git a/src/commands/wallet/reset.rs b/src/commands/wallet/reset.rs index d11fb7c..8e74870 100644 --- a/src/commands/wallet/reset.rs +++ b/src/commands/wallet/reset.rs @@ -4,7 +4,7 @@ use zcash_client_backend::{ data_api::{Account, WalletRead}, proto::service, }; -use zcash_client_sqlite::WalletDb; +use zcash_client_sqlite::{util::SystemClock, WalletDb}; use crate::{ config::WalletConfig, @@ -55,7 +55,7 @@ impl Command { // Get the account name and key source to preserve them. let (account_name, key_source) = { let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let db_data = WalletDb::for_path(db_data, params)?; + let db_data = WalletDb::for_path(db_data, params, SystemClock)?; let account_id = *db_data .get_account_ids()? diff --git a/src/commands/wallet/send.rs b/src/commands/wallet/send.rs index e195d02..aeaa203 100644 --- a/src/commands/wallet/send.rs +++ b/src/commands/wallet/send.rs @@ -18,7 +18,7 @@ use zcash_client_backend::{ proto::service, wallet::OvkPolicy, }; -use zcash_client_sqlite::WalletDb; +use zcash_client_sqlite::{util::SystemClock, WalletDb}; use zcash_keys::keys::UnifiedSpendingKey; use zcash_proofs::prover::LocalTxProver; use zcash_protocol::{value::Zatoshis, ShieldedProtocol}; @@ -77,7 +77,7 @@ impl Command { let params = config.network(); let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let mut db_data = WalletDb::for_path(db_data, params)?; + let mut db_data = WalletDb::for_path(db_data, params, SystemClock)?; let account = select_account(&db_data, self.account_id)?; let derivation = account .source() diff --git a/src/commands/wallet/shield.rs b/src/commands/wallet/shield.rs index 8674bb2..211a770 100644 --- a/src/commands/wallet/shield.rs +++ b/src/commands/wallet/shield.rs @@ -16,7 +16,7 @@ use zcash_client_backend::{ proto::service, wallet::OvkPolicy, }; -use zcash_client_sqlite::WalletDb; +use zcash_client_sqlite::{util::SystemClock, WalletDb}; use zcash_keys::keys::UnifiedSpendingKey; use zcash_proofs::prover::LocalTxProver; use zcash_protocol::{value::Zatoshis, ShieldedProtocol}; @@ -65,7 +65,7 @@ impl Command { let params = config.network(); let (_, db_data) = get_db_paths(wallet_dir.as_ref()); - let mut db_data = WalletDb::for_path(db_data, params)?; + let mut db_data = WalletDb::for_path(db_data, params, SystemClock)?; let account = select_account(&db_data, self.account_id)?; let derivation = account.source().key_derivation().ok_or(anyhow!( "Cannot spend from view-only accounts; did you mean to use `pczt shield` instead?" diff --git a/src/commands/wallet/sync.rs b/src/commands/wallet/sync.rs index 2bdac98..4cd6f84 100644 --- a/src/commands/wallet/sync.rs +++ b/src/commands/wallet/sync.rs @@ -20,7 +20,9 @@ use zcash_client_backend::{ }, proto::service::{self, compact_tx_streamer_client::CompactTxStreamerClient, BlockId}, }; -use zcash_client_sqlite::{chain::BlockMeta, FsBlockDb, FsBlockDbError, WalletDb}; +use zcash_client_sqlite::{ + chain::BlockMeta, util::SystemClock, FsBlockDb, FsBlockDbError, WalletDb, +}; use zcash_primitives::merkle_tree::HashSer; use zcash_protocol::consensus::{BlockHeight, Parameters}; @@ -80,7 +82,7 @@ impl Command { let (fsblockdb_root, db_data) = get_db_paths(wallet_dir.as_ref()); let fsblockdb_root = fsblockdb_root.as_path(); let mut db_cache = FsBlockDb::for_path(fsblockdb_root).map_err(error::Error::from)?; - let mut db_data = WalletDb::for_path(db_data, params)?; + let mut db_data = WalletDb::for_path(db_data, params, SystemClock)?; let mut client = self.server.pick(params)?.connect_direct().await?; #[cfg(any(feature = "transparent-inputs", feature = "tui"))] @@ -113,7 +115,7 @@ impl Command { params: &P, fsblockdb_root: &Path, db_cache: &mut FsBlockDb, - db_data: &mut WalletDb, + db_data: &mut WalletDb, #[cfg(feature = "transparent-inputs")] wallet_birthday: BlockHeight, #[cfg(feature = "tui")] tui_handle: Option<&defrag::AppHandle>, ) -> Result { @@ -344,7 +346,7 @@ impl Command { async fn update_subtree_roots( client: &mut CompactTxStreamerClient, - db_data: &mut WalletDb, + db_data: &mut WalletDb, ) -> Result<(), anyhow::Error> { let mut request = service::GetSubtreeRootsArg::default(); request.set_shielded_protocol(service::ShieldedProtocol::Sapling); @@ -389,7 +391,7 @@ async fn update_subtree_roots( async fn update_chain_tip( client: &mut CompactTxStreamerClient, - db_data: &mut WalletDb, + db_data: &mut WalletDb, ) -> Result { let tip_height: BlockHeight = client .get_latest_block(service::ChainSpec::default()) @@ -517,7 +519,7 @@ fn scan_blocks( params: &P, fsblockdb_root: &Path, db_cache: &mut FsBlockDb, - db_data: &mut WalletDb, + db_data: &mut WalletDb, initial_chain_state: &ChainState, scan_range: &ScanRange, #[cfg(feature = "tui")] tui_handle: Option<&defrag::AppHandle>, @@ -635,12 +637,12 @@ fn scan_blocks( async fn refresh_utxos( params: &P, client: &mut CompactTxStreamerClient, - db_data: &mut WalletDb, + db_data: &mut WalletDb, account_id: AccountUuid, start_height: BlockHeight, ) -> Result<(), anyhow::Error> { let addresses = db_data - .get_transparent_receivers(account_id)? + .get_transparent_receivers(account_id, true)? .into_keys() .map(|addr| addr.encode(params)) .collect::>(); diff --git a/src/commands/wallet/upgrade.rs b/src/commands/wallet/upgrade.rs index 2dfce3c..7b39808 100644 --- a/src/commands/wallet/upgrade.rs +++ b/src/commands/wallet/upgrade.rs @@ -2,6 +2,7 @@ use anyhow::anyhow; use clap::Args; use zcash_client_sqlite::{ chain::init::init_blockmeta_db, + util::SystemClock, wallet::init::{init_wallet_db, WalletMigrationError}, FsBlockDb, WalletDb, }; @@ -26,7 +27,7 @@ impl Command { let (fsblockdb_root, db_data) = get_db_paths(wallet_dir.as_ref()); let mut db_cache = FsBlockDb::for_path(fsblockdb_root).map_err(error::Error::from)?; - let mut db_data = WalletDb::for_path(db_data, params)?; + let mut db_data = WalletDb::for_path(db_data, params, SystemClock)?; init_blockmeta_db(&mut db_cache)?; diff --git a/src/data.rs b/src/data.rs index a23350b..02f38c8 100644 --- a/src/data.rs +++ b/src/data.rs @@ -1,5 +1,6 @@ use std::path::{Path, PathBuf}; use zcash_client_sqlite::chain::init::init_blockmeta_db; +use zcash_client_sqlite::util::SystemClock; use zcash_client_sqlite::wallet::init::init_wallet_db; use zcash_client_sqlite::{FsBlockDb, WalletDb}; @@ -101,11 +102,11 @@ pub(crate) async fn erase_wallet_state>(wallet_dir: Option

) { pub(crate) fn init_dbs( params: P, wallet_dir: Option<&String>, -) -> Result, anyhow::Error> { +) -> Result, anyhow::Error> { // Initialise the block and wallet DBs. let (db_cache, db_data) = get_db_paths(wallet_dir); let mut db_cache = FsBlockDb::for_path(db_cache).map_err(error::Error::from)?; - let mut db_data = WalletDb::for_path(db_data, params)?; + let mut db_data = WalletDb::for_path(db_data, params, SystemClock)?; init_blockmeta_db(&mut db_cache)?; init_wallet_db(&mut db_data, None)?;