mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
chore: add example for sending tx hashes (#14094)
This commit is contained in:
@ -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;
|
||||||
|
|||||||
@ -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(())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user