deps: Use new upstream types

Also:
 - Fix parse errors resulting from upstream changes.
 - Upgrade dependencies (except for potentially breaking ones).
This commit is contained in:
Alan Szepieniec 2025-10-27 06:53:30 +01:00
parent edf7800a88
commit 8f900fd70a
9 changed files with 616 additions and 470 deletions

983
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -18,9 +18,9 @@ required-features = ["attacks"]
[dependencies]
axum = { version = "0.7.9", features = ["macros"] }
serde = { version = "1.0.197", features = ["derive"] }
serde_json = "1.0.115"
tokio = { version = "1.37.0", features = ["full", "tracing"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.145"
tokio = { version = "1.48.0", features = ["full", "tracing"] }
tracing = "0.1"
tracing-subscriber = "0.3"
@ -31,41 +31,41 @@ tarpc = { version = "^0.34", features = [
"serde-transport-json",
"tcp",
] }
clap = "4.5.4"
thiserror = "1.0.59"
boilerplate = { version = "1.0.0" }
clap = "4.5.50"
thiserror = "1.0.69"
boilerplate = { version = "1.0.1" }
html-escaper = "0.2.0"
tower-http = { version = "0.5.2", features = ["fs"] }
readonly = "0.2.12"
url = "2.5.0"
lettre = { version = "0.11.7", features = ["tokio1-native-tls"] }
chrono = "0.4.34"
readonly = "0.2.13"
url = "2.5.7"
lettre = { version = "0.11.19", features = ["tokio1-native-tls"] }
chrono = "0.4.42"
# only should be used inside main.rs, for the binary.
anyhow = "1.0.86"
anyhow = "1.0.100"
arc-swap = "1.7.1"
derive_more = { version = "1.0.0", features = ["display"] }
# not a direct dep. workaround for weird "could not resolve" cargo error
indexmap = "2.7.0"
indexmap = "2.12.0"
blake3 = { version = "1.8.2", optional = true }
rand = { version = "0.9.2", optional = true }
reqwest = { version = "0.12.23", optional = true }
reqwest = { version = "0.12.24", optional = true }
log = {version = "0.4.28", optional = true}
env_logger = {version = "0.11.8", optional = true}
regex = {version = "1.11.3", optional = true }
regex = {version = "1.12.2", optional = true }
futures = {version = "0.3.31", optional = true }
#[dev-dependencies]
test-strategy = "0.4.3"
proptest = "1.7.0"
arbitrary = "1.4.1"
proptest = "1.9.0"
arbitrary = "1.4.2"
proptest-arbitrary-interop = "0.1.0"
[patch.crates-io]
neptune-cash = { git = "https://github.com/Neptune-Crypto/neptune-core.git", branch = "master" }
neptune-cash = { git = "https://github.com/Neptune-Crypto/neptune-core.git", rev = "71f471a526a13ddd41ab4400e1a873471d03ede6" }
[features]
mock = ["dep:blake3", "dep:rand"]
attacks = ["reqwest", "log", "env_logger", "regex", "dep:rand"]
attacks = ["reqwest", "log", "env_logger", "regex", "dep:rand", "futures"]

View File

@ -1,5 +1,5 @@
use futures::future::join_all;
use reqwest::Client;
use tokio::sync::futures;
use tokio::time::Instant;
#[tokio::main]
@ -17,7 +17,7 @@ async fn main() {
}
});
futures::future::join_all(futures).await;
join_all(futures).await;
let elapsed = start.elapsed();
println!(

View File

@ -1,4 +1,3 @@
use env_logger;
use log::LevelFilter;
use log::{error, info, warn};
use rand::seq::IteratorRandom;

View File

@ -4,6 +4,7 @@ use std::str::FromStr;
use neptune_cash::api::export::BlockHeight;
use neptune_cash::prelude::tasm_lib::prelude::Digest;
use neptune_cash::protocol::consensus::block::block_selector::BlockSelector;
use neptune_cash::protocol::consensus::block::block_selector::BlockSelectorLiteral;
use serde::de::Error;
use serde::Deserialize;
use serde::Deserializer;
@ -59,11 +60,11 @@ impl FromStr for AnnouncementSelector {
let (block_selector, index) = match parts.as_slice() {
["tip", index] => {
let index = index.parse::<u64>().map_err(Self::Err::TipIndex)?;
(BlockSelector::Tip, index)
(BlockSelector::Special(BlockSelectorLiteral::Tip), index)
}
["genesis", index] => index
.parse::<u64>()
.map(|i| (BlockSelector::Genesis, i))
.map(|i| (BlockSelector::Special(BlockSelectorLiteral::Genesis), i))
.map_err(Self::Err::GenesisIndex)?,
["height", number, index] => {
let height_as_u64 = number.parse::<u64>().map_err(Self::Err::BlockHeight)?;
@ -129,8 +130,10 @@ impl Display for AnnouncementSelector {
BlockSelector::Height(block_height) => {
write!(f, "height/{}/{}", block_height, self.index)
}
BlockSelector::Genesis => write!(f, "genesis/{}", self.index),
BlockSelector::Tip => write!(f, "tip/{}", self.index),
BlockSelector::Special(BlockSelectorLiteral::Genesis) => {
write!(f, "genesis/{}", self.index)
}
BlockSelector::Special(BlockSelectorLiteral::Tip) => write!(f, "tip/{}", self.index),
}
}
}
@ -189,7 +192,7 @@ mod tests {
// Genesis selector
let index = u64::arbitrary(u)? as usize;
AnnouncementSelector {
block_selector: BlockSelector::Genesis,
block_selector: BlockSelector::Special(BlockSelectorLiteral::Genesis),
index,
}
}
@ -197,7 +200,7 @@ mod tests {
// Tip selector
let index = u64::arbitrary(u)? as usize;
AnnouncementSelector {
block_selector: BlockSelector::Tip,
block_selector: BlockSelector::Special(BlockSelectorLiteral::Tip),
index,
}
}

View File

@ -6,7 +6,9 @@ use clap::Parser;
use neptune_cash::api::export::Network;
use neptune_cash::application::rpc::auth;
use neptune_cash::prelude::twenty_first::tip5::Digest;
use neptune_cash::protocol::consensus::block::block_selector::BlockSelector;
use neptune_cash::protocol::consensus::block::block_selector::{
BlockSelector, BlockSelectorLiteral,
};
use tokio::sync::Mutex;
use crate::model::config::Config;
@ -59,7 +61,7 @@ impl AppState {
.block_digest(
tarpc::context::current(),
rpc_client.token,
BlockSelector::Genesis,
BlockSelector::Special(BlockSelectorLiteral::Genesis),
)
.await
.with_context(|| "Failed calling neptune-core api: block_digest")?

View File

@ -1,5 +1,9 @@
use std::num::ParseIntError;
use std::str::FromStr;
use neptune_cash::api::export::BlockHeight;
use neptune_cash::api::export::Digest;
use neptune_cash::prelude::triton_vm::prelude::BFieldElement;
use neptune_cash::protocol::consensus::block::block_selector::BlockSelector;
use neptune_cash::protocol::consensus::block::block_selector::BlockSelectorParseError;
use serde::de::Error;
@ -29,17 +33,34 @@ impl FromStr for BlockSelectorExtended {
// note: this parses BlockSelector, plus height_or_digest/<value>
fn from_str(s: &str) -> Result<Self, Self::Err> {
match BlockSelector::from_str(s) {
let res = match BlockSelector::from_str(s) {
Ok(bs) => Ok(Self::from(bs)),
Err(e) => {
let parts: Vec<_> = s.split('/').collect();
if parts.len() == 2 && parts[0] == "height_or_digest" {
if parts.len() == 2 {
if parts[0] == "height_or_digest" {
Ok(Self::from(HeightOrDigest::from_str(parts[1])?))
} else if parts[0] == "digest" {
Ok(Self(BlockSelector::Digest(
Digest::try_from_hex(parts[1]).map_err(|tfhde| {
BlockSelectorParseError::InvalidSelector(tfhde.to_string())
})?,
)))
} else if parts[0] == "height" {
Ok(Self(BlockSelector::Height(BlockHeight::new(
BFieldElement::new(parts[1].parse().map_err(|e: ParseIntError| {
BlockSelectorParseError::InvalidSelector(e.to_string())
})?),
))))
} else {
Err(e)
}
} else {
Err(e)
}
}
}
};
res
}
}

View File

@ -34,7 +34,11 @@ impl FromStr for HeightOrDigest {
fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(match s.parse::<u64>() {
Ok(h) => Self::Height(h.into()),
Err(_) => Self::Digest(Digest::try_from_hex(s)?),
Err(_) => {
let digest = Digest::try_from_hex(s)
.map_err(|_| BlockSelectorParseError::InvalidSelector(s.to_string()))?;
Self::Digest(digest)
}
})
}
}

View File

@ -240,8 +240,8 @@ impl AuthenticatedClient {
},
)
})
.collect::<HashMap<_, _>>();
return Ok(Ok(Some(addition_record_indices)));
.collect::<Vec<(_, _)>>();
return Ok(Ok(addition_record_indices));
}
// otherwise, return the original error