From c1340223de5da49951b3b46dded96a568e02c99a Mon Sep 17 00:00:00 2001 From: Ignotus Peverell Date: Tue, 20 Dec 2016 17:32:19 -0800 Subject: [PATCH] Minor API change to PoW verify, to use the size provided by the block header by default. --- core/src/core/transaction.rs | 5 ++--- core/src/genesis.rs | 4 ++-- core/src/pow/mod.rs | 13 ++++--------- core/src/ser.rs | 3 ++- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/core/src/core/transaction.rs b/core/src/core/transaction.rs index c938107b7..5b24c6f0f 100644 --- a/core/src/core/transaction.rs +++ b/core/src/core/transaction.rs @@ -51,7 +51,7 @@ impl Writeable for TxProof { impl Readable for TxProof { fn read(reader: &mut Reader) -> Result { - let remainder = try!(Commitment::read (reader)); + let remainder = try!(Commitment::read(reader)); let (sig, fee) = ser_multiread!(reader, read_vec, read_u64); Ok(TxProof { remainder: remainder, @@ -258,8 +258,7 @@ impl Writeable for Input { /// an Input from a binary stream. impl Readable for Input { fn read(reader: &mut Reader) -> Result { - Hash::read(reader) - .map(|h| Input::BareInput { output: h }) + Hash::read(reader).map(|h| Input::BareInput { output: h }) } } diff --git a/core/src/genesis.rs b/core/src/genesis.rs index 01a95714c..a43399d6d 100644 --- a/core/src/genesis.rs +++ b/core/src/genesis.rs @@ -35,8 +35,8 @@ pub fn genesis() -> core::Block { }, cuckoo_len: DEFAULT_SIZESHIFT, target: MAX_TARGET, - utxo_merkle: [].hash(), - tx_merkle: [].hash(), + utxo_merkle: [].hash(), + tx_merkle: [].hash(), nonce: 0, pow: core::Proof::zero(), // TODO get actual PoW solution }, diff --git a/core/src/pow/mod.rs b/core/src/pow/mod.rs index bd99bbcbc..5867b064d 100644 --- a/core/src/pow/mod.rs +++ b/core/src/pow/mod.rs @@ -92,20 +92,14 @@ pub fn verify(b: &Block) -> bool { verify_size(b, b.header.cuckoo_len as u32) } -/// Same as default verify function but uses the much easier Cuckoo20 (mostly -/// for tests). -pub fn verify20(b: &Block) -> bool { - verify_size(b, 20) -} - -pub fn verify_size(b: &Block, sizeshift: u32) -> bool { +pub fn verify_size(b: &Block, cuckoo_sz: u32) -> bool { let hash = PowHeader::from_block(b).hash(); // make sure the hash is smaller than our target before going into more // expensive validation if b.header.target < b.header.pow.to_target() { return false; } - Cuckoo::new(hash.to_slice(), sizeshift).verify(b.header.pow, EASINESS as u64) + Cuckoo::new(hash.to_slice(), cuckoo_sz).verify(b.header.pow, EASINESS as u64) } /// Runs a naive single-threaded proof of work computation over the provided @@ -165,6 +159,7 @@ mod test { assert!(proof.to_target() < MAX_TARGET); b.header.pow = proof; b.header.nonce = nonce; - assert!(verify20(&b)); + b.header.cuckoo_len = 20; + assert!(verify(&b)); } } diff --git a/core/src/ser.rs b/core/src/ser.rs index 3433137be..2c0be6017 100644 --- a/core/src/ser.rs +++ b/core/src/ser.rs @@ -237,7 +237,8 @@ impl<'a> Reader for BinReader<'a> { let len = try!(self.read_u64()); self.read_fixed_bytes(len as usize) } - /// Read limited variable size vector from the underlying Read. Expects a usize + /// Read limited variable size vector from the underlying Read. Expects a + /// usize fn read_limited_vec(&mut self, max: usize) -> Result, Error> { let len = cmp::min(max, try!(self.read_u64()) as usize); self.read_fixed_bytes(len as usize)