summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/blocks.rs2
-rw-r--r--src/network.rs20
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