From fbe47cbc225fbcdf3356742c1a770f294e8eaaa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Oliveira?= Date: Wed, 18 Feb 2026 16:11:08 +0000 Subject: [PATCH] update gossipsub dependencies --- Cargo.lock | 22 ++++++++--------- protocols/gossipsub/Cargo.toml | 14 +++++------ protocols/gossipsub/src/behaviour.rs | 15 +++++------- .../gossipsub/src/behaviour/tests/mod.rs | 8 ++++--- protocols/gossipsub/src/rpc_proto.rs | 24 +++++++++---------- protocols/gossipsub/tests/smoke.rs | 2 +- 6 files changed, 42 insertions(+), 43 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 599c9b367cb..fae79a65984 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -216,9 +216,9 @@ checksum = "155a5a185e42c6b77ac7b88a15143d930a9e9727a5b7b77eed417404ab15c247" [[package]] name = "async-channel" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -560,9 +560,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" dependencies = [ "serde", ] @@ -2650,7 +2650,7 @@ dependencies = [ "quick-protobuf", "quick-protobuf-codec", "quickcheck-ext", - "rand 0.8.5", + "rand 0.9.0", "regex", "serde", "sha2", @@ -4529,9 +4529,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -4541,9 +4541,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -5075,9 +5075,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", diff --git a/protocols/gossipsub/Cargo.toml b/protocols/gossipsub/Cargo.toml index 911b453f477..bde75e875ba 100644 --- a/protocols/gossipsub/Cargo.toml +++ b/protocols/gossipsub/Cargo.toml @@ -15,15 +15,15 @@ wasm-bindgen = ["getrandom/js", "futures-timer/wasm-bindgen"] metrics = ["prometheus-client"] [dependencies] -async-channel = "2.3.1" +async-channel = "2.5.0" asynchronous-codec = { workspace = true } base64 = "0.22.1" byteorder = "1.5.0" -bytes = "1.6" -either = "1.11" +bytes = "1.11" +either = "1.15" fnv = "1.0.7" futures = { workspace = true } -futures-timer = "3.0.2" +futures-timer = "3.0.3" getrandom = { workspace = true } hashlink = { workspace = true } hex_fmt = "0.3.0" @@ -33,10 +33,10 @@ libp2p-identity = { workspace = true, features = ["rand"] } libp2p-swarm = { workspace = true } quick-protobuf = "0.8" quick-protobuf-codec = { workspace = true } -rand = "0.8" -regex = "1.10.5" +rand = "0.9" +regex = "1.12.3" serde = { version = "1", optional = true, features = ["derive"] } -sha2 = "0.10.8" +sha2 = "0.10.9" tracing = { workspace = true } # Metrics dependencies diff --git a/protocols/gossipsub/src/behaviour.rs b/protocols/gossipsub/src/behaviour.rs index f0aebef3027..cccba30b1f0 100644 --- a/protocols/gossipsub/src/behaviour.rs +++ b/protocols/gossipsub/src/behaviour.rs @@ -48,7 +48,7 @@ use libp2p_swarm::{ #[cfg(feature = "metrics")] use prometheus_client::registry::Registry; use quick_protobuf::{MessageWrite, Writer}; -use rand::{seq::SliceRandom, thread_rng}; +use rand::{rng, seq::SliceRandom}; use web_time::{Instant, SystemTime}; #[cfg(feature = "metrics")] @@ -1274,8 +1274,7 @@ where // Ask in random order let mut iwant_ids_vec: Vec<_> = iwant_ids.into_iter().collect(); - let mut rng = thread_rng(); - iwant_ids_vec.partial_shuffle(&mut rng, iask); + iwant_ids_vec.partial_shuffle(&mut rng(), iask); iwant_ids_vec.truncate(iask); *iasked += iask; @@ -1622,8 +1621,7 @@ where px.retain(|p| p.peer_id.is_some()); if px.len() > n { // only use at most prune_peers many random peers - let mut rng = thread_rng(); - px.partial_shuffle(&mut rng, n); + px.partial_shuffle(&mut rng(), n); px = px.into_iter().take(n).collect(); } @@ -2222,7 +2220,7 @@ where let excess_peer_no = peers.len() - mesh_n; // shuffle the peers and then sort by score ascending beginning with the worst - let mut rng = thread_rng(); + let mut rng = rng(); let mut shuffled = peers.iter().copied().collect::>(); shuffled.shuffle(&mut rng); shuffled.sort_by(|p1, p2| { @@ -2541,7 +2539,7 @@ where /// Emits gossip - Send IHAVE messages to a random set of gossip peers. This is applied to mesh /// and fanout peers fn emit_gossip(&mut self) { - let mut rng = thread_rng(); + let mut rng = rng(); let mut messages = Vec::new(); for (topic_hash, peers) in self.mesh.iter().chain(self.fanout.iter()) { let mut message_ids = self.mcache.get_gossip_message_ids(topic_hash); @@ -3509,8 +3507,7 @@ fn get_random_peers_dynamic( } // we have more peers than needed, shuffle them and return n of them - let mut rng = thread_rng(); - gossip_peers.partial_shuffle(&mut rng, n); + gossip_peers.partial_shuffle(&mut rng(), n); tracing::debug!("RANDOM PEERS: Got {:?} peers", n); diff --git a/protocols/gossipsub/src/behaviour/tests/mod.rs b/protocols/gossipsub/src/behaviour/tests/mod.rs index 83ba4e0166d..e172b5235e1 100644 --- a/protocols/gossipsub/src/behaviour/tests/mod.rs +++ b/protocols/gossipsub/src/behaviour/tests/mod.rs @@ -599,13 +599,15 @@ pub(super) fn flush_events( /// * `seq` - Mutable sequence counter (incremented each call) /// * `topics` - Pool of topics to randomly select from pub(super) fn random_message(seq: &mut u64, topics: &[TopicHash]) -> RawMessage { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); *seq += 1; RawMessage { source: Some(PeerId::random()), - data: (0..rng.gen_range(10..10024)).map(|_| rng.gen()).collect(), + data: (0..rng.random_range(10..10024)) + .map(|_| rng.random()) + .collect(), sequence_number: Some(*seq), - topic: topics[rng.gen_range(0..topics.len())].clone(), + topic: topics[rng.random_range(0..topics.len())].clone(), signature: None, key: None, validated: true, diff --git a/protocols/gossipsub/src/rpc_proto.rs b/protocols/gossipsub/src/rpc_proto.rs index d85fe44133c..8011c2a3289 100644 --- a/protocols/gossipsub/src/rpc_proto.rs +++ b/protocols/gossipsub/src/rpc_proto.rs @@ -39,27 +39,27 @@ mod test { let new_message1 = super::proto::Message { from: Some(PeerId::random().to_bytes()), - data: Some(rand::thread_rng().gen::<[u8; 32]>().to_vec()), - seqno: Some(rand::thread_rng().gen::<[u8; 8]>().to_vec()), + data: Some(rand::rng().random::<[u8; 32]>().to_vec()), + seqno: Some(rand::rng().random::<[u8; 8]>().to_vec()), topic: topic1.clone().into_string(), - signature: Some(rand::thread_rng().gen::<[u8; 32]>().to_vec()), - key: Some(rand::thread_rng().gen::<[u8; 32]>().to_vec()), + signature: Some(rand::rng().random::<[u8; 32]>().to_vec()), + key: Some(rand::rng().random::<[u8; 32]>().to_vec()), }; let old_message1 = compat::pb::Message { from: Some(PeerId::random().to_bytes()), - data: Some(rand::thread_rng().gen::<[u8; 32]>().to_vec()), - seqno: Some(rand::thread_rng().gen::<[u8; 8]>().to_vec()), + data: Some(rand::rng().random::<[u8; 32]>().to_vec()), + seqno: Some(rand::rng().random::<[u8; 8]>().to_vec()), topic_ids: vec![topic1.clone().into_string()], - signature: Some(rand::thread_rng().gen::<[u8; 32]>().to_vec()), - key: Some(rand::thread_rng().gen::<[u8; 32]>().to_vec()), + signature: Some(rand::rng().random::<[u8; 32]>().to_vec()), + key: Some(rand::rng().random::<[u8; 32]>().to_vec()), }; let old_message2 = compat::pb::Message { from: Some(PeerId::random().to_bytes()), - data: Some(rand::thread_rng().gen::<[u8; 32]>().to_vec()), - seqno: Some(rand::thread_rng().gen::<[u8; 8]>().to_vec()), + data: Some(rand::rng().random::<[u8; 32]>().to_vec()), + seqno: Some(rand::rng().random::<[u8; 8]>().to_vec()), topic_ids: vec![topic1.clone().into_string(), topic2.clone().into_string()], - signature: Some(rand::thread_rng().gen::<[u8; 32]>().to_vec()), - key: Some(rand::thread_rng().gen::<[u8; 32]>().to_vec()), + signature: Some(rand::rng().random::<[u8; 32]>().to_vec()), + key: Some(rand::rng().random::<[u8; 32]>().to_vec()), }; let mut new_message1b = Vec::with_capacity(new_message1.get_size()); diff --git a/protocols/gossipsub/tests/smoke.rs b/protocols/gossipsub/tests/smoke.rs index d94297808ba..c4cfcff7615 100644 --- a/protocols/gossipsub/tests/smoke.rs +++ b/protocols/gossipsub/tests/smoke.rs @@ -29,7 +29,7 @@ use libp2p_gossipsub::{MessageAuthenticity, ValidationMode}; use libp2p_swarm::Swarm; use libp2p_swarm_test::SwarmExt as _; use quickcheck::{QuickCheck, TestResult}; -use rand::{seq::SliceRandom, SeedableRng}; +use rand::{seq::IndexedMutRandom, SeedableRng}; use tokio::{runtime::Runtime, time}; use tracing_subscriber::EnvFilter;