diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-10-21 12:16:29 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-10-21 21:14:12 +0800 |
| commit | f4172ac1fb8f910792b3010865e970c9b54d7492 (patch) | |
| tree | 0aa66eac4acc841f6b5da9c0b21aca1e315468f9 | |
| parent | 03709597ead7197b95c19d942020656f6b4eafd4 (diff) | |
fix(bc): IBD
| -rw-r--r-- | src/blocks.rs | 2 | ||||
| -rw-r--r-- | src/network.rs | 20 |
2 files changed, 20 insertions, 2 deletions
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<Block>, + pub blocks: Vec<Block>, } 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 |
