From d85685b2cac06530f688c0f7636b99c8d3636159 Mon Sep 17 00:00:00 2001 From: Leonid Amirov Date: Tue, 27 May 2025 16:29:53 +0300 Subject: [PATCH 1/2] WIP: kademlia broken transaction --- packages/examples/kademlia-discovery/src/lib.rs | 6 ++++-- packages/kolme/src/gossip/messages.rs | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) 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/messages.rs b/packages/kolme/src/gossip/messages.rs index 7aea8202..9f4eb5d4 100644 --- a/packages/kolme/src/gossip/messages.rs +++ b/packages/kolme/src/gossip/messages.rs @@ -103,6 +103,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 From 8aeb803f1cc1125968ccccfcc4954c17b0c1659b Mon Sep 17 00:00:00 2001 From: Leonid Amirov Date: Tue, 27 May 2025 16:51:55 +0300 Subject: [PATCH 2/2] WIP get timestamp back to transaction --- packages/kolme/src/gossip.rs | 7 +++++-- packages/kolme/src/gossip/messages.rs | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) 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 9f4eb5d4..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()) } } }