Skip to content
Draft
Show file tree
Hide file tree
Changes from 65 commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
637b44b
hmm
fluidvanadium Oct 3, 2025
c07de6f
implemented protocol version
fluidvanadium Oct 3, 2025
5b2380a
began impl add_server
fluidvanadium Oct 3, 2025
0fff891
impling add_server
fluidvanadium Oct 7, 2025
07560b9
building a LightClient
fluidvanadium Oct 7, 2025
9caba82
implementing
fluidvanadium Oct 8, 2025
bfb8a08
progress
fluidvanadium Oct 8, 2025
ac87e61
Merge branch 'ervar_chain_from_string' into zingo_wallet
fluidvanadium Oct 8, 2025
e238e8f
use birthday from server
fluidvanadium Oct 8, 2025
2cdad13
Merge remote-tracking branch 'labs/dev' into zingo_wallet
fluidvanadium Oct 8, 2025
27aa034
added common components dep
fluidvanadium Oct 8, 2025
70da31f
merged some good stuff
fluidvanadium Oct 10, 2025
dabbe56
Includes git history from extract_scenarios
fluidvanadium Oct 10, 2025
455534e
Merge remote-tracking branch 'labs/dev' into zingo_wallet
fluidvanadium Oct 29, 2025
a4344a1
Fixed manifest.
fluidvanadium Oct 29, 2025
58f146b
Used try_into for lrz BlockHeight.
fluidvanadium Oct 29, 2025
084016d
Compiles good.
fluidvanadium Oct 29, 2025
a3abe35
Merge remote-tracking branch 'labs/dev' into zingo_wallet
fluidvanadium Oct 29, 2025
007189f
Add zingo_wallet tests.
fluidvanadium Oct 29, 2025
c35b84c
Implements add_key.
fluidvanadium Oct 30, 2025
c6e92c4
cargo clippy --fix --tests --all-features
fluidvanadium Oct 30, 2025
54ed4f3
Install ring crypto provider.
fluidvanadium Oct 30, 2025
2cab819
Fixed an error in create_connect_get_height.
fluidvanadium Oct 30, 2025
d78a99a
Removed main function.
fluidvanadium Oct 30, 2025
1caaaad
user_agent_id written better.
fluidvanadium Oct 30, 2025
e2de5e3
cargo update
fluidvanadium Oct 30, 2025
e7b7780
Upgrade deps.
fluidvanadium Oct 30, 2025
7ee15f6
Merge remote-tracking branch 'labs/dev' into zingo_wallet
fluidvanadium Nov 9, 2025
fdcfe37
Wallet creation uses temporary save dir.
fluidvanadium Nov 9, 2025
dd4c8e8
Minimum test.
fluidvanadium Nov 9, 2025
5ed3c6d
Split into second test for scanning from server.
fluidvanadium Nov 9, 2025
6af65f2
Merge branch 'cargo_update_2' into zingo_wallet
fluidvanadium Nov 9, 2025
587a62e
`cargo update`
fluidvanadium Nov 9, 2025
37d8489
Added test groups.
fluidvanadium Nov 9, 2025
d40bb1d
Tests run!
fluidvanadium Nov 9, 2025
2c5d4ae
Moved init_tracing into a common module.
fluidvanadium Nov 9, 2025
b458256
test-log crate attribute replaces bespoke tracing initializer.
fluidvanadium Nov 10, 2025
30256ee
Use online zcash_wallet_interface dependency.
fluidvanadium Nov 10, 2025
69776f3
Merge dev
fluidvanadium Nov 24, 2025
0630319
Updated lockfile.
fluidvanadium Dec 8, 2025
3a69b31
Remove test_group and respecify test names.
fluidvanadium Dec 8, 2025
4036661
Rename test binary.
fluidvanadium Dec 8, 2025
80be91f
helperizing
fluidvanadium Dec 8, 2025
705c907
clippy
fluidvanadium Dec 8, 2025
7437678
merged dev
fluidvanadium Jan 15, 2026
7464cb8
Fixed zingo-netutils dep.
fluidvanadium Jan 15, 2026
a5ed051
Renamed test Environments for consistency.
fluidvanadium Jan 15, 2026
7a0c455
begin_scanning_server reflects what a zingo_wallet is meant to do wit…
fluidvanadium Jan 15, 2026
7b12ecf
polishing tests
fluidvanadium Jan 16, 2026
d6ca1ea
Fixed max_scanned_height...
fluidvanadium Jan 16, 2026
152e07b
More benchmarks.
fluidvanadium Jan 16, 2026
76cc285
Merge remote-tracking branch 'labs/dev' into zingo_wallet
fluidvanadium Jan 16, 2026
1a0a3f4
cargo fmt
fluidvanadium Jan 16, 2026
64b1476
cargo clippy --fix --tests --all-features
fluidvanadium Jan 16, 2026
4bdaf3d
trailing whitespace clipper
fluidvanadium Jan 16, 2026
ef3baef
cargo fmt
fluidvanadium Jan 16, 2026
4076e86
Fixed warnings.
fluidvanadium Jan 16, 2026
675d544
syncked glory_goddess
fluidvanadium Jan 16, 2026
fd2be7a
Merge commit 'f99e25f' into synced_glory_goddess
fluidvanadium Jan 16, 2026
bcf585f
cargo run -- --data-dir='zingolib/src/wallet/disk/testing/examples/te…
fluidvanadium Jan 16, 2026
9199736
Merge remote-tracking branch 'labs/dev' into synced_glory_goddess
fluidvanadium Jan 16, 2026
e42ad63
cargo run -- --data-dir='zingolib/src/wallet/disk/testing/examples/te…
fluidvanadium Jan 16, 2026
5144bb7
Very strange bug occurred. The address of the glory goddess Testnet w…
fluidvanadium Jan 16, 2026
f3675a9
Sort/merge Cargo.toml
fluidvanadium Feb 17, 2026
6507cd3
Apply suggestions from code review
fluidvanadium Feb 17, 2026
93ac585
Merge branch 'dev' into zingo_wallet
zancas Feb 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

56 changes: 32 additions & 24 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,26 @@ members = [
"pepper-sync",
"zingo-price",
"zingolib_testutils",
"zingo_wallet",
]
resolver = "2"

[workspace.dependencies]

# Protocol
bip0039 = { version = "0.13", features = ["rand"] }
bip32 = { version = "0.6.0-pre.1", default-features = false }
zip32 = "0.2.0"
### Internal Workspace
# zingo-memo = { path = "zingo-memo" } # NOTE: for development between releases
zingo-memo = "0.1.0"
zingo-price = { path = "zingo-price" }
# zingo-status = { path = "zingo-status" } # NOTE: for development between releases
zingo-status = "0.1.0"
pepper-sync = { path = "pepper-sync" }
zingolib = { path = "zingolib" }

### Zingo-common
zingo-netutils = "1.1.0"
zingo_common_components = { git = "https://github.com/zingolabs/zingo-common.git", version = "0.2" }

# Zcash
### nuttycom
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why change this name to "nuttycom"?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LOL

incrementalmerkletree = "0.8.2"
orchard = "0.11.0"
sapling-crypto = "0.5.0"
Expand All @@ -42,24 +51,25 @@ zcash_proofs = "0.26"
zcash_protocol = "0.7"
zcash_transparent = "0.6"

# Zebra
### Zebra
zebra-chain = "5.0.0"

# Zingo-common
zingo-netutils = "1.1.0"
zingo_common_components = { git = "https://github.com/zingolabs/zingo-common.git", version = "0.2" }
### Blockchain Protocol
bip0039 = { version = "0.13", features = ["rand"] }
bip32 = { version = "0.6.0-pre.1", default-features = false }
zip32 = "0.2.0"

# Parallel processing
### Parallel processing
crossbeam-channel = "0.5"
rayon = "1"

# Documentation
### Documentation
simple-mermaid = "0.2.0"

# Test Attributes
### Test Attributes
test-log = "0.2"

# Misc
### Misc
append-only-vec = "0.1.7"
bech32 = "0.11.0"
bs58 = "0.5"
Expand All @@ -86,8 +96,6 @@ log = "0.4"
log4rs = "1"
memuse = "0.2"
nonempty = "0.11.0"
portpicker = "0.1"
proptest = "1.6.0"
prost = "0.14"
rand = "0.8"
reqwest = { version = "0.12.15", default-features = false }
Expand All @@ -103,7 +111,6 @@ serde = "1"
serde_json = "1"
shellwords = "1"
subtle = "2"
tempfile = "3"
thiserror = "2"
tokio = "1"
tokio-rustls = "0.26"
Expand All @@ -115,17 +122,18 @@ tracing = "0.1"
tracing-subscriber = "0.3"
webpki-roots = "0.25"

# Workspace
# zingo-memo = { path = "zingo-memo" } # NOTE: for development between releases
zingo-memo = "0.1.0"
zingo-price = { path = "zingo-price" }
# zingo-status = { path = "zingo-status" } # NOTE: for development between releases
zingo-status = "0.1.0"
pepper-sync = { path = "pepper-sync" }
zingolib = { path = "zingolib" }
# [workspace.dev_dependencies]
# test framework DEVELOPMENT ONLY!
# toDO enforce this restriction
libtonode-tests = { path = "libtonode-tests" }

zcash_local_net = { git = "https://github.com/zingolabs/infrastructure.git", rev = "e4714fd" }
zingo_test_vectors = { git = "https://github.com/zingolabs/infrastructure.git", rev = "e4714fd" }

tempfile = "3"
portpicker = "0.1"
proptest = "1.6.0"

[profile.test]
opt-level = 3

2 changes: 1 addition & 1 deletion libtonode-tests/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ ci = ["zingolib/ci"]

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
zingolib = { workspace = true, features = ["darkside_tests", "testutils"] }
zingolib = { workspace = true, features = ["regtest", "testutils"] }
zingo-netutils = { workspace = true }
zingo_common_components = { workspace = true, features = ["for_test"] }
pepper-sync = { workspace = true }
Expand Down
6 changes: 3 additions & 3 deletions libtonode-tests/src/chain_generics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use zingolib_testutils::scenarios::custom_clients_default;
use zingolib_testutils::scenarios::network_combo::{DefaultIndexer, DefaultValidator};

/// includes utilities for connecting to zcashd regtest
pub struct LibtonodeEnvironment {
pub struct RegtestEnvironment {
/// Local network
pub local_net: LocalNet<DefaultValidator, DefaultIndexer>,
/// Client builder
Expand All @@ -23,12 +23,12 @@ pub struct LibtonodeEnvironment {

/// known issues include --slow
/// these tests cannot portray the full range of network weather.
impl ConductChain for LibtonodeEnvironment {
impl ConductChain for RegtestEnvironment {
async fn setup() -> Self {
timestamped_test_log("starting mock libtonode network");
let (local_net, client_builder) = custom_clients_default().await;

LibtonodeEnvironment {
RegtestEnvironment {
local_net,
client_builder,
}
Expand Down
48 changes: 23 additions & 25 deletions libtonode-tests/tests/chain_generics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
mod chain_generics {
#[cfg(feature = "proptests")]
mod proptests {
use libtonode_tests::chain_generics::LibtonodeEnvironment;
use libtonode_tests::chain_generics::RegtestEnvironment;
use tokio::runtime::Runtime;
use zingolib::testutils::chain_generics::fixtures;
use zingolib::testutils::int_to_pooltype;
Expand All @@ -12,41 +12,41 @@ mod chain_generics {
#[test]
fn any_source_sends_to_any_receiver_libtonode(send_value in 0..50_000u64, change_value in 0..10_000u64, sender_protocol in 1..2, receiver_pool in 0..2) {
Runtime::new().unwrap().block_on(async {
fixtures::any_source_sends_to_any_receiver::<LibtonodeEnvironment>(int_to_shieldedprotocol(sender_protocol), int_to_pooltype(receiver_pool), send_value, change_value, true).await;
fixtures::any_source_sends_to_any_receiver::<RegtestEnvironment>(int_to_shieldedprotocol(sender_protocol), int_to_pooltype(receiver_pool), send_value, change_value, true).await;
});
}
#[test]
fn any_source_sends_to_any_receiver_0_change_libtonode(send_value in 0..50_000u64, sender_protocol in 1..2, receiver_pool in 0..2) {
Runtime::new().unwrap().block_on(async {
fixtures::any_source_sends_to_any_receiver::<LibtonodeEnvironment>(int_to_shieldedprotocol(sender_protocol), int_to_pooltype(receiver_pool), send_value, 0, true).await;
fixtures::any_source_sends_to_any_receiver::<RegtestEnvironment>(int_to_shieldedprotocol(sender_protocol), int_to_pooltype(receiver_pool), send_value, 0, true).await;
});
}
}
}
use libtonode_tests::chain_generics::LibtonodeEnvironment;
use libtonode_tests::chain_generics::RegtestEnvironment;
use zcash_protocol::{PoolType, ShieldedProtocol};
use zingolib::testutils::chain_generics::fixtures;

#[tokio::test]
async fn generate_a_range_of_value_transfers() {
fixtures::create_various_value_transfers::<LibtonodeEnvironment>().await;
fixtures::create_various_value_transfers::<RegtestEnvironment>().await;
}
#[tokio::test]
async fn send_shield_cycle() {
fixtures::send_shield_cycle::<LibtonodeEnvironment>(1).await;
fixtures::send_shield_cycle::<RegtestEnvironment>(1).await;
}
#[tokio::test]
#[test_log::test]
async fn ignore_dust_inputs() {
fixtures::ignore_dust_inputs::<LibtonodeEnvironment>().await;
fixtures::ignore_dust_inputs::<RegtestEnvironment>().await;
}
#[tokio::test]
async fn note_selection_order() {
fixtures::note_selection_order::<LibtonodeEnvironment>().await;
fixtures::note_selection_order::<RegtestEnvironment>().await;
}
#[tokio::test]
async fn simpool_insufficient_1_sapling_to_transparent() {
fixtures::shpool_to_pool_insufficient_error::<LibtonodeEnvironment>(
fixtures::shpool_to_pool_insufficient_error::<RegtestEnvironment>(
ShieldedProtocol::Sapling,
PoolType::TRANSPARENT,
1,
Expand All @@ -55,7 +55,7 @@ mod chain_generics {
}
#[tokio::test]
async fn simpool_insufficient_1_sapling_to_sapling() {
fixtures::shpool_to_pool_insufficient_error::<LibtonodeEnvironment>(
fixtures::shpool_to_pool_insufficient_error::<RegtestEnvironment>(
ShieldedProtocol::Sapling,
PoolType::SAPLING,
1,
Expand All @@ -64,7 +64,7 @@ mod chain_generics {
}
#[tokio::test]
async fn simpool_insufficient_1_sapling_to_orchard() {
fixtures::shpool_to_pool_insufficient_error::<LibtonodeEnvironment>(
fixtures::shpool_to_pool_insufficient_error::<RegtestEnvironment>(
ShieldedProtocol::Sapling,
PoolType::ORCHARD,
1,
Expand All @@ -73,7 +73,7 @@ mod chain_generics {
}
#[tokio::test]
async fn simpool_insufficient_1_orchard_to_transparent() {
fixtures::shpool_to_pool_insufficient_error::<LibtonodeEnvironment>(
fixtures::shpool_to_pool_insufficient_error::<RegtestEnvironment>(
ShieldedProtocol::Orchard,
PoolType::TRANSPARENT,
1,
Expand All @@ -82,7 +82,7 @@ mod chain_generics {
}
#[tokio::test]
async fn simpool_insufficient_1_orchard_to_sapling() {
fixtures::shpool_to_pool_insufficient_error::<LibtonodeEnvironment>(
fixtures::shpool_to_pool_insufficient_error::<RegtestEnvironment>(
ShieldedProtocol::Orchard,
PoolType::SAPLING,
1,
Expand All @@ -91,7 +91,7 @@ mod chain_generics {
}
#[tokio::test]
async fn simpool_insufficient_1_orchard_to_orchard() {
fixtures::shpool_to_pool_insufficient_error::<LibtonodeEnvironment>(
fixtures::shpool_to_pool_insufficient_error::<RegtestEnvironment>(
ShieldedProtocol::Orchard,
PoolType::ORCHARD,
1,
Expand All @@ -100,7 +100,7 @@ mod chain_generics {
}
#[tokio::test]
async fn simpool_insufficient_10_000_sapling_to_transparent() {
fixtures::shpool_to_pool_insufficient_error::<LibtonodeEnvironment>(
fixtures::shpool_to_pool_insufficient_error::<RegtestEnvironment>(
ShieldedProtocol::Sapling,
PoolType::TRANSPARENT,
10_000,
Expand All @@ -109,7 +109,7 @@ mod chain_generics {
}
#[tokio::test]
async fn simpool_insufficient_10_000_sapling_to_sapling() {
fixtures::shpool_to_pool_insufficient_error::<LibtonodeEnvironment>(
fixtures::shpool_to_pool_insufficient_error::<RegtestEnvironment>(
ShieldedProtocol::Sapling,
PoolType::SAPLING,
10_000,
Expand All @@ -118,7 +118,7 @@ mod chain_generics {
}
#[tokio::test]
async fn simpool_insufficient_10_000_sapling_to_orchard() {
fixtures::shpool_to_pool_insufficient_error::<LibtonodeEnvironment>(
fixtures::shpool_to_pool_insufficient_error::<RegtestEnvironment>(
ShieldedProtocol::Sapling,
PoolType::ORCHARD,
10_000,
Expand All @@ -127,7 +127,7 @@ mod chain_generics {
}
#[tokio::test]
async fn simpool_insufficient_10_000_orchard_to_transparent() {
fixtures::shpool_to_pool_insufficient_error::<LibtonodeEnvironment>(
fixtures::shpool_to_pool_insufficient_error::<RegtestEnvironment>(
ShieldedProtocol::Orchard,
PoolType::TRANSPARENT,
10_000,
Expand All @@ -136,7 +136,7 @@ mod chain_generics {
}
#[tokio::test]
async fn simpool_insufficient_10_000_orchard_to_sapling() {
fixtures::shpool_to_pool_insufficient_error::<LibtonodeEnvironment>(
fixtures::shpool_to_pool_insufficient_error::<RegtestEnvironment>(
ShieldedProtocol::Orchard,
PoolType::SAPLING,
10_000,
Expand All @@ -145,7 +145,7 @@ mod chain_generics {
}
#[tokio::test]
async fn simpool_insufficient_10_000_orchard_to_orchard() {
fixtures::shpool_to_pool_insufficient_error::<LibtonodeEnvironment>(
fixtures::shpool_to_pool_insufficient_error::<RegtestEnvironment>(
ShieldedProtocol::Orchard,
PoolType::ORCHARD,
10_000,
Expand All @@ -154,17 +154,15 @@ mod chain_generics {
}
#[tokio::test]
async fn simpool_no_fund_1_000_000_to_transparent() {
fixtures::to_pool_unfunded_error::<LibtonodeEnvironment>(PoolType::TRANSPARENT, 1_000_000)
fixtures::to_pool_unfunded_error::<RegtestEnvironment>(PoolType::TRANSPARENT, 1_000_000)
.await;
}
#[tokio::test]
async fn simpool_no_fund_1_000_000_to_sapling() {
fixtures::to_pool_unfunded_error::<LibtonodeEnvironment>(PoolType::SAPLING, 1_000_000)
.await;
fixtures::to_pool_unfunded_error::<RegtestEnvironment>(PoolType::SAPLING, 1_000_000).await;
}
#[tokio::test]
async fn simpool_no_fund_1_000_000_to_orchard() {
fixtures::to_pool_unfunded_error::<LibtonodeEnvironment>(PoolType::ORCHARD, 1_000_000)
.await;
fixtures::to_pool_unfunded_error::<RegtestEnvironment>(PoolType::ORCHARD, 1_000_000).await;
}
}
6 changes: 3 additions & 3 deletions libtonode-tests/tests/concrete.rs
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ mod fast {
use zip32::AccountId;

use super::*;
use libtonode_tests::chain_generics::LibtonodeEnvironment;
use libtonode_tests::chain_generics::RegtestEnvironment;

// FIXME: zingo2, large test to re-integrate
// #[tokio::test]
Expand Down Expand Up @@ -688,7 +688,7 @@ mod fast {
/// This tests checks that `messages_containing` returns an empty vector when empty memos are included.
#[tokio::test]
async fn filter_empty_messages() {
let mut environment = LibtonodeEnvironment::setup().await;
let mut environment = RegtestEnvironment::setup().await;

let mut faucet = environment.create_faucet().await;
let mut recipient = environment.create_client().await;
Expand Down Expand Up @@ -920,7 +920,7 @@ mod fast {
/// It also tests that retrieving the value transfers multiple times in a row returns the same results.
#[tokio::test]
async fn value_transfers() {
let mut environment = LibtonodeEnvironment::setup().await;
let mut environment = RegtestEnvironment::setup().await;

let mut faucet = environment.create_faucet().await;
let mut recipient = environment.create_client().await;
Expand Down
Loading