From 277e9f6e1ea1ca0a50774bb1bafb3a682d72b743 Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Thu, 30 Jan 2025 11:44:28 +0100 Subject: [PATCH] chore: add example for sending tx hashes (#14094) --- crates/net/network/src/lib.rs | 3 +++ examples/network-proxy/src/main.rs | 29 ++++++++++++++++++++--------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/crates/net/network/src/lib.rs b/crates/net/network/src/lib.rs index cb04022d2..f742bedc6 100644 --- a/crates/net/network/src/lib.rs +++ b/crates/net/network/src/lib.rs @@ -171,3 +171,6 @@ pub use transactions::{FilterAnnouncement, MessageFilter, ValidateTx68}; /// re-export p2p interfaces pub use reth_network_p2p as p2p; + +/// re-export types crate +pub use reth_eth_wire_types as types; diff --git a/examples/network-proxy/src/main.rs b/examples/network-proxy/src/main.rs index f875b7f78..edd6fe625 100644 --- a/examples/network-proxy/src/main.rs +++ b/examples/network-proxy/src/main.rs @@ -14,8 +14,9 @@ use futures::StreamExt; use reth_chainspec::DEV; use reth_network::{ config::rng_secret_key, eth_requests::IncomingEthRequest, p2p::HeadersClient, - transactions::NetworkTransactionEvent, BlockDownloaderProvider, FetchClient, NetworkConfig, - NetworkEventListenerProvider, NetworkHandle, NetworkInfo, NetworkManager, Peers, + transactions::NetworkTransactionEvent, types::NewPooledTransactionHashes68, + BlockDownloaderProvider, FetchClient, NetworkConfig, NetworkEventListenerProvider, + NetworkHandle, NetworkInfo, NetworkManager, Peers, }; #[tokio::main] @@ -64,10 +65,10 @@ async fn main() -> eyre::Result<()> { // receive incoming eth requests and transaction messages tokio::select! { eth_request = requests_rx.recv() => { - let Some(eth_request) = eth_request else {break}; - match eth_request { + let Some(eth_request) = eth_request else {break}; + match eth_request { IncomingEthRequest::GetBlockHeaders { peer_id, request, response } => { - println!("Received block headers request: {:?}, {:?}", peer_id, request); + println!("Received block headers request: {peer_id:?}, {request:?}"); response.send(Ok(vec![DEV.genesis_header().clone()].into())).unwrap(); } IncomingEthRequest::GetBlockBodies { .. } => {} @@ -78,11 +79,13 @@ async fn main() -> eyre::Result<()> { transaction_message = transactions_rx.recv() => { let Some(transaction_message) = transaction_message else {break}; match transaction_message { - NetworkTransactionEvent::IncomingTransactions{ .. } => {} - NetworkTransactionEvent::IncomingPooledTransactionHashes{ .. } => {} - NetworkTransactionEvent::GetPooledTransactions{ .. } => {} + NetworkTransactionEvent::IncomingTransactions { .. } => {} + NetworkTransactionEvent::IncomingPooledTransactionHashes { peer_id, msg } => { + println!("Received incoming tx hashes broadcast: {peer_id:?}, {msg:?}"); + } + NetworkTransactionEvent::GetPooledTransactions { .. } => {} NetworkTransactionEvent::GetTransactionsHandle(_) => {} - } + } } } } @@ -111,5 +114,13 @@ async fn run_peer(handle: NetworkHandle) -> eyre::Result<()> { let header = client.get_header(0.into()).await.unwrap(); println!("Got header: {:?}", header); + // send a (bogus) hashes message + let hashes = NewPooledTransactionHashes68 { + types: vec![1], + sizes: vec![2], + hashes: vec![Default::default()], + }; + peer.send_transactions_hashes(*handle.peer_id(), hashes.into()); + Ok(()) }