parent
aa46fb2df2
commit
f8b4750d90
@ -338,7 +338,6 @@ Miner.prototype.createBlock = co(function* createBlock(tip, address) {
|
||||
attempt = new MinerBlock({
|
||||
tip: tip,
|
||||
version: version,
|
||||
ts: ts,
|
||||
bits: target,
|
||||
locktime: locktime,
|
||||
flags: this.chain.state.flags,
|
||||
|
||||
@ -49,7 +49,6 @@ function MinerBlock(options) {
|
||||
|
||||
this.tip = options.tip;
|
||||
this.version = options.version;
|
||||
this.ts = options.ts;
|
||||
this.height = options.tip.height + 1;
|
||||
this.bits = options.bits;
|
||||
this.target = btcutils.fromCompact(this.bits).toArrayLike(Buffer, 'le', 32);
|
||||
@ -123,7 +122,7 @@ MinerBlock.prototype._init = function _init() {
|
||||
block.version = this.version;
|
||||
block.prevBlock = this.tip.hash;
|
||||
block.merkleRoot = constants.NULL_HASH;
|
||||
block.ts = this.ts;
|
||||
block.ts = Math.max(this.network.now(), this.tip.ts + 1);
|
||||
block.bits = this.bits;
|
||||
block.nonce = 0;
|
||||
|
||||
@ -232,6 +231,8 @@ MinerBlock.prototype.updateCoinbase = function updateCoinbase() {
|
||||
*/
|
||||
|
||||
MinerBlock.prototype.updateNonce = function updateNonce() {
|
||||
this.block.ts = Math.max(this.network.now(), this.tip.ts + 1);
|
||||
|
||||
// Overflow the nonce and increment the extraNonce.
|
||||
this.block.nonce = 0;
|
||||
this.extraNonce.iaddn(1);
|
||||
@ -255,6 +256,9 @@ MinerBlock.prototype.updateMerkle = function updateMerkle() {
|
||||
if (this.witness)
|
||||
this.updateCommitment();
|
||||
|
||||
// Update timestamp.
|
||||
this.block.ts = Math.max(this.network.now(), this.tip.ts + 1);
|
||||
|
||||
// Recalculate merkle root.
|
||||
this.block.merkleRoot = this.block.createMerkleRoot('hex');
|
||||
};
|
||||
@ -383,6 +387,8 @@ MinerBlock.prototype.mine = function mine() {
|
||||
// Track how long we've been at it.
|
||||
this.begin = util.now();
|
||||
|
||||
assert(this.block.ts > this.tip.ts);
|
||||
|
||||
for (;;) {
|
||||
nonce = this.findNonce();
|
||||
|
||||
@ -408,6 +414,8 @@ MinerBlock.prototype.mineAsync = co(function* mineAsync() {
|
||||
// Track how long we've been at it.
|
||||
this.begin = util.now();
|
||||
|
||||
assert(this.block.ts > this.tip.ts);
|
||||
|
||||
for (;;) {
|
||||
nonce = yield this.findNonceAsync();
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user