From 888fd6393b52f8f1a9a1b9617ecd2a4a3a786df6 Mon Sep 17 00:00:00 2001 From: zancas Date: Sun, 2 Jun 2024 14:16:26 -0600 Subject: [PATCH 1/9] zingolib tests pass after removing zip317 feature gate --- zingo-testutils/Cargo.toml | 2 +- zingolib/Cargo.toml | 1 - zingolib/src/commands.rs | 1 - zingolib/src/data.rs | 1 - zingolib/src/lightclient.rs | 4 ---- zingolib/src/lightclient/send.rs | 1 - 6 files changed, 1 insertion(+), 9 deletions(-) diff --git a/zingo-testutils/Cargo.toml b/zingo-testutils/Cargo.toml index 6aca752386..38b4530e5c 100644 --- a/zingo-testutils/Cargo.toml +++ b/zingo-testutils/Cargo.toml @@ -11,7 +11,7 @@ default = ["grpc-proxy"] [dependencies] zingoconfig = { path = "../zingoconfig" } -zingolib = { path = "../zingolib", features = ["zip317"] } +zingolib = { path = "../zingolib" } zingo-netutils = { path = "../zingo-netutils", features = ["test-features"] } zingo-testvectors = { path = "../zingo-testvectors" } diff --git a/zingolib/Cargo.toml b/zingolib/Cargo.toml index dca89b85d3..4d8663b8cb 100644 --- a/zingolib/Cargo.toml +++ b/zingolib/Cargo.toml @@ -10,7 +10,6 @@ edition = "2021" deprecations = ["lightclient-deprecated"] lightclient-deprecated = [] darkside_tests = [] -zip317 = [] [dependencies] zingoconfig = { path = "../zingoconfig" } diff --git a/zingolib/src/commands.rs b/zingolib/src/commands.rs index 2d5be53fb2..48c82358f9 100644 --- a/zingolib/src/commands.rs +++ b/zingolib/src/commands.rs @@ -13,7 +13,6 @@ use tokio::runtime::Runtime; use zcash_address::unified::{Container, Encoding, Ufvk}; use zcash_client_backend::address::Address; use zcash_primitives::consensus::Parameters; -use zcash_primitives::transaction::components::amount::NonNegativeAmount; use zcash_primitives::transaction::fees::zip317::MINIMUM_FEE; /// Errors associated with the commands interface diff --git a/zingolib/src/data.rs b/zingolib/src/data.rs index 7a8d58cb10..520f871503 100644 --- a/zingolib/src/data.rs +++ b/zingolib/src/data.rs @@ -1,5 +1,4 @@ //! This is a mod for data structs that will be used across all sections of zingolib. -#[cfg(feature = "zip317")] pub mod proposal; pub mod witness_trees; diff --git a/zingolib/src/lightclient.rs b/zingolib/src/lightclient.rs index 58ce19f87f..86df5080b5 100644 --- a/zingolib/src/lightclient.rs +++ b/zingolib/src/lightclient.rs @@ -19,7 +19,6 @@ use crate::{ wallet::{keys::unified::ReceiverSelection, message::Message, LightWallet, SendProgress}, }; -#[cfg(feature = "zip317")] use crate::data::proposal::ZingoProposal; /// TODO: Add Doc Comment Here! @@ -235,7 +234,6 @@ pub struct LightClient { bsync_data: Arc>, interrupt_sync: Arc>, - #[cfg(feature = "zip317")] latest_proposal: Arc>>, save_buffer: ZingoSaveBuffer, @@ -278,7 +276,6 @@ pub mod instantiation { sync_lock: Mutex::new(()), bsync_data: Arc::new(RwLock::new(BlazeSyncData::new(&config))), interrupt_sync: Arc::new(RwLock::new(false)), - #[cfg(feature = "zip317")] latest_proposal: Arc::new(RwLock::new(None)), save_buffer: ZingoSaveBuffer::new(buffer), }) @@ -396,7 +393,6 @@ pub mod sync; pub mod send; -#[cfg(feature = "zip317")] pub mod propose; // other functions diff --git a/zingolib/src/lightclient/send.rs b/zingolib/src/lightclient/send.rs index a9ad5d0df3..91a1d5ab2e 100644 --- a/zingolib/src/lightclient/send.rs +++ b/zingolib/src/lightclient/send.rs @@ -137,7 +137,6 @@ impl LightClient { } } -#[cfg(feature = "zip317")] /// patterns for newfangled propose flow pub mod send_with_proposal { use std::{convert::Infallible, ops::DerefMut as _}; From f969445609338b1443251a98fca903bcb32831f4 Mon Sep 17 00:00:00 2001 From: zancas Date: Sun, 2 Jun 2024 14:29:28 -0600 Subject: [PATCH 2/9] update commands.rs to remove references to zip317 gate --- zingolib/src/commands.rs | 104 +-------------------------------------- 1 file changed, 1 insertion(+), 103 deletions(-) diff --git a/zingolib/src/commands.rs b/zingolib/src/commands.rs index 48c82358f9..7f240355e6 100644 --- a/zingolib/src/commands.rs +++ b/zingolib/src/commands.rs @@ -13,6 +13,7 @@ use tokio::runtime::Runtime; use zcash_address::unified::{Container, Encoding, Ufvk}; use zcash_client_backend::address::Address; use zcash_primitives::consensus::Parameters; +use zcash_primitives::transaction::components::amount::NonNegativeAmount; use zcash_primitives::transaction::fees::zip317::MINIMUM_FEE; /// Errors associated with the commands interface @@ -754,101 +755,7 @@ impl Command for DecryptMessageCommand { } } -#[cfg(not(feature = "zip317"))] struct SendCommand {} -#[cfg(not(feature = "zip317"))] -impl Command for SendCommand { - fn help(&self) -> &'static str { - indoc! {r#" - Send ZEC to the given address(es). - The 10_000 zat fee required to send this transaction is additionally deducted from your balance. - Usage: - send
"" - OR - send '[{"address":"
", "amount":, "memo":""}, ...]' - Example: - send ztestsapling1x65nq4dgp0qfywgxcwk9n0fvm4fysmapgr2q00p85ju252h6l7mmxu2jg9cqqhtvzd69jwhgv8d 200000 "Hello from the command line" - - "#} - } - - fn short_help(&self) -> &'static str { - "Send ZEC to the given address(es)." - } - - fn exec(&self, args: &[&str], lightclient: &LightClient) -> String { - let send_inputs = match utils::parse_send_args(args, &lightclient.config().chain) { - Ok(args) => args, - Err(e) => { - return format!( - "Error: {}\nTry 'help send' for correct usage and examples.", - e - ) - } - }; - RT.block_on(async move { - match lightclient.do_send(send_inputs).await { - Ok(txid) => { - object! { "txid" => txid.to_string() } - } - Err(e) => { - object! { "error" => e } - } - } - .pretty(2) - }) - } -} - -#[cfg(not(feature = "zip317"))] -struct ShieldCommand {} -#[cfg(not(feature = "zip317"))] -impl Command for ShieldCommand { - fn help(&self) -> &'static str { - indoc! {r#" - Shield all your transparent and/or sapling funds - Usage: - shield ['transparent' or 'sapling' or 'all'] [optional address] - - NOTE: The fee required to send this transaction (currently ZEC 0.0001) is additionally deducted from your balance. - Example: - shield all - - "#} - } - - fn short_help(&self) -> &'static str { - "Shield your transparent and/or sapling ZEC into the orchard pool" - } - - fn exec(&self, args: &[&str], lightclient: &LightClient) -> String { - let (pools_to_shield, address) = - match utils::parse_shield_args(args, &lightclient.config().chain) { - Ok(args) => args, - Err(e) => { - return format!( - "Error: {}\nTry 'help shield' for correct usage and examples.", - e - ) - } - }; - RT.block_on(async move { - match lightclient.do_shield(&pools_to_shield, address).await { - Ok(txid) => { - object! { "txid" => txid.to_string() } - } - Err(e) => { - object! { "error" => e } - } - } - .pretty(2) - }) - } -} - -#[cfg(feature = "zip317")] -struct SendCommand {} -#[cfg(feature = "zip317")] impl Command for SendCommand { fn help(&self) -> &'static str { indoc! {r#" @@ -964,9 +871,7 @@ impl Command for SendAllCommand { } } */ -#[cfg(feature = "zip317")] struct QuickSendCommand {} -#[cfg(feature = "zip317")] impl Command for QuickSendCommand { fn help(&self) -> &'static str { indoc! {r#" @@ -1021,9 +926,7 @@ impl Command for QuickSendCommand { } } -#[cfg(feature = "zip317")] struct ShieldCommand {} -#[cfg(feature = "zip317")] impl Command for ShieldCommand { fn help(&self) -> &'static str { indoc! {r#" @@ -1082,9 +985,7 @@ impl Command for ShieldCommand { } } -#[cfg(feature = "zip317")] struct QuickShieldCommand {} -#[cfg(feature = "zip317")] impl Command for QuickShieldCommand { fn help(&self) -> &'static str { indoc! {r#" @@ -1126,9 +1027,7 @@ impl Command for QuickShieldCommand { } } -#[cfg(feature = "zip317")] struct ConfirmCommand {} -#[cfg(feature = "zip317")] impl Command for ConfirmCommand { fn help(&self) -> &'static str { indoc! {r#" @@ -1759,7 +1658,6 @@ pub fn get_commands() -> HashMap<&'static str, Box> { { entries.push(("list", Box::new(TransactionsCommand {}))); } - #[cfg(feature = "zip317")] { //entries.push(("sendall", Box::new(SendAllCommand {}))); entries.push(("quicksend", Box::new(QuickSendCommand {}))); From dae8e771562b05626d3719885ade7984d5bc428c Mon Sep 17 00:00:00 2001 From: zancas Date: Sun, 2 Jun 2024 14:32:37 -0600 Subject: [PATCH 3/9] remove parse shield args utility --- zingolib/src/commands/utils.rs | 75 ---------------------------------- 1 file changed, 75 deletions(-) diff --git a/zingolib/src/commands/utils.rs b/zingolib/src/commands/utils.rs index 66b3c96e49..7d8b8644ed 100644 --- a/zingolib/src/commands/utils.rs +++ b/zingolib/src/commands/utils.rs @@ -10,37 +10,6 @@ use zcash_primitives::memo::MemoBytes; use zcash_primitives::transaction::components::amount::NonNegativeAmount; use zingoconfig::ChainType; -#[cfg(not(feature = "zip317"))] -use zcash_client_backend::{PoolType, ShieldedProtocol}; - -// Parse the shield arguments for `do_shield` -#[cfg(not(feature = "zip317"))] -pub(super) fn parse_shield_args( - args: &[&str], - chain: &ChainType, -) -> Result<(Vec, Option
), CommandError> { - if args.is_empty() || args.len() > 2 { - return Err(CommandError::InvalidArguments); - } - - let pools_to_shield: &[PoolType] = match args[0] { - "transparent" => &[PoolType::Transparent], - "sapling" => &[PoolType::Shielded(ShieldedProtocol::Sapling)], - "all" => &[ - PoolType::Shielded(ShieldedProtocol::Sapling), - PoolType::Transparent, - ], - _ => return Err(CommandError::InvalidPool), - }; - let address = if args.len() == 2 { - Some(address_from_str(args[1], chain).map_err(CommandError::ConversionFailed)?) - } else { - None - }; - - Ok((pools_to_shield.to_vec(), address)) -} - // Parse the send arguments for `do_send`. // The send arguments have two possible formats: // - 1 argument in the form of a JSON string for multiple sends. '[{"address":"
", "value":, "memo":""}, ...]' @@ -222,50 +191,6 @@ mod tests { wallet::{self, utils::interpret_memo_string}, }; - #[cfg(not(feature = "zip317"))] - use zcash_client_backend::{PoolType, ShieldedProtocol}; - - #[cfg(not(feature = "zip317"))] - #[test] - fn parse_shield_args() { - let chain = ChainType::Regtest(RegtestNetwork::all_upgrades_active()); - let address_str = "zregtestsapling1fmq2ufux3gm0v8qf7x585wj56le4wjfsqsj27zprjghntrerntggg507hxh2ydcdkn7sx8kya7p"; - let address = address_from_str(address_str, &chain).unwrap(); - - // Shield all to default address - let shield_args = &["all"]; - assert_eq!( - super::parse_shield_args(shield_args, &chain).unwrap(), - ( - vec![ - PoolType::Shielded(ShieldedProtocol::Sapling), - PoolType::Transparent - ], - None - ) - ); - - // Shield all to given address - let shield_args = &["all", address_str]; - assert_eq!( - super::parse_shield_args(shield_args, &chain).unwrap(), - ( - vec![ - PoolType::Shielded(ShieldedProtocol::Sapling), - PoolType::Transparent - ], - Some(address) - ) - ); - - // Invalid pool - let shield_args = &["invalid"]; - assert!(matches!( - super::parse_shield_args(shield_args, &chain), - Err(CommandError::InvalidPool) - )); - } - #[test] fn parse_send_args() { let chain = ChainType::Regtest(RegtestNetwork::all_upgrades_active()); From 23c9082939a945104bfd4d9a2201293e54569e86 Mon Sep 17 00:00:00 2001 From: zancas Date: Sun, 2 Jun 2024 14:36:16 -0600 Subject: [PATCH 4/9] remove (temporarily?) unused variants --- zingolib/src/commands/error.rs | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/zingolib/src/commands/error.rs b/zingolib/src/commands/error.rs index fdde660720..8c707f50ad 100644 --- a/zingolib/src/commands/error.rs +++ b/zingolib/src/commands/error.rs @@ -3,9 +3,6 @@ use std::fmt; #[derive(Debug)] pub(crate) enum CommandError { ArgsNotJson(json::Error), - #[cfg(feature = "zip317")] - #[allow(dead_code)] - ArgNotJsonOrValidAddress, SingleArgNotJsonArray(String), EmptyJsonArray, ParseIntFromString(std::num::ParseIntError), @@ -16,11 +13,6 @@ pub(crate) enum CommandError { InvalidMemo(String), NonJsonNumberForAmount(String), ConversionFailed(crate::utils::error::ConversionError), - #[cfg(not(feature = "zip317"))] - InvalidPool, - #[cfg(feature = "zip317")] - #[allow(dead_code)] - MultipleReceivers, } impl fmt::Display for CommandError { @@ -29,11 +21,6 @@ impl fmt::Display for CommandError { match self { ArgsNotJson(e) => write!(f, "failed to parse argument. {}", e), - #[cfg(feature = "zip317")] - ArgNotJsonOrValidAddress => write!( - f, - "argument cannot be converted to a valid address or parsed as json." - ), SingleArgNotJsonArray(e) => { write!(f, "argument cannot be parsed to a json array. {}", e) } @@ -48,10 +35,6 @@ impl fmt::Display for CommandError { InvalidMemo(e) => write!(f, "failed to interpret memo. {}", e), NonJsonNumberForAmount(e) => write!(f, "invalid argument. expected a number. {}", e), ConversionFailed(e) => write!(f, "conversion failed. {}", e), - #[cfg(not(feature = "zip317"))] - InvalidPool => write!(f, "invalid pool."), - #[cfg(feature = "zip317")] - MultipleReceivers => write!(f, "'send all' can only accept one receiver."), } } } From f393813f32af916063ca0837ad260a137d5cd82d Mon Sep 17 00:00:00 2001 From: zancas Date: Sun, 2 Jun 2024 16:08:49 -0600 Subject: [PATCH 5/9] define old_send to wrap quick_send, but support old send interface for tests --- darkside-tests/src/utils.rs | 2 +- darkside-tests/tests/advanced_reorg_tests.rs | 21 ++- libtonode-tests/tests/legacy.rs | 170 ++++++++++--------- libtonode-tests/tests/shield_transparent.rs | 2 +- zingo-testutils/src/lib.rs | 30 ++-- zingo-testutils/src/lightclient.rs | 2 +- 6 files changed, 116 insertions(+), 111 deletions(-) diff --git a/darkside-tests/src/utils.rs b/darkside-tests/src/utils.rs index 7b03f26c45..a37966b977 100644 --- a/darkside-tests/src/utils.rs +++ b/darkside-tests/src/utils.rs @@ -679,7 +679,7 @@ pub mod scenarios { DarksideSender::IndexedClient(n) => self.get_lightclient(n), DarksideSender::ExternalClient(lc) => lc, }; - zingo_testutils::lightclient::from_inputs::send( + zingo_testutils::lightclient::from_inputs::old_send( lightclient, vec![(receiver_address, value, None)], ) diff --git a/darkside-tests/tests/advanced_reorg_tests.rs b/darkside-tests/tests/advanced_reorg_tests.rs index 3ec2b2fbee..6f3f9f2ca8 100644 --- a/darkside-tests/tests/advanced_reorg_tests.rs +++ b/darkside-tests/tests/advanced_reorg_tests.rs @@ -557,9 +557,10 @@ async fn reorg_changes_outgoing_tx_height() { // Send 100000 zatoshi to some address let amount: u64 = 100000; - let sent_tx_id = from_inputs::send(&light_client, [(recipient_string, amount, None)].to_vec()) - .await - .unwrap(); + let sent_tx_id = + from_inputs::old_send(&light_client, [(recipient_string, amount, None)].to_vec()) + .await + .unwrap(); println!("SENT TX ID: {:?}", sent_tx_id); @@ -795,9 +796,10 @@ async fn reorg_expires_outgoing_tx_height() { // Send 100000 zatoshi to some address let amount: u64 = 100000; - let sent_tx_id = from_inputs::send(&light_client, [(recipient_string, amount, None)].to_vec()) - .await - .unwrap(); + let sent_tx_id = + from_inputs::old_send(&light_client, [(recipient_string, amount, None)].to_vec()) + .await + .unwrap(); println!("SENT TX ID: {:?}", sent_tx_id); @@ -975,9 +977,10 @@ async fn reorg_changes_outgoing_tx_index() { // Send 100000 zatoshi to some address let amount: u64 = 100000; - let sent_tx_id = from_inputs::send(&light_client, [(recipient_string, amount, None)].to_vec()) - .await - .unwrap(); + let sent_tx_id = + from_inputs::old_send(&light_client, [(recipient_string, amount, None)].to_vec()) + .await + .unwrap(); println!("SENT TX ID: {:?}", sent_tx_id); diff --git a/libtonode-tests/tests/legacy.rs b/libtonode-tests/tests/legacy.rs index 31651fbe87..69df970d56 100644 --- a/libtonode-tests/tests/legacy.rs +++ b/libtonode-tests/tests/legacy.rs @@ -176,7 +176,7 @@ mod fast { serde_json::to_string_pretty(&recipient.do_balance().await).unwrap() ); assert_eq!( - from_inputs::send(&recipient, vec![(&get_base_address_macro!(faucet, "unified"), 100_000, None)]) + from_inputs::old_send(&recipient, vec![(&get_base_address_macro!(faucet, "unified"), 100_000, None)]) .await .unwrap_err(), "The reorg buffer offset has been set to 4 but there are only 1 blocks in the wallet. Please sync at least 4 more blocks before trying again" @@ -300,7 +300,7 @@ mod fast { .unwrap(); check_client_balances!(faucet, o: 0 s: 2_500_000_000u64 t: 0u64); - from_inputs::send( + from_inputs::old_send( &faucet, vec![( get_base_address_macro!(recipient, "unified").as_str(), @@ -370,7 +370,7 @@ mod fast { .members() .map(|ua| (ua["address"].as_str().unwrap(), 5_000, None)) .collect::)>>(); - from_inputs::send(&faucet, address_5000_nonememo_tuples) + from_inputs::old_send(&faucet, address_5000_nonememo_tuples) .await .unwrap(); zingo_testutils::increase_height_and_wait_for_client(®test_manager, &recipient, 1) @@ -702,7 +702,7 @@ mod slow { scenarios::faucet_funded_recipient_default(100_000).await; let sent_value = 0; - let _sent_transaction_id = from_inputs::send( + let _sent_transaction_id = from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "unified"), @@ -716,7 +716,7 @@ mod slow { zingo_testutils::increase_height_and_wait_for_client(®test_manager, &recipient, 5) .await .unwrap(); - let _sent_transaction_id = from_inputs::send( + let _sent_transaction_id = from_inputs::old_send( &recipient, vec![(&get_base_address_macro!(faucet, "unified"), 1000, None)], ) @@ -744,7 +744,7 @@ mod slow { scenarios::faucet_funded_recipient_default(value).await; let sent_value = value - u64::from(MINIMUM_FEE); - let sent_transaction_id = from_inputs::send( + let sent_transaction_id = from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "unified"), @@ -792,7 +792,7 @@ mod slow { let faucet_ua = get_base_address_macro!(faucet, "unified"); - let _sent_transaction_id = from_inputs::send( + let _sent_transaction_id = from_inputs::old_send( &recipient, vec![(&faucet_ua, sent_value, Some(outgoing_memo))], ) @@ -975,7 +975,7 @@ mod slow { assert_eq!(client_wallet_height.as_fixed_point_u64(0).unwrap(), 8); // Interrupt generating send - from_inputs::send( + from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "unified"), @@ -1031,7 +1031,9 @@ mod slow { .await .unwrap(); // 2. send a transaction containing all types of outputs - from_inputs::send(&faucet, addr_amount_memos).await.unwrap(); + from_inputs::old_send(&faucet, addr_amount_memos) + .await + .unwrap(); zingo_testutils::increase_height_and_wait_for_client( ®test_manager, &original_recipient, @@ -1093,7 +1095,7 @@ mod slow { watch_client.do_rescan().await.unwrap(); assert_eq!( - from_inputs::send( + from_inputs::old_send( &watch_client, vec![(zingo_testvectors::EXT_TADDR, 1000, None)] ) @@ -1111,7 +1113,7 @@ mod slow { let taddr = get_base_address_macro!(recipient, "transparent"); let value = 100_000; - from_inputs::send(&faucet, vec![(taddr.as_str(), value, None)]) + from_inputs::old_send(&faucet, vec![(taddr.as_str(), value, None)]) .await .unwrap(); @@ -1128,7 +1130,7 @@ mod slow { // 4. We can't spend the funds, as they're transparent. We need to shield first let sent_value = 20_000; - let sent_transaction_error = from_inputs::send( + let sent_transaction_error = from_inputs::old_send( &recipient, vec![(zingo_testvectors::EXT_TADDR, sent_value, None)], ) @@ -1142,7 +1144,7 @@ mod slow { scenarios::faucet_recipient_default().await; let sapling_dust = 100; - let _sent_transaction_id = from_inputs::send( + let _sent_transaction_id = from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "sapling"), @@ -1177,7 +1179,7 @@ mod slow { let sapling_enough_for_fee = 10_100; faucet.do_sync(false).await.unwrap(); - let _sent_transaction_id = from_inputs::send( + let _sent_transaction_id = from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "sapling"), @@ -1205,7 +1207,7 @@ mod slow { // The exact same thing again, but with pre-existing orchard funds // already in the shielding wallet faucet.do_sync(false).await.unwrap(); - let _sent_transaction_id = from_inputs::send( + let _sent_transaction_id = from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "sapling"), @@ -1264,7 +1266,7 @@ mod slow { let transparent_funding = 100_000; let (ref regtest_manager, _cph, faucet, ref recipient) = scenarios::faucet_recipient_default().await; - from_inputs::send( + from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "sapling"), @@ -1333,7 +1335,7 @@ mod slow { //utils::increase_height_and_wait_for_client(®test_manager, &faucet, 5).await; let recipient_unified_address = get_base_address_macro!(recipient, "unified"); let sent_value = 50_000; - from_inputs::send( + from_inputs::old_send( &faucet, vec![(recipient_unified_address.as_str(), sent_value, None)], ) @@ -1431,7 +1433,7 @@ mod slow { ]"#, ).unwrap(); - from_inputs::send( + from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "sapling"), @@ -1444,7 +1446,7 @@ mod slow { zingo_testutils::increase_height_and_wait_for_client(regtest_manager, &recipient, 1) .await .unwrap(); - from_inputs::send( + from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "transparent"), @@ -1489,7 +1491,7 @@ mod slow { } faucet.do_sync(false).await.unwrap(); - from_inputs::send( + from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "unified"), @@ -1502,7 +1504,7 @@ mod slow { zingo_testutils::increase_height_and_wait_for_client(regtest_manager, &recipient, 1) .await .unwrap(); - from_inputs::send( + from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "transparent"), @@ -1512,7 +1514,7 @@ mod slow { ) .await .unwrap(); - from_inputs::send( + from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "sapling"), @@ -1526,7 +1528,7 @@ mod slow { .await .unwrap(); - from_inputs::send( + from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "transparent"), @@ -1689,7 +1691,7 @@ mod slow { check_client_balances!(faucet, o: three_blocks_reward s: 0 t: 0); // post transfer to recipient, and verify - from_inputs::send( + from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "unified"), @@ -1720,7 +1722,7 @@ mod slow { check_client_balances!(recipient, o: faucet_to_recipient_amount s: 0 t: 0); // post half back to faucet, and verify - from_inputs::send( + from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "unified"), @@ -1760,7 +1762,7 @@ mod slow { ) .await; let amount_to_send = 5_000; - from_inputs::send( + from_inputs::old_send( &faucet, vec![( get_base_address_macro!(faucet, "unified").as_str(), @@ -1794,7 +1796,7 @@ mod slow { .await .unwrap(); check_client_balances!(faucet, o: 0 s: 3_500_000_000u64 t: 0); - from_inputs::send( + from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "unified"), @@ -1837,7 +1839,7 @@ mod slow { scenarios::faucet_recipient_default().await; let recipient_unified_address = get_base_address_macro!(recipient, "unified"); let sent_value = 50_000; - from_inputs::send( + from_inputs::old_send( &faucet, vec![(recipient_unified_address.as_str(), sent_value, None)], ) @@ -1851,7 +1853,7 @@ mod slow { let sent_to_taddr_value = 5_000; let sent_to_zaddr_value = 11_000; let sent_to_self_orchard_value = 1_000; - from_inputs::send( + from_inputs::old_send( &recipient, vec![(recipient_taddr.as_str(), sent_to_taddr_value, None)], ) @@ -1860,7 +1862,7 @@ mod slow { zingo_testutils::increase_height_and_wait_for_client(®test_manager, &recipient, 1) .await .unwrap(); - from_inputs::send( + from_inputs::old_send( &recipient, vec![ (recipient_taddr.as_str(), sent_to_taddr_value, None), @@ -1875,7 +1877,7 @@ mod slow { .await .unwrap(); faucet.do_sync(false).await.unwrap(); - from_inputs::send( + from_inputs::old_send( &faucet, vec![ (recipient_taddr.as_str(), sent_to_taddr_value, None), @@ -1947,7 +1949,7 @@ mod slow { // Construct transaction to wallet-external recipient-address. let exit_zaddr = get_base_address_macro!(faucet, "sapling"); - let spent_txid = from_inputs::send(&recipient, vec![(&exit_zaddr, spent_value, None)]) + let spent_txid = from_inputs::old_send(&recipient, vec![(&exit_zaddr, spent_value, None)]) .await .unwrap(); @@ -1980,7 +1982,7 @@ mod slow { let value = 100_000; // 2. Send an incoming transaction to fill the wallet - let faucet_funding_txid = from_inputs::send( + let faucet_funding_txid = from_inputs::old_send( &faucet, vec![(&get_base_address_macro!(recipient, "sapling"), value, None)], ) @@ -2032,7 +2034,7 @@ mod slow { let sent_value = 2000; let outgoing_memo = "Outgoing Memo"; - let sent_transaction_id = from_inputs::send( + let sent_transaction_id = from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "sapling"), @@ -2174,7 +2176,7 @@ mod slow { let fee = u64::from(MINIMUM_FEE); let for_orchard = dbg!(fee * 10); let for_sapling = dbg!(fee / 10); - from_inputs::send( + from_inputs::old_send( &faucet, vec![ (&recipient_unified, for_orchard, Some("Plenty for orchard.")), @@ -2188,7 +2190,7 @@ mod slow { .unwrap(); check_client_balances!(recipient, o: for_orchard s: for_sapling t: 0 ); - from_inputs::send( + from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "unified"), @@ -2225,7 +2227,7 @@ mod slow { ); println!("creating vec"); - from_inputs::send( + from_inputs::old_send( faucet, vec![(&get_base_address_macro!(faucet, "unified"), 10, None); 15], ) @@ -2234,7 +2236,7 @@ mod slow { zingo_testutils::increase_height_and_wait_for_client(regtest_manager, recipient, 10) .await .unwrap(); - from_inputs::send( + from_inputs::old_send( recipient, vec![(&get_base_address_macro!(faucet, "unified"), 10, None)], ) @@ -2275,7 +2277,7 @@ mod slow { .unwrap(); let sapling_addr = get_base_address_macro!(faucet, "sapling"); for memo in [None, Some("foo")] { - from_inputs::send( + from_inputs::old_send( &faucet, vec![( sapling_addr.as_str(), @@ -2321,7 +2323,7 @@ mod slow { async fn rescan_still_have_outgoing_metadata() { let (regtest_manager, _cph, faucet, recipient) = scenarios::faucet_recipient_default().await; - from_inputs::send( + from_inputs::old_send( &faucet, vec![( get_base_address_macro!(recipient, "sapling").as_str(), @@ -2357,7 +2359,7 @@ mod slow { // These are sent from the coinbase funded client which will // subsequently receive funding via it's orchard-packed UA. let memos = ["1", "2", "3"]; - from_inputs::send( + from_inputs::old_send( &faucet, (1..=3) .map(|n| { @@ -2378,7 +2380,7 @@ mod slow { // We know that the largest single note that 2 received from 1 was 3000, for 2 to send // 3000 back to 1 it will have to collect funds from two notes to pay the full 3000 // plus the transaction fee. - from_inputs::send( + from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "unified"), @@ -2457,7 +2459,7 @@ mod slow { let inital_value = 100_000; let (ref regtest_manager, _cph, faucet, ref recipient, _txid) = scenarios::faucet_funded_recipient_default(inital_value).await; - from_inputs::send( + from_inputs::old_send( recipient, vec![(&get_base_address_macro!(faucet, "unified"), 10_000, None); 2], ) @@ -2582,7 +2584,7 @@ mod slow { let sent_value = 2000; let outgoing_memo = "Outgoing Memo"; - let sent_transaction_id = from_inputs::send( + let sent_transaction_id = from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "sapling"), @@ -2784,7 +2786,7 @@ mod slow { let sent_value = 2000; let outgoing_memo = "Outgoing Memo"; - let _sent_transaction_id = from_inputs::send( + let _sent_transaction_id = from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "unified"), @@ -2960,7 +2962,7 @@ mod slow { transparent_balance: Some(0), }; assert_eq!(expected_post_sync_balance, recipient.do_balance().await); - from_inputs::send( + from_inputs::old_send( &recipient, vec![(&get_base_address_macro!(faucet, "unified"), 14000, None)], ) @@ -3007,7 +3009,7 @@ mod slow { &original_recipient_address ); let recipient1_diversified_addr = recipient1.do_new_address("tz").await.unwrap(); - from_inputs::send( + from_inputs::old_send( &faucet, vec![( recipient1_diversified_addr[0].as_str().unwrap(), @@ -3076,7 +3078,7 @@ mod slow { //The first address in a wallet should always contain all three currently extant //receiver types. - from_inputs::send( + from_inputs::old_send( &recipient_restored, vec![(&get_base_address_macro!(faucet, "sapling"), 4_000, None)], ) @@ -3124,7 +3126,7 @@ mod slow { // # Expected Fees: // - legacy: 0 // - 317: 0 - from_inputs::send(&sapling_faucet, vec![(&pmc_unified, 100_000, None)]) + from_inputs::old_send(&sapling_faucet, vec![(&pmc_unified, 100_000, None)]) .await .unwrap(); bump_and_check_pmc!(o: 100_000 s: 0 t: 0); @@ -3133,7 +3135,7 @@ mod slow { // # Expected Fees: // - legacy: 10_000 // - 317: 5_000 for transparent + 10_000 for orchard + 10_000 for sapling == 25_000 - from_inputs::send( + from_inputs::old_send( &pool_migration_client, vec![(&pmc_taddr, 30_000, None), (&pmc_sapling, 30_000, None)], ) @@ -3172,7 +3174,7 @@ mod slow { // # Expected Fees: // - legacy: 0 // - 317: 0 - from_inputs::send(&sapling_faucet, vec![(&pmc_taddr, 50_000, None)]) + from_inputs::old_send(&sapling_faucet, vec![(&pmc_taddr, 50_000, None)]) .await .unwrap(); bump_and_check_pmc!(o: 0 s: 0 t: 50_000); @@ -3190,7 +3192,7 @@ mod slow { // # Expected Fees: // - legacy: 10_000 // - 317: 20_000 - from_inputs::send(&sapling_faucet, vec![(&pmc_sapling, 50_000, None)]) + from_inputs::old_send(&sapling_faucet, vec![(&pmc_sapling, 50_000, None)]) .await .unwrap(); bump_and_check_pmc!(o: 40_000 s: 50_000 t: 0); @@ -3212,7 +3214,7 @@ mod slow { // # Expected Fees: // - legacy: 10_000 // - 317: 10_000 - from_inputs::send(&pool_migration_client, vec![(&pmc_unified, 70_000, None)]) + from_inputs::old_send(&pool_migration_client, vec![(&pmc_unified, 70_000, None)]) .await .unwrap(); bump_and_check_pmc!(o: 70_000 s: 0 t: 0); @@ -3221,7 +3223,7 @@ mod slow { // # Expected Fees: // - legacy: 10_000 // - 317: 5_000 for transparent + 10_000 for orchard + 10_000 for sapling == 25_000 - from_inputs::send( + from_inputs::old_send( &pool_migration_client, vec![(&pmc_taddr, 30_000, None), (&pmc_sapling, 30_000, None)], ) @@ -3249,7 +3251,7 @@ mod slow { // # Expected Fees: // - legacy: 10_000 // - 317: 10_000 - from_inputs::send(&pool_migration_client, vec![(&pmc_unified, 20_000, None)]) + from_inputs::old_send(&pool_migration_client, vec![(&pmc_unified, 20_000, None)]) .await .unwrap(); bump_and_check_pmc!(o: 40_000 s: 0 t: 0); @@ -3258,7 +3260,7 @@ mod slow { // # Expected Fees: // - legacy: 10_000 // - 317: (orchard = 10_000 + 5_000) 15_000 - from_inputs::send(&pool_migration_client, vec![(&pmc_taddr, 20_000, None)]) + from_inputs::old_send(&pool_migration_client, vec![(&pmc_taddr, 20_000, None)]) .await .unwrap(); bump_and_check_pmc!(o: 10_000 s: 0 t: 20_000); @@ -3274,18 +3276,18 @@ mod slow { bump_and_check_pmc!(o: 20_000 s: 0 t: 0); // 6 sapling and orchard to orchard - from_inputs::send(&sapling_faucet, vec![(&pmc_sapling, 20_000, None)]) + from_inputs::old_send(&sapling_faucet, vec![(&pmc_sapling, 20_000, None)]) .await .unwrap(); bump_and_check_pmc!(o: 20_000 s: 20_000 t: 0); - from_inputs::send(&pool_migration_client, vec![(&pmc_unified, 30_000, None)]) + from_inputs::old_send(&pool_migration_client, vec![(&pmc_unified, 30_000, None)]) .await .unwrap(); bump_and_check_pmc!(o: 30_000 s: 0 t: 0); // 7 tzo --> o - from_inputs::send( + from_inputs::old_send( &sapling_faucet, vec![(&pmc_taddr, 20_000, None), (&pmc_sapling, 20_000, None)], ) @@ -3296,18 +3298,18 @@ mod slow { from_inputs::shield(&pool_migration_client, &[PoolType::Transparent], None) .await .unwrap(); - from_inputs::send(&pool_migration_client, vec![(&pmc_unified, 40_000, None)]) + from_inputs::old_send(&pool_migration_client, vec![(&pmc_unified, 40_000, None)]) .await .unwrap(); bump_and_check_pmc!(o: 50_000 s: 0 t: 0); // Send from Sapling into empty Orchard pool - from_inputs::send(&pool_migration_client, vec![(&pmc_sapling, 40_000, None)]) + from_inputs::old_send(&pool_migration_client, vec![(&pmc_sapling, 40_000, None)]) .await .unwrap(); bump_and_check_pmc!(o: 0 s: 40_000 t: 0); - from_inputs::send(&pool_migration_client, vec![(&pmc_unified, 30_000, None)]) + from_inputs::old_send(&pool_migration_client, vec![(&pmc_unified, 30_000, None)]) .await .unwrap(); bump_and_check_pmc!(o: 30_000 s: 0 t: 0); @@ -3329,7 +3331,7 @@ mod slow { zingo_testutils::increase_height_and_wait_for_client(®test_manager, &faucet, 2) .await .unwrap(); - from_inputs::send( + from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "transparent"), @@ -3347,7 +3349,7 @@ mod slow { // Send of less that transaction fee let sent_value = 1000; - let _sent_transaction_id = from_inputs::send( + let _sent_transaction_id = from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "unified"), @@ -3376,7 +3378,7 @@ mod slow { regtest_network, ) .await; - from_inputs::send( + from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "unified"), @@ -3405,7 +3407,7 @@ mod slow { transparent_balance: Some(0) } ); - from_inputs::send( + from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "unified"), @@ -3442,10 +3444,10 @@ mod slow { "faucet notes: {}", faucet.do_list_notes(true).await.pretty(4) ); - from_inputs::send(&faucet, vec![(&base_uaddress, 1_000u64, Some("1"))]) + from_inputs::old_send(&faucet, vec![(&base_uaddress, 1_000u64, Some("1"))]) .await .unwrap(); - from_inputs::send(&faucet, vec![(&base_uaddress, 1_000u64, Some("1"))]) + from_inputs::old_send(&faucet, vec![(&base_uaddress, 1_000u64, Some("1"))]) .await .expect( "We only have sapling notes, plus a pending orchard note from the \ @@ -3456,7 +3458,7 @@ mod slow { JsonValue::from(faucet.do_total_memobytes_to_address().await)[&base_uaddress].pretty(4), "2".to_string() ); - from_inputs::send(&faucet, vec![(&base_uaddress, 1_000u64, Some("aaaa"))]) + from_inputs::old_send(&faucet, vec![(&base_uaddress, 1_000u64, Some("aaaa"))]) .await .unwrap(); assert_eq!( @@ -3476,7 +3478,7 @@ mod slow { // 4. Send a transaction to both external t-addr and external z addr and mine it let sent_zvalue = 80_000; let sent_zmemo = "Ext z"; - let sent_transaction_id = from_inputs::send( + let sent_transaction_id = from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "sapling"), @@ -3575,7 +3577,7 @@ mod slow { async fn mempool_spends_correctly_marked_pending_spent() { let (_regtest_manager, _cph, _faucet, recipient, _txid) = scenarios::faucet_funded_recipient_default(1_000_000).await; - from_inputs::send( + from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(recipient, "sapling"), @@ -3608,7 +3610,7 @@ mod slow { scenarios::faucet_recipient_default().await; for i in 1..4 { let _ = faucet.do_sync(false).await; - from_inputs::send( + from_inputs::old_send( &faucet, vec![(&get_base_address_macro!(recipient, "sapling"), 10_100, None)], ) @@ -3618,7 +3620,7 @@ mod slow { let amount: u64 = u64::from(chainwait * i); zingo_testutils::increase_server_height(®test_manager, chainwait).await; let _ = recipient.do_sync(false).await; - from_inputs::send( + from_inputs::old_send( &recipient, vec![(&get_base_address_macro!(recipient, "unified"), amount, None)], ) @@ -3739,14 +3741,14 @@ mod slow { let balance = client.do_balance().await; assert_eq!(balance.orchard_balance, Some(expected_balance)); if expected_balance > 0 { - let _ = from_inputs::send( + let _ = from_inputs::old_send( &client, vec![(&get_base_address_macro!(client, "sapling"), 11011, None)], ) .await .unwrap(); let _ = client.do_sync(true).await.unwrap(); - let _ = from_inputs::send( + let _ = from_inputs::old_send( &client, vec![(&get_base_address_macro!(client, "transparent"), 28000, None)], ) @@ -3828,7 +3830,7 @@ mod basic_transactions { faucet.do_sync(true).await.unwrap(); for _ in 0..2 { - from_inputs::send(&faucet, vec![(recipient_addr_ua.as_str(), 40_000, None)]) + from_inputs::old_send(&faucet, vec![(recipient_addr_ua.as_str(), 40_000, None)]) .await .unwrap(); } @@ -3840,7 +3842,7 @@ mod basic_transactions { recipient.do_sync(true).await.unwrap(); faucet.do_sync(true).await.unwrap(); - from_inputs::send(&recipient, vec![(faucet_addr_ua.as_str(), 50_000, None)]) + from_inputs::old_send(&recipient, vec![(faucet_addr_ua.as_str(), 50_000, None)]) .await .unwrap(); @@ -3857,7 +3859,7 @@ mod basic_transactions { let (regtest_manager, _cph, faucet, recipient) = scenarios::faucet_recipient_default().await; - let txid1 = from_inputs::send( + let txid1 = from_inputs::old_send( &faucet, vec![( get_base_address_macro!(recipient, "unified").as_str(), @@ -3868,7 +3870,7 @@ mod basic_transactions { .await .unwrap(); - let txid2 = from_inputs::send( + let txid2 = from_inputs::old_send( &faucet, vec![( get_base_address_macro!(recipient, "sapling").as_str(), @@ -3879,7 +3881,7 @@ mod basic_transactions { .await .unwrap(); - let txid3 = from_inputs::send( + let txid3 = from_inputs::old_send( &faucet, vec![( get_base_address_macro!(recipient, "transparent").as_str(), @@ -3999,7 +4001,7 @@ mod basic_transactions { assert_eq!(calculated_fee_txid3, expected_fee_txid3 as u64); - let txid4 = zingo_testutils::lightclient::from_inputs::send( + let txid4 = zingo_testutils::lightclient::from_inputs::old_send( &recipient, vec![( get_base_address_macro!(faucet, "transparent").as_str(), @@ -4057,7 +4059,7 @@ mod basic_transactions { let (regtest_manager, _cph, faucet, recipient) = scenarios::faucet_recipient_default().await; - let txid1 = zingo_testutils::lightclient::from_inputs::send( + let txid1 = zingo_testutils::lightclient::from_inputs::old_send( &faucet, vec![( get_base_address_macro!(recipient, "unified").as_str(), @@ -4114,7 +4116,7 @@ mod basic_transactions { let (regtest_manager, _cph, faucet, recipient) = scenarios::faucet_recipient_default().await; - zingo_testutils::lightclient::from_inputs::send( + zingo_testutils::lightclient::from_inputs::old_send( &faucet, vec![( get_base_address_macro!(recipient, "transparent").as_str(), @@ -4176,7 +4178,7 @@ mod basic_transactions { assert_eq!(calculated_fee_txid1, expected_fee_txid1 as u64); - zingo_testutils::lightclient::from_inputs::send( + zingo_testutils::lightclient::from_inputs::old_send( &faucet, vec![( get_base_address_macro!(recipient, "transparent").as_str(), diff --git a/libtonode-tests/tests/shield_transparent.rs b/libtonode-tests/tests/shield_transparent.rs index d0b565a572..fe973cf434 100644 --- a/libtonode-tests/tests/shield_transparent.rs +++ b/libtonode-tests/tests/shield_transparent.rs @@ -15,7 +15,7 @@ async fn shield_transparent() { serde_json::to_string_pretty(&faucet.do_balance().await).unwrap(), serde_json::to_string_pretty(&recipient.do_balance().await).unwrap(), ); - let proposal = from_inputs::send( + let proposal = from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "transparent"), diff --git a/zingo-testutils/src/lib.rs b/zingo-testutils/src/lib.rs index 02015b2124..ca773bcc45 100644 --- a/zingo-testutils/src/lib.rs +++ b/zingo-testutils/src/lib.rs @@ -148,7 +148,7 @@ pub async fn send_value_between_clients_and_sync( "recipient address is: {}", &recipient.do_addresses().await[0]["address"] ); - let txid = crate::lightclient::from_inputs::send( + let txid = crate::lightclient::from_inputs::old_send( sender, vec![( &crate::get_base_address_macro!(recipient, address_type), @@ -1033,7 +1033,7 @@ pub mod scenarios { .unwrap(); let orchard_txid = if let Some(funds) = orchard_funds { Some( - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &faucet, vec![(&get_base_address_macro!(recipient, "unified"), funds, None)], ) @@ -1045,7 +1045,7 @@ pub mod scenarios { }; let sapling_txid = if let Some(funds) = sapling_funds { Some( - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &faucet, vec![(&get_base_address_macro!(recipient, "sapling"), funds, None)], ) @@ -1057,7 +1057,7 @@ pub mod scenarios { }; let transparent_txid = if let Some(funds) = transparent_funds { Some( - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "transparent"), @@ -1192,7 +1192,7 @@ pub mod scenarios { .build_client(HOSPITAL_MUSEUM_SEED.to_string(), 0, false, regtest_network) .await; faucet.do_sync(false).await.unwrap(); - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &faucet, vec![(&get_base_address_macro!(recipient, "unified"), value, None)], ) @@ -1232,7 +1232,7 @@ pub mod scenarios { .await .unwrap(); // received from a faucet - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &faucet, vec![(&get_base_address_macro!(recipient, "unified"), value, None)], ) @@ -1242,7 +1242,7 @@ pub mod scenarios { .await .unwrap(); // send to a faucet - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "unified"), @@ -1256,7 +1256,7 @@ pub mod scenarios { .await .unwrap(); // send to self sapling - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(recipient, "sapling"), @@ -1300,7 +1300,7 @@ pub mod scenarios { .await .unwrap(); // received from a faucet to orchard - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "unified"), @@ -1314,7 +1314,7 @@ pub mod scenarios { .await .unwrap(); // received from a faucet to sapling - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "sapling"), @@ -1328,7 +1328,7 @@ pub mod scenarios { .await .unwrap(); // received from a faucet to transparent - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &faucet, vec![( &get_base_address_macro!(recipient, "transparent"), @@ -1342,7 +1342,7 @@ pub mod scenarios { .await .unwrap(); // send to a faucet - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(faucet, "unified"), @@ -1356,7 +1356,7 @@ pub mod scenarios { .await .unwrap(); // send to self orchard - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(recipient, "unified"), @@ -1370,7 +1370,7 @@ pub mod scenarios { .await .unwrap(); // send to self sapling - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(recipient, "sapling"), @@ -1384,7 +1384,7 @@ pub mod scenarios { .await .unwrap(); // send to self transparent - crate::lightclient::from_inputs::send( + crate::lightclient::from_inputs::old_send( &recipient, vec![( &get_base_address_macro!(recipient, "transparent"), diff --git a/zingo-testutils/src/lightclient.rs b/zingo-testutils/src/lightclient.rs index 864853ec63..6d62abe57a 100644 --- a/zingo-testutils/src/lightclient.rs +++ b/zingo-testutils/src/lightclient.rs @@ -68,7 +68,7 @@ pub mod from_inputs { } /// In a test give sender a raw_receiver to encode and send to - pub async fn send( + pub async fn old_send( sender: &zingolib::lightclient::LightClient, raw_receivers: Vec<(&str, u64, Option<&str>)>, ) -> Result { From 63768dc5eca07102d89bea1f30553fdfa93d8b26 Mon Sep 17 00:00:00 2001 From: zancas Date: Sun, 2 Jun 2024 16:16:52 -0600 Subject: [PATCH 6/9] finish test shim --- zingo-testutils/src/lightclient.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/zingo-testutils/src/lightclient.rs b/zingo-testutils/src/lightclient.rs index 6d62abe57a..60fc41001c 100644 --- a/zingo-testutils/src/lightclient.rs +++ b/zingo-testutils/src/lightclient.rs @@ -72,8 +72,12 @@ pub mod from_inputs { sender: &zingolib::lightclient::LightClient, raw_receivers: Vec<(&str, u64, Option<&str>)>, ) -> Result { - let receivers = receivers_from_send_inputs(raw_receivers, &sender.config().chain); - sender.do_send(receivers).await.map(|txid| txid.to_string()) + let request = transaction_request_from_send_inputs(sender, raw_receivers) + .expect("should be able to create a transaction request as receivers are valid."); + match sender.quick_send(request).await { + Ok(txids) => Ok(txids.head.to_string()), + Err(_quick_send_error) => Err("oops".to_string()), + } } /// Panics if the address conversion fails. From 7a1dd0535ee27db9e85872db21baacd2bb9c8006 Mon Sep 17 00:00:00 2001 From: zancas Date: Sun, 2 Jun 2024 16:55:12 -0600 Subject: [PATCH 7/9] no new test failures when this unused code is deleted --- zingolib/src/lightclient/send.rs | 36 -------------------------------- 1 file changed, 36 deletions(-) diff --git a/zingolib/src/lightclient/send.rs b/zingolib/src/lightclient/send.rs index 91a1d5ab2e..444b835633 100644 --- a/zingolib/src/lightclient/send.rs +++ b/zingolib/src/lightclient/send.rs @@ -1,5 +1,4 @@ //! TODO: Add Mod Description Here! -use log::debug; use zcash_client_backend::{address::Address, PoolType, ShieldedProtocol}; use zcash_primitives::consensus::BlockHeight; @@ -7,7 +6,6 @@ use zcash_primitives::transaction::fees::zip317::MINIMUM_FEE; use zcash_primitives::transaction::TxId; use zcash_proofs::prover::LocalTxProver; -use crate::data::receivers::Receivers; use crate::utils::conversion::zatoshis_from_u64; use super::LightClient; @@ -22,40 +20,6 @@ impl LightClient { ) + 1) } - /// Send funds - pub async fn do_send(&self, receivers: Receivers) -> Result { - let transaction_submission_height = self.get_submission_height().await?; - // First, get the consensus branch ID - debug!("Creating transaction"); - - let _lock = self.sync_lock.lock().await; - // I am not clear on how long this operation may take, but it's - // clearly unnecessary in a send that doesn't include sapling - // TODO: Remove from sends that don't include Sapling - let (sapling_output, sapling_spend) = crate::wallet::utils::read_sapling_params()?; - - let sapling_prover = LocalTxProver::from_bytes(&sapling_spend, &sapling_output); - - self.wallet - .send_to_addresses( - sapling_prover, - vec![ - PoolType::Shielded(ShieldedProtocol::Orchard), - PoolType::Shielded(ShieldedProtocol::Sapling), - ], // This policy doesn't allow - // spend from transparent. - receivers, - transaction_submission_height, - |transaction_bytes| { - crate::grpc_connector::send_transaction( - self.get_server_uri(), - transaction_bytes, - ) - }, - ) - .await - } - /// TODO: Add Doc Comment Here! pub async fn do_send_progress(&self) -> Result { let progress = self.wallet.get_send_progress().await; From 622d4ea0fc03248999b2ca47c6e20a6d0a4e10e4 Mon Sep 17 00:00:00 2001 From: zancas Date: Sun, 2 Jun 2024 19:06:50 -0600 Subject: [PATCH 8/9] make testutils from_inputs::shield wrap quick_shield --- zingo-testutils/src/lightclient.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/zingo-testutils/src/lightclient.rs b/zingo-testutils/src/lightclient.rs index 60fc41001c..e0aecbccfa 100644 --- a/zingo-testutils/src/lightclient.rs +++ b/zingo-testutils/src/lightclient.rs @@ -83,17 +83,17 @@ pub mod from_inputs { /// Panics if the address conversion fails. pub async fn shield( shielder: &LightClient, - pools_to_shield: &[PoolType], - address: Option<&str>, + _pools_to_shield: &[PoolType], + _address: Option<&str>, ) -> Result { - let address = address.map(|addr| { + let _address = _address.map(|addr| { zingolib::utils::conversion::address_from_str(addr, &shielder.config().chain) .expect("should be a valid address") }); - shielder - .do_shield(pools_to_shield, address) - .await - .map(|txid| txid.to_string()) + match shielder.quick_shield().await { + Ok(txids) => Ok(txids.head.to_string()), + Err(quickshield_error) => Err(quickshield_error.to_string()), + } } /// Creates a [`zcash_client_backend::zip321::TransactionRequest`] from rust primitives for simplified test writing. From 86f752224d8f4675ee99457b49f48ca1c57dfa09 Mon Sep 17 00:00:00 2001 From: zancas Date: Sun, 2 Jun 2024 19:09:43 -0600 Subject: [PATCH 9/9] remove do_shield and verify that cargo nextest run -p zingolib passes all tests --- zingolib/src/lightclient/send.rs | 77 -------------------------------- 1 file changed, 77 deletions(-) diff --git a/zingolib/src/lightclient/send.rs b/zingolib/src/lightclient/send.rs index 444b835633..5c75b11950 100644 --- a/zingolib/src/lightclient/send.rs +++ b/zingolib/src/lightclient/send.rs @@ -1,12 +1,6 @@ //! TODO: Add Mod Description Here! -use zcash_client_backend::{address::Address, PoolType, ShieldedProtocol}; use zcash_primitives::consensus::BlockHeight; -use zcash_primitives::transaction::fees::zip317::MINIMUM_FEE; -use zcash_primitives::transaction::TxId; -use zcash_proofs::prover::LocalTxProver; - -use crate::utils::conversion::zatoshis_from_u64; use super::LightClient; use super::LightWalletSendProgress; @@ -28,77 +22,6 @@ impl LightClient { interrupt_sync: *self.interrupt_sync.read().await, }) } - - /// Shield funds. Send transparent or sapling funds to a unified address. - /// Defaults to the unified address of the capability if `address` is `None`. - pub async fn do_shield( - &self, - pools_to_shield: &[PoolType], - address: Option
, - ) -> Result { - let transaction_submission_height = self.get_submission_height().await?; - let fee = u64::from(MINIMUM_FEE); // TODO: This can no longer be hard coded, and must be calced - // as a fn of the transactions structure. - let tbal = self - .wallet - .tbalance(None) - .await - .expect("to receive a balance"); - let sapling_bal = self - .wallet - .spendable_sapling_balance(None) - .await - .unwrap_or(0); - - // Make sure there is a balance, and it is greater than the amount - let balance_to_shield = - if pools_to_shield.contains(&PoolType::Transparent) { - tbal - } else { - 0 - } + if pools_to_shield.contains(&PoolType::Shielded(ShieldedProtocol::Sapling)) { - sapling_bal - } else { - 0 - }; - if balance_to_shield <= fee { - return Err(format!( - "Not enough transparent/sapling balance to shield. Have {} zats, need more than {} zats to cover tx fee", - balance_to_shield, fee - )); - } - - let recipient_address = address.unwrap_or(Address::from( - self.wallet.wallet_capability().addresses()[0].clone(), - )); - let amount = zatoshis_from_u64(balance_to_shield - fee) - .expect("balance cannot be outside valid range of zatoshis"); - let receivers = vec![crate::data::receivers::Receiver { - recipient_address, - amount, - memo: None, - }]; - - let _lock = self.sync_lock.lock().await; - let (sapling_output, sapling_spend) = crate::wallet::utils::read_sapling_params()?; - - let sapling_prover = LocalTxProver::from_bytes(&sapling_spend, &sapling_output); - - self.wallet - .send_to_addresses( - sapling_prover, - pools_to_shield.to_vec(), - receivers, - transaction_submission_height, - |transaction_bytes| { - crate::grpc_connector::send_transaction( - self.get_server_uri(), - transaction_bytes, - ) - }, - ) - .await - } } /// patterns for newfangled propose flow