Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
387 changes: 176 additions & 211 deletions Cargo.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ tracing = "0.1"
tracing-subscriber = "0.3"

### Zingo-common
zingo-netutils = "3.0.0"
zingo-netutils = "4.0.0"
zingo_common_components = "0.3.0"

### Zcash
Expand Down
7 changes: 6 additions & 1 deletion darkside-tests/src/chain_generics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ pub(crate) mod conduct_chain {

async fn increase_chain_height(&mut self) {
let height_before = zingo_netutils::GrpcIndexer::new(self.lightserver_uri().unwrap())
.unwrap()
.get_latest_block()
.await
.unwrap()
Expand All @@ -127,7 +128,11 @@ pub(crate) mod conduct_chain {

// trees
let trees = zingo_netutils::GrpcIndexer::new(self.client_builder.server_id.clone())
.get_trees(height_before)
.unwrap()
.get_tree_state(zingo_netutils::lightwallet_protocol::BlockId {
height: height_before,
hash: vec![],
})
.await
.unwrap();
let mut sapling_tree: sapling_crypto::CommitmentTree =
Expand Down
6 changes: 5 additions & 1 deletion darkside-tests/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,11 @@ pub async fn update_tree_states_for_transaction(
height: u64,
) -> TreeState {
let trees = zingo_netutils::GrpcIndexer::new(server_id.clone())
.get_trees(height - 1)
.unwrap()
.get_tree_state(zingo_netutils::lightwallet_protocol::BlockId {
height: height - 1,
hash: vec![],
})
.await
.unwrap();
let mut sapling_tree: sapling_crypto::CommitmentTree =
Expand Down
29 changes: 14 additions & 15 deletions zingo-cli/src/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,24 +91,23 @@ impl Command for ChangeServerCommand {

fn exec(&self, args: &[&str], lightclient: &mut LightClient) -> String {
match args.len() {
0 => {
lightclient.set_indexer_uri(http::Uri::default());
"server set".to_string()
}
0 => match lightclient.set_indexer_uri(http::Uri::default()) {
Ok(()) => "server set".to_string(),
Err(e) => format!("invalid server uri: {e}"),
},
1 => match http::Uri::from_str(args[0]) {
Ok(uri) => {
lightclient.set_indexer_uri(uri);
"server set"
}
Ok(uri) => match lightclient.set_indexer_uri(uri) {
Ok(()) => "server set".to_string(),
Err(e) => format!("invalid server uri: {e}"),
},
Err(_) => match args[0] {
"" => {
lightclient.set_indexer_uri(http::Uri::default());
"server set"
}
_ => "invalid server uri",
"" => match lightclient.set_indexer_uri(http::Uri::default()) {
Ok(()) => "server set".to_string(),
Err(e) => format!("invalid server uri: {e}"),
},
_ => "invalid server uri".to_string(),
},
}
.to_string(),
},
_ => self.help().to_string(),
}
}
Expand Down
1 change: 1 addition & 0 deletions zingo-cli/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,7 @@ fn build_zingo_config(filled_template: &ConfigTemplate) -> std::io::Result<Clien
let chain_height = RT
.block_on(async move {
zingo_netutils::GrpcIndexer::new(filled_template.server.clone())
.map_err(|e| format!("{e:?}"))?
.get_latest_block()
.await
.map(|block_id| block_id.height as u32)
Expand Down
4 changes: 3 additions & 1 deletion zingo-cli/src/server_select.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ pub(crate) fn select_servers() -> Vec<RankedServer> {
for uri in uris {
handles.push(tokio::spawn(async move {
let start = Instant::now();
let indexer = GrpcIndexer::new(uri.clone());
let Ok(indexer) = GrpcIndexer::new(uri.clone()) else {
return None;
};
match tokio::time::timeout(GET_INFO_TIMEOUT, indexer.get_info()).await {
Ok(Ok(_info)) => Some(RankedServer {
uri,
Expand Down
2 changes: 1 addition & 1 deletion zingo-testutils/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ default = ["grpc-proxy"]

[dependencies]
zingolib = { workspace = true, features = ["testutils"] }
zingo-netutils = { workspace = true, features = ["test-features"] }
zingo-netutils = { workspace = true }
zingo-testvectors = { workspace = true }
zingo-status = { workspace = true }

Expand Down
2 changes: 1 addition & 1 deletion zingolib/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ zcash_proofs = { workspace = true, features = ["download-params"] }
zcash_protocol = { workspace = true }
zcash_transparent = { workspace = true }
zingo-memo = { workspace = true }
zingo-netutils = { workspace = true }
zingo-netutils = { workspace = true, features = ["back_compatible"] }
zingo-price = { workspace = true }
zingo-status = { workspace = true }
zingo_common_components = { workspace = true }
Expand Down
5 changes: 4 additions & 1 deletion zingolib/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,10 @@ impl ClientConfigBuilder {
let wallet_dir = wallet_dir_or_default(self.wallet_dir, self.chain_type);
let wallet_name = wallet_name_or_default(self.wallet_name);
ClientConfig {
indexer_uri: self.indexer_uri.clone().unwrap_or_default(),
indexer_uri: self
.indexer_uri
.clone()
.unwrap_or_else(|| DEFAULT_INDEXER_URI.parse().expect("valid constant")),
chain_type: self.chain_type,
wallet_dir,
wallet_name,
Expand Down
19 changes: 14 additions & 5 deletions zingolib/src/lightclient.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,12 @@ impl LightClient {
}
};

let indexer = zingo_netutils::GrpcIndexer::new(config.indexer_uri());
// Install the ring crypto provider for rustls. Required because both
// `ring` and `aws-lc-rs` features are unified in via transitive deps,
// preventing rustls from auto-selecting a provider.
let _ = rustls::crypto::ring::default_provider().install_default();

let indexer = zingo_netutils::GrpcIndexer::new(config.indexer_uri())?;

Ok(LightClient {
indexer,
Expand Down Expand Up @@ -195,12 +200,16 @@ impl LightClient {

/// Returns URI of the indexer the lightclient is connected to.
pub fn indexer_uri(&self) -> Option<&http::Uri> {
self.indexer.uri()
Some(self.indexer.uri())
}

/// Set indexer uri.
pub fn set_indexer_uri(&mut self, server: http::Uri) {
self.indexer.set_uri(server);
pub fn set_indexer_uri(
&mut self,
server: http::Uri,
) -> Result<(), zingo_netutils::GetClientError> {
self.indexer = zingo_netutils::GrpcIndexer::new(server)?;
Ok(())
}

/// Creates a tor client for current price updates.
Expand Down Expand Up @@ -233,7 +242,7 @@ impl LightClient {
let o = json::object! {
"version" => i.version,
"git_commit" => i.git_commit,
"server_uri" => self.indexer.uri().map(|u| u.to_string()).unwrap_or_default(),
"server_uri" => self.indexer.uri().to_string(),
"vendor" => i.vendor,
"taddr_support" => i.taddr_support,
"chain_name" => i.chain_name,
Expand Down
2 changes: 1 addition & 1 deletion zingolib/src/lightclient/sync.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ impl LightClient {
));
}

let client = self.indexer.get_client().await?;
let client = self.indexer.get_zcb_client().await?;
let chain_type = self.chain_type();
let sync_config = self
.wallet()
Expand Down
2 changes: 1 addition & 1 deletion zingolib/src/testutils/chain_generics/networked.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ pub struct NetworkedTestEnvironment {

impl NetworkedTestEnvironment {
async fn update_server_height(&mut self) {
let indexer = zingo_netutils::GrpcIndexer::new(self.lightserver_uri().unwrap());
let indexer = zingo_netutils::GrpcIndexer::new(self.lightserver_uri().unwrap()).unwrap();
let latest = indexer.get_latest_block().await.unwrap().height as u32;
self.latest_known_server_height = Some(BlockHeight::from(latest));
crate::testutils::timestamped_test_log(
Expand Down
2 changes: 1 addition & 1 deletion zingolib/src/testutils/chain_generics/with_assertions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ where

timestamped_test_log("following proposal, preparing to unwind if an assertion fails.");

let indexer = zingo_netutils::GrpcIndexer::new(environment.lightserver_uri().unwrap());
let indexer = zingo_netutils::GrpcIndexer::new(environment.lightserver_uri().unwrap()).unwrap();
let server_height_at_send =
BlockHeight::from(indexer.get_latest_block().await.unwrap().height as u32);
let last_known_chain_height = sender
Expand Down
Loading