mirror of
https://github.com/mimblewimble/grin.git
synced 2025-02-08 04:11:08 +03:00
Minor API change to PoW verify, to use the size provided by the block header by default.
This commit is contained in:
parent
0702ab1829
commit
c1340223de
4 changed files with 10 additions and 15 deletions
|
@ -258,8 +258,7 @@ impl Writeable for Input {
|
||||||
/// an Input from a binary stream.
|
/// an Input from a binary stream.
|
||||||
impl Readable<Input> for Input {
|
impl Readable<Input> for Input {
|
||||||
fn read(reader: &mut Reader) -> Result<Input, ser::Error> {
|
fn read(reader: &mut Reader) -> Result<Input, ser::Error> {
|
||||||
Hash::read(reader)
|
Hash::read(reader).map(|h| Input::BareInput { output: h })
|
||||||
.map(|h| Input::BareInput { output: h })
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -92,20 +92,14 @@ pub fn verify(b: &Block) -> bool {
|
||||||
verify_size(b, b.header.cuckoo_len as u32)
|
verify_size(b, b.header.cuckoo_len as u32)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Same as default verify function but uses the much easier Cuckoo20 (mostly
|
pub fn verify_size(b: &Block, cuckoo_sz: u32) -> bool {
|
||||||
/// for tests).
|
|
||||||
pub fn verify20(b: &Block) -> bool {
|
|
||||||
verify_size(b, 20)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn verify_size(b: &Block, sizeshift: u32) -> bool {
|
|
||||||
let hash = PowHeader::from_block(b).hash();
|
let hash = PowHeader::from_block(b).hash();
|
||||||
// make sure the hash is smaller than our target before going into more
|
// make sure the hash is smaller than our target before going into more
|
||||||
// expensive validation
|
// expensive validation
|
||||||
if b.header.target < b.header.pow.to_target() {
|
if b.header.target < b.header.pow.to_target() {
|
||||||
return false;
|
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
|
/// Runs a naive single-threaded proof of work computation over the provided
|
||||||
|
@ -165,6 +159,7 @@ mod test {
|
||||||
assert!(proof.to_target() < MAX_TARGET);
|
assert!(proof.to_target() < MAX_TARGET);
|
||||||
b.header.pow = proof;
|
b.header.pow = proof;
|
||||||
b.header.nonce = nonce;
|
b.header.nonce = nonce;
|
||||||
assert!(verify20(&b));
|
b.header.cuckoo_len = 20;
|
||||||
|
assert!(verify(&b));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -237,7 +237,8 @@ impl<'a> Reader for BinReader<'a> {
|
||||||
let len = try!(self.read_u64());
|
let len = try!(self.read_u64());
|
||||||
self.read_fixed_bytes(len as usize)
|
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<Vec<u8>, Error> {
|
fn read_limited_vec(&mut self, max: usize) -> Result<Vec<u8>, Error> {
|
||||||
let len = cmp::min(max, try!(self.read_u64()) as usize);
|
let len = cmp::min(max, try!(self.read_u64()) as usize);
|
||||||
self.read_fixed_bytes(len as usize)
|
self.read_fixed_bytes(len as usize)
|
||||||
|
|
Loading…
Reference in a new issue