diff --git a/packages/examples/kademlia-discovery/src/lib.rs b/packages/examples/kademlia-discovery/src/lib.rs index ba57dd23..72510177 100644 --- a/packages/examples/kademlia-discovery/src/lib.rs +++ b/packages/examples/kademlia-discovery/src/lib.rs @@ -1,6 +1,6 @@ use std::collections::BTreeSet; -use anyhow::Result; +use anyhow::{bail, Result}; use kolme::*; use libp2p::identity::Keypair; @@ -41,6 +41,7 @@ impl MerkleDeserialize for State { #[serde(rename_all = "snake_case")] pub enum KademliaTestMessage { SayHi {}, + RejectMe {}, } // Another keypair for client testing: @@ -94,6 +95,7 @@ impl KolmeApp for KademliaTestApp { ) -> Result<()> { match msg { KademliaTestMessage::SayHi {} => ctx.state_mut().hi_count += 1, + KademliaTestMessage::RejectMe {} => bail!("Avada Kedavra!"), } Ok(()) } @@ -204,7 +206,7 @@ pub async fn client(validator_addr: &str) -> Result<()> { let block = kolme .sign_propose_await_transaction( &SecretKey::random(&mut rand::thread_rng()), - vec![Message::App(KademliaTestMessage::SayHi {})], + vec![Message::App(KademliaTestMessage::RejectMe {})], ) .await?; println!("New block landed: {}", block.height()); diff --git a/packages/kolme/src/gossip.rs b/packages/kolme/src/gossip.rs index 6a7a0cf4..9d413972 100644 --- a/packages/kolme/src/gossip.rs +++ b/packages/kolme/src/gossip.rs @@ -383,7 +383,10 @@ impl Gossip { async fn broadcast_mempool_entries(&self, swarm: &mut Swarm>) { for tx in self.kolme.get_mempool_entries() { let txhash = tx.hash(); - let msg = GossipMessage::BroadcastTx { tx }; + let msg = GossipMessage::BroadcastTx { + tx, + timestamp: jiff::Timestamp::now(), + }; if let Err(e) = msg.publish(self, swarm).await { tracing::error!( "{}: Unable to broadcast transaction {txhash}: {e:?}", @@ -536,7 +539,7 @@ impl Gossip { peers_with_blocks.try_send(report).ok(); } } - GossipMessage::BroadcastTx { tx } => { + GossipMessage::BroadcastTx { tx, timestamp } => { self.kolme.propose_transaction(tx); } } diff --git a/packages/kolme/src/gossip/messages.rs b/packages/kolme/src/gossip/messages.rs index 7aea8202..bc6ae43d 100644 --- a/packages/kolme/src/gossip/messages.rs +++ b/packages/kolme/src/gossip/messages.rs @@ -40,6 +40,7 @@ pub(super) enum GossipMessage { Notification(Notification), BroadcastTx { tx: Arc>, + timestamp: jiff::Timestamp, }, } @@ -55,8 +56,8 @@ impl Display for GossipMessage { GossipMessage::Notification(notification) => { write!(f, "Notification: {notification:?}") } - GossipMessage::BroadcastTx { tx } => { - write!(f, "Broadcast {}", tx.hash()) + GossipMessage::BroadcastTx { tx, timestamp } => { + write!(f, "Broadcast {}, {timestamp}", tx.hash()) } } } @@ -103,6 +104,9 @@ impl GossipMessage { gossip: &Gossip, swarm: &mut Swarm>, ) -> Result<()> { + if let Self::Notification(notification) = &self { + tracing::debug!("Got Notification message: {:?}", notification); + } tracing::debug!( "{}: Publishing message to gossipsub: {self}", gossip.local_display_name