From 84b41b9a6619094383dbacfbdaa8c0f3e2819113 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Tue, 21 Oct 2025 20:53:28 +0800 Subject: fix(block): save actual PoW nonce instead of hashed --- src/blocks.rs | 10 +++++----- src/network.rs | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/blocks.rs b/src/blocks.rs index 17e6d4f..67af3f1 100644 --- a/src/blocks.rs +++ b/src/blocks.rs @@ -17,7 +17,7 @@ pub trait CryptoDigest { pub struct Block { pub prev_hash: Vec, pub trans: Transaction, - pub pow: Vec, + pub pow: Option, } impl Block { @@ -27,7 +27,7 @@ impl Block { .unwrap_or(&[]) .to_vec(), // special blocks trans, - pow: Vec::default(), + pow: None, } } @@ -45,14 +45,14 @@ impl Block { }) } - fn calc_pow(&self) -> Vec { + fn calc_pow(&self) -> u64 { for i in 0.. { // reset every loop let mut hasher = Sha256::new(); Digest::update(&mut hasher, bincode::encode_to_vec((&self.prev_hash, &self.trans, i), bincode::config::standard()).unwrap()); let hashed = hasher.finalize(); if Self::pref_zeros(&hashed).is_ok() { - return hashed.to_vec(); + return i; } } unreachable!() @@ -65,7 +65,7 @@ impl Block { } pub fn calc_set_pow(&mut self) { - self.pow = self.calc_pow(); + self.pow = Some(self.calc_pow()); } } diff --git a/src/network.rs b/src/network.rs index c18ae07..197c997 100644 --- a/src/network.rs +++ b/src/network.rs @@ -225,7 +225,7 @@ impl Peer { Request::Block(mut block) => { if !block .pow - .is_empty() + .is_none() { if !block.verify_pow() { eprintln!("Rejecting remote block, POW verification failed"); // TODO: log remote IP @@ -274,7 +274,7 @@ impl Peer { .fold(true, |i, b| { if i { b.pow - .is_empty() + .is_none() } else { false } -- cgit v1.2.3