chore: add example for sending tx hashes (#14094)

This commit is contained in:
Matthias Seitz
2025-01-30 11:44:28 +01:00
committed by GitHub
parent 97278abe01
commit 277e9f6e1e
2 changed files with 23 additions and 9 deletions

View File

@ -171,3 +171,6 @@ pub use transactions::{FilterAnnouncement, MessageFilter, ValidateTx68};
/// re-export p2p interfaces /// re-export p2p interfaces
pub use reth_network_p2p as p2p; pub use reth_network_p2p as p2p;
/// re-export types crate
pub use reth_eth_wire_types as types;

View File

@ -14,8 +14,9 @@ use futures::StreamExt;
use reth_chainspec::DEV; use reth_chainspec::DEV;
use reth_network::{ use reth_network::{
config::rng_secret_key, eth_requests::IncomingEthRequest, p2p::HeadersClient, config::rng_secret_key, eth_requests::IncomingEthRequest, p2p::HeadersClient,
transactions::NetworkTransactionEvent, BlockDownloaderProvider, FetchClient, NetworkConfig, transactions::NetworkTransactionEvent, types::NewPooledTransactionHashes68,
NetworkEventListenerProvider, NetworkHandle, NetworkInfo, NetworkManager, Peers, BlockDownloaderProvider, FetchClient, NetworkConfig, NetworkEventListenerProvider,
NetworkHandle, NetworkInfo, NetworkManager, Peers,
}; };
#[tokio::main] #[tokio::main]
@ -64,10 +65,10 @@ async fn main() -> eyre::Result<()> {
// receive incoming eth requests and transaction messages // receive incoming eth requests and transaction messages
tokio::select! { tokio::select! {
eth_request = requests_rx.recv() => { eth_request = requests_rx.recv() => {
let Some(eth_request) = eth_request else {break}; let Some(eth_request) = eth_request else {break};
match eth_request { match eth_request {
IncomingEthRequest::GetBlockHeaders { peer_id, request, response } => { 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(); response.send(Ok(vec![DEV.genesis_header().clone()].into())).unwrap();
} }
IncomingEthRequest::GetBlockBodies { .. } => {} IncomingEthRequest::GetBlockBodies { .. } => {}
@ -78,11 +79,13 @@ async fn main() -> eyre::Result<()> {
transaction_message = transactions_rx.recv() => { transaction_message = transactions_rx.recv() => {
let Some(transaction_message) = transaction_message else {break}; let Some(transaction_message) = transaction_message else {break};
match transaction_message { match transaction_message {
NetworkTransactionEvent::IncomingTransactions{ .. } => {} NetworkTransactionEvent::IncomingTransactions { .. } => {}
NetworkTransactionEvent::IncomingPooledTransactionHashes{ .. } => {} NetworkTransactionEvent::IncomingPooledTransactionHashes { peer_id, msg } => {
NetworkTransactionEvent::GetPooledTransactions{ .. } => {} println!("Received incoming tx hashes broadcast: {peer_id:?}, {msg:?}");
}
NetworkTransactionEvent::GetPooledTransactions { .. } => {}
NetworkTransactionEvent::GetTransactionsHandle(_) => {} NetworkTransactionEvent::GetTransactionsHandle(_) => {}
} }
} }
} }
} }
@ -111,5 +114,13 @@ async fn run_peer(handle: NetworkHandle) -> eyre::Result<()> {
let header = client.get_header(0.into()).await.unwrap(); let header = client.get_header(0.into()).await.unwrap();
println!("Got header: {:?}", header); 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(()) Ok(())
} }