From 0543b6974a9976e4b56589875d414a8d59dcaaf8 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Tue, 3 Jun 2025 18:34:19 +0200 Subject: [PATCH] Add chain_tip to handshake message --- src/main.rs | 9 ++++++++- src/message.rs | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index f46a425..bf1307b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,7 +7,7 @@ use std::{ net::SocketAddr, path::PathBuf, str::FromStr, - sync::{Mutex, MutexGuard, OnceLock}, + sync::{atomic::AtomicU64, Mutex, MutexGuard, OnceLock}, }; use bitcoincore_rpc::{ @@ -77,6 +77,8 @@ pub(crate) static PEERMAP: OnceLock = OnceLock::new(); pub(crate) static DAEMON: OnceLock>> = OnceLock::new(); +static CHAIN_TIP: AtomicU64 = AtomicU64::new(0); + pub static FREEZED_UTXOS: OnceLock>> = OnceLock::new(); pub fn lock_freezed_utxos() -> Result>, Error> { @@ -197,11 +199,13 @@ async fn handle_connection( let processes = lock_processes().unwrap().clone(); let members = lock_members().unwrap().clone(); + let current_tip = CHAIN_TIP.load(std::sync::atomic::Ordering::SeqCst); let init_msg = HandshakeMessage::new( our_sp_address.to_string(), OutPointMemberMap(members), OutPointProcessMap(processes), + current_tip, ); if let Err(e) = broadcast_message( @@ -471,6 +475,9 @@ async fn main() -> Result<()> { scan_blocks(current_tip - last_scan, &config.electrum_url)?; } + Set CHAIN_TIP + CHAIN_TIP.store(current_tip as u64, std::sync::atomic::Ordering::SeqCst); + // Subscribe to Bitcoin Core tokio::spawn(handle_zmq(config.zmq_url, config.electrum_url)); diff --git a/src/message.rs b/src/message.rs index 8737ee8..a8bf4e3 100644 --- a/src/message.rs +++ b/src/message.rs @@ -226,6 +226,7 @@ pub fn process_message(raw_msg: &str, addr: SocketAddr) { AnkFlag::Cipher => process_cipher_message(ank_msg, addr), AnkFlag::Commit => process_commit_message(ank_msg, addr), AnkFlag::Unknown => process_unknown_message(ank_msg, addr), + AnkFlag::Sync => todo!(), AnkFlag::Handshake => log::debug!("Received init message from {}", addr), }, Err(_) => log::error!("Failed to parse network message"),