Check for consitency with block header argument hash and calculated hash.
This commit is contained in:
parent
e7c7a9ad89
commit
496edf9109
|
@ -21,7 +21,22 @@ var BlockHeader = function BlockHeader(arg) {
|
||||||
if (!(this instanceof BlockHeader)) {
|
if (!(this instanceof BlockHeader)) {
|
||||||
return new BlockHeader(arg);
|
return new BlockHeader(arg);
|
||||||
}
|
}
|
||||||
_.extend(this, BlockHeader._from(arg));
|
var info = BlockHeader._from(arg);
|
||||||
|
this.version = info.version;
|
||||||
|
this.prevHash = info.prevHash;
|
||||||
|
this.merkleRoot = info.merkleRoot;
|
||||||
|
this.time = info.time;
|
||||||
|
this.timestamp = info.time;
|
||||||
|
this.bits = info.bits;
|
||||||
|
this.nonce = info.nonce;
|
||||||
|
|
||||||
|
if (info.hash) {
|
||||||
|
$.checkState(
|
||||||
|
this.hash === info.hash,
|
||||||
|
'Argument object hash property does not match block hash.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -72,6 +87,7 @@ BlockHeader._fromObject = function _fromObject(data) {
|
||||||
merkleRoot = BufferUtil.reverse(new Buffer(data.merkleRoot, 'hex'));
|
merkleRoot = BufferUtil.reverse(new Buffer(data.merkleRoot, 'hex'));
|
||||||
}
|
}
|
||||||
var info = {
|
var info = {
|
||||||
|
hash: data.hash,
|
||||||
version: data.version,
|
version: data.version,
|
||||||
prevHash: prevHash,
|
prevHash: prevHash,
|
||||||
merkleRoot: merkleRoot,
|
merkleRoot: merkleRoot,
|
||||||
|
|
|
@ -63,6 +63,20 @@ describe('BlockHeader', function() {
|
||||||
should.exist(bh.nonce);
|
should.exist(bh.nonce);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('will throw an error if the argument object hash property doesn\'t match', function() {
|
||||||
|
(function() {
|
||||||
|
var bh = new BlockHeader({
|
||||||
|
hash: '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f',
|
||||||
|
version: version,
|
||||||
|
prevHash: prevblockidbuf,
|
||||||
|
merkleRoot: merklerootbuf,
|
||||||
|
time: time,
|
||||||
|
bits: bits,
|
||||||
|
nonce: nonce
|
||||||
|
});
|
||||||
|
}).should.throw('Argument object hash property does not match block hash.');
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('#fromJSON', function() {
|
describe('#fromJSON', function() {
|
||||||
|
|
Loading…
Reference in New Issue