summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/blocks.rs16
-rw-r--r--src/network.rs2
2 files changed, 6 insertions, 12 deletions
diff --git a/src/blocks.rs b/src/blocks.rs
index 758fe71..288e754 100644
--- a/src/blocks.rs
+++ b/src/blocks.rs
@@ -42,9 +42,9 @@ impl Block {
unreachable!()
}
- pub fn verify_pow(&mut self, pow: u64) -> bool {
+ pub fn verify_pow(&mut self) -> bool {
let mut hasher = DefaultHasher::new();
- (&self.prev_hash, &self.trans, pow).hash(&mut hasher);
+ self.hash(&mut hasher);
hasher
.finish()
.to_string()
@@ -66,15 +66,9 @@ impl Hash for Block {
.hash(state);
self.trans
.hash(state);
- if self
- .pow
- .is_none()
- {
- Self::calc_pow(self).hash(state);
- } else {
- self.pow
- .hash(state);
- }
+ self.pow
+ .expect("Cannot hash whole block with no PoW")
+ .hash(state);
}
}
diff --git a/src/network.rs b/src/network.rs
index f1ae17f..fd0362c 100644
--- a/src/network.rs
+++ b/src/network.rs
@@ -159,7 +159,7 @@ impl Peer {
match req {
Request::Block(mut block) => match block.pow {
Some(pow) => {
- if !block.verify_pow(pow) {
+ if !block.verify_pow() {
eprintln!("Rejecting remote block, POW verification failed"); // TODO: log remote IP
return;
}