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] [dependencies]
axum = { version = "0.7.9", features = ["macros"] } axum = { version = "0.7.9", features = ["macros"] }
serde = { version = "1.0.197", features = ["derive"] } serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.115" serde_json = "1.0.145"
tokio = { version = "1.37.0", features = ["full", "tracing"] } tokio = { version = "1.48.0", features = ["full", "tracing"] }
tracing = "0.1" tracing = "0.1"
tracing-subscriber = "0.3" tracing-subscriber = "0.3"
@ -31,41 +31,41 @@ tarpc = { version = "^0.34", features = [
"serde-transport-json", "serde-transport-json",
"tcp", "tcp",
] } ] }
clap = "4.5.4" clap = "4.5.50"
thiserror = "1.0.59" thiserror = "1.0.69"
boilerplate = { version = "1.0.0" } boilerplate = { version = "1.0.1" }
html-escaper = "0.2.0" html-escaper = "0.2.0"
tower-http = { version = "0.5.2", features = ["fs"] } tower-http = { version = "0.5.2", features = ["fs"] }
readonly = "0.2.12" readonly = "0.2.13"
url = "2.5.0" url = "2.5.7"
lettre = { version = "0.11.7", features = ["tokio1-native-tls"] } lettre = { version = "0.11.19", features = ["tokio1-native-tls"] }
chrono = "0.4.34" chrono = "0.4.42"
# only should be used inside main.rs, for the binary. # only should be used inside main.rs, for the binary.
anyhow = "1.0.86" anyhow = "1.0.100"
arc-swap = "1.7.1" arc-swap = "1.7.1"
derive_more = { version = "1.0.0", features = ["display"] } derive_more = { version = "1.0.0", features = ["display"] }
# not a direct dep. workaround for weird "could not resolve" cargo error # 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 } blake3 = { version = "1.8.2", optional = true }
rand = { version = "0.9.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} log = {version = "0.4.28", optional = true}
env_logger = {version = "0.11.8", 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] #[dev-dependencies]
test-strategy = "0.4.3" test-strategy = "0.4.3"
proptest = "1.7.0" proptest = "1.9.0"
arbitrary = "1.4.1" arbitrary = "1.4.2"
proptest-arbitrary-interop = "0.1.0" proptest-arbitrary-interop = "0.1.0"
[patch.crates-io] [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] [features]
mock = ["dep:blake3", "dep:rand"] 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 reqwest::Client;
use tokio::sync::futures;
use tokio::time::Instant; use tokio::time::Instant;
#[tokio::main] #[tokio::main]
@ -17,7 +17,7 @@ async fn main() {
} }
}); });
futures::future::join_all(futures).await; join_all(futures).await;
let elapsed = start.elapsed(); let elapsed = start.elapsed();
println!( println!(

View File

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

View File

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

View File

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

View File

@ -1,5 +1,9 @@
use std::num::ParseIntError;
use std::str::FromStr; 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::BlockSelector;
use neptune_cash::protocol::consensus::block::block_selector::BlockSelectorParseError; use neptune_cash::protocol::consensus::block::block_selector::BlockSelectorParseError;
use serde::de::Error; use serde::de::Error;
@ -29,17 +33,34 @@ impl FromStr for BlockSelectorExtended {
// note: this parses BlockSelector, plus height_or_digest/<value> // note: this parses BlockSelector, plus height_or_digest/<value>
fn from_str(s: &str) -> Result<Self, Self::Err> { 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)), Ok(bs) => Ok(Self::from(bs)),
Err(e) => { Err(e) => {
let parts: Vec<_> = s.split('/').collect(); let parts: Vec<_> = s.split('/').collect();
if parts.len() == 2 && parts[0] == "height_or_digest" { if parts.len() == 2 {
Ok(Self::from(HeightOrDigest::from_str(parts[1])?)) 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 { } else {
Err(e) Err(e)
} }
} }
} };
res
} }
} }

View File

@ -34,7 +34,11 @@ impl FromStr for HeightOrDigest {
fn from_str(s: &str) -> Result<Self, Self::Err> { fn from_str(s: &str) -> Result<Self, Self::Err> {
Ok(match s.parse::<u64>() { Ok(match s.parse::<u64>() {
Ok(h) => Self::Height(h.into()), 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<_, _>>(); .collect::<Vec<(_, _)>>();
return Ok(Ok(Some(addition_record_indices))); return Ok(Ok(addition_record_indices));
} }
// otherwise, return the original error // otherwise, return the original error