diff options
Diffstat (limited to 'src')
| -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 |
