diff --git a/crates/era-downloader/src/fs.rs b/crates/era-downloader/src/fs.rs index 19532f01cff..ca3e173986a 100644 --- a/crates/era-downloader/src/fs.rs +++ b/crates/era-downloader/src/fs.rs @@ -43,7 +43,7 @@ pub fn read_dir( .collect::>>()?; let mut checksums = checksums.ok_or_eyre("Missing file `checksums.txt` in the `dir`")?; - entries.sort_by(|(left, _), (right, _)| left.cmp(right)); + entries.sort_by_key(|(left, _)| *left); Ok(stream::iter(entries.into_iter().skip(start_from as usize / BLOCKS_PER_FILE).map( move |(_, path)| { diff --git a/crates/net/discv4/src/lib.rs b/crates/net/discv4/src/lib.rs index 83106cbbe6e..d5e4be52a46 100644 --- a/crates/net/discv4/src/lib.rs +++ b/crates/net/discv4/src/lib.rs @@ -1628,7 +1628,7 @@ impl Discv4Service { .filter(|entry| entry.node.value.is_expired()) .map(|n| n.node.value) .collect::>(); - nodes.sort_by(|a, b| a.last_seen.cmp(&b.last_seen)); + nodes.sort_by_key(|a| a.last_seen); let to_ping = nodes.into_iter().map(|n| n.record).take(MAX_NODES_PING).collect::>(); for node in to_ping { self.try_ping(node, PingReason::RePing) diff --git a/crates/net/network-api/src/block.rs b/crates/net/network-api/src/block.rs index 994c90a09a8..0cd38ee915e 100644 --- a/crates/net/network-api/src/block.rs +++ b/crates/net/network-api/src/block.rs @@ -23,4 +23,12 @@ pub trait EthWireProvider { /// Announce a new block to the network over the eth wire protocol. fn eth_wire_announce_block(&self, block: N::NewBlockPayload, hash: B256); + + /// Announce a new block to a specific peer over the eth wire protocol. + fn eth_wire_announce_block_to_peer( + &self, + peer_id: PeerId, + block: N::NewBlockPayload, + hash: B256, + ); } diff --git a/crates/net/network-api/src/noop.rs b/crates/net/network-api/src/noop.rs index a40f21270a9..3dd2a6dd153 100644 --- a/crates/net/network-api/src/noop.rs +++ b/crates/net/network-api/src/noop.rs @@ -223,6 +223,15 @@ impl EthWireProvider for NoopNetwork { ) { unreachable!() } + + fn eth_wire_announce_block_to_peer( + &self, + _peer_id: PeerId, + _block: ::NewBlockPayload, + _hash: alloy_primitives::B256, + ) { + unreachable!() + } } impl NetworkPeersEvents for NoopNetwork diff --git a/crates/net/network/src/network.rs b/crates/net/network/src/network.rs index 9e01cff13ae..e89ebb52d4d 100644 --- a/crates/net/network/src/network.rs +++ b/crates/net/network/src/network.rs @@ -1,6 +1,10 @@ use crate::{ - config::NetworkMode, message::PeerMessage, protocol::RlpxSubProtocol, - swarm::NetworkConnectionState, transactions::TransactionsHandle, FetchClient, + config::NetworkMode, + message::{NewBlockMessage, PeerMessage}, + protocol::RlpxSubProtocol, + swarm::NetworkConnectionState, + transactions::TransactionsHandle, + FetchClient, }; use alloy_primitives::B256; use enr::Enr; @@ -237,6 +241,16 @@ impl EthWireProvider for NetworkHandle { fn eth_wire_announce_block(&self, block: N::NewBlockPayload, hash: B256) { self.announce_block(block, hash) } + + fn eth_wire_announce_block_to_peer( + &self, + peer_id: PeerId, + block: N::NewBlockPayload, + hash: B256, + ) { + let msg = NewBlockMessage { hash, block: Arc::new(block) }; + self.send_eth_message(peer_id, PeerMessage::NewBlock(msg)) + } } impl NetworkProtocols for NetworkHandle { diff --git a/crates/scroll/alloy/evm/src/block/curie.rs b/crates/scroll/alloy/evm/src/block/curie.rs index 4678d42c409..7e25e143443 100644 --- a/crates/scroll/alloy/evm/src/block/curie.rs +++ b/crates/scroll/alloy/evm/src/block/curie.rs @@ -151,7 +151,7 @@ mod tests { // check oracle storage changeset let mut storage = oracle.storage.into_iter().collect::>(); - storage.sort_by(|(a, _), (b, _)| a.cmp(b)); + storage.sort_by_key(|(a, _)| *a); for (got, expected) in storage.into_iter().zip(CURIE_L1_GAS_PRICE_ORACLE_STORAGE) { assert_eq!(got.0, expected.0); assert_eq!(got.1, StorageSlot { present_value: expected.1, ..Default::default() }); diff --git a/crates/scroll/alloy/evm/src/block/feynman.rs b/crates/scroll/alloy/evm/src/block/feynman.rs index 555338e3cb6..173ec66b8d4 100644 --- a/crates/scroll/alloy/evm/src/block/feynman.rs +++ b/crates/scroll/alloy/evm/src/block/feynman.rs @@ -148,7 +148,7 @@ mod tests { // check oracle storage changeset let mut storage = oracle.storage.into_iter().collect::>(); - storage.sort_by(|(a, _), (b, _)| a.cmp(b)); + storage.sort_by_key(|(a, _)| *a); for (got, expected) in storage.into_iter().zip(FEYNMAN_L1_GAS_PRICE_ORACLE_STORAGE) { assert_eq!(got.0, expected.0); assert_eq!(got.1, StorageSlot { present_value: expected.1, ..Default::default() }); diff --git a/crates/scroll/alloy/evm/src/block/galileo_v2.rs b/crates/scroll/alloy/evm/src/block/galileo_v2.rs index b48dce60ac9..410aacef30c 100644 --- a/crates/scroll/alloy/evm/src/block/galileo_v2.rs +++ b/crates/scroll/alloy/evm/src/block/galileo_v2.rs @@ -148,7 +148,7 @@ mod tests { // check oracle storage changeset let mut storage = oracle.storage.into_iter().collect::>(); - storage.sort_by(|(a, _), (b, _)| a.cmp(b)); + storage.sort_by_key(|(a, _)| *a); for (got, expected) in storage.into_iter().zip(GALILEO_V2_L1_GAS_PRICE_ORACLE_STORAGE) { assert_eq!(got.0, expected.0); assert_eq!(got.1, StorageSlot { present_value: expected.1, ..Default::default() }); diff --git a/crates/scroll/evm/src/execute.rs b/crates/scroll/evm/src/execute.rs index 49fe874c64b..39f29fbeb2a 100644 --- a/crates/scroll/evm/src/execute.rs +++ b/crates/scroll/evm/src/execute.rs @@ -446,7 +446,7 @@ mod tests { // check oracle contract contains storage changeset let mut storage = oracle.storage.into_iter().collect::>(); - storage.sort_by(|(a, _), (b, _)| a.cmp(b)); + storage.sort_by_key(|(a, _)| *a); for (got, expected) in storage.into_iter().zip(CURIE_L1_GAS_PRICE_ORACLE_STORAGE) { assert_eq!(got.0, expected.0); assert_eq!(got.1, StorageSlot { present_value: expected.1, ..Default::default() }); diff --git a/crates/stages/stages/src/stages/hashing_account.rs b/crates/stages/stages/src/stages/hashing_account.rs index cc86db14d38..231838519be 100644 --- a/crates/stages/stages/src/stages/hashing_account.rs +++ b/crates/stages/stages/src/stages/hashing_account.rs @@ -99,7 +99,7 @@ impl AccountHashingStage { // Account State generator let mut account_cursor = provider.tx_ref().cursor_write::()?; - accounts.sort_by(|a, b| a.0.cmp(&b.0)); + accounts.sort_by_key(|a| a.0); for (addr, acc) in &accounts { account_cursor.append(*addr, acc)?; } diff --git a/crates/trie/common/src/updates.rs b/crates/trie/common/src/updates.rs index 441e407db16..0c8a618ad42 100644 --- a/crates/trie/common/src/updates.rs +++ b/crates/trie/common/src/updates.rs @@ -130,7 +130,7 @@ impl TrieUpdates { .collect::>(); account_nodes.extend(self.removed_nodes.drain().map(|path| (path, None))); - account_nodes.sort_unstable_by(|a, b| a.0.cmp(&b.0)); + account_nodes.sort_unstable_by_key(|a| a.0); let storage_tries = self .storage_tries @@ -276,7 +276,7 @@ impl StorageTrieUpdates { .collect::>(); storage_nodes.extend(self.removed_nodes.into_iter().map(|path| (path, None))); - storage_nodes.sort_unstable_by(|a, b| a.0.cmp(&b.0)); + storage_nodes.sort_unstable_by_key(|a| a.0); StorageTrieUpdatesSorted { is_deleted: self.is_deleted, storage_nodes } } diff --git a/crates/trie/trie/src/verify.rs b/crates/trie/trie/src/verify.rs index 96059211458..454aff8ef9a 100644 --- a/crates/trie/trie/src/verify.rs +++ b/crates/trie/trie/src/verify.rs @@ -141,7 +141,7 @@ impl Iterator for StateRootBranchNodesIter { // By sorting by the account we ensure that we continue with the partially processed // trie (the last of the previous run) first. We sort in reverse order because we pop // off of this Vec. - self.storage_tries.sort_unstable_by(|a, b| b.0.cmp(&a.0)); + self.storage_tries.sort_unstable_by_key(|b| std::cmp::Reverse(b.0)); // loop back to the top. } diff --git a/deny.toml b/deny.toml index 82bacf4df6d..9feaf3e619c 100644 --- a/deny.toml +++ b/deny.toml @@ -8,6 +8,11 @@ ignore = [ "RUSTSEC-2024-0384", # https://rustsec.org/advisories/RUSTSEC-2024-0436 paste! is unmaintained "RUSTSEC-2024-0436", + # TODO: remove these once the affected dependencies are updated + # https://rustsec.org/advisories/RUSTSEC-2025-0141 bincode is unmaintained + "RUSTSEC-2025-0141", + # https://rustsec.org/advisories/RUSTSEC-2025-0137 reciprocal_mg10 unsoundness + "RUSTSEC-2025-0137", ] # This section is considered when running `cargo deny check bans`.