From f4172ac1fb8f910792b3010865e970c9b54d7492 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Tue, 21 Oct 2025 12:16:29 +0800 Subject: fix(bc): IBD --- src/blocks.rs | 2 +- src/network.rs | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/blocks.rs b/src/blocks.rs index 84f6c92..1fa8486 100644 --- a/src/blocks.rs +++ b/src/blocks.rs @@ -74,7 +74,7 @@ impl Hash for Block { #[derive(Default, Deserialize, Serialize, Clone, PartialEq)] pub struct BlockChain { - blocks: Vec, + pub blocks: Vec, } impl BlockChain { diff --git a/src/network.rs b/src/network.rs index 0a49ded..f9b6355 100644 --- a/src/network.rs +++ b/src/network.rs @@ -231,7 +231,25 @@ impl Peer { let parent = parent .lock() .await; - if *parent + let mut self_bc = parent + .blockchain + .lock() + .await; + if self_bc.is_empty() + || (self_bc + .blocks + .iter() + .fold(true, |i, b| { + if i { + b.pow + .is_none() + } else { + false + } + })) + { + *self_bc = bc; + } else if *parent .blockchain .lock() .await -- cgit v1.2.3