network.height.
This commit is contained in:
parent
46a47b5bf2
commit
2e0948faa5
@ -30,8 +30,6 @@ function AbstractBlock(data) {
|
|||||||
this._raw = data._raw || null;
|
this._raw = data._raw || null;
|
||||||
this._size = data._size || 0;
|
this._size = data._size || 0;
|
||||||
|
|
||||||
this._chain = data.chain;
|
|
||||||
|
|
||||||
this.valid = null;
|
this.valid = null;
|
||||||
this._hash = null;
|
this._hash = null;
|
||||||
}
|
}
|
||||||
@ -98,10 +96,6 @@ AbstractBlock.prototype.isGenesis = function isGenesis() {
|
|||||||
return this.hash('hex') === network.genesis.hash;
|
return this.hash('hex') === network.genesis.hash;
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractBlock.prototype.__defineGetter__('chain', function() {
|
|
||||||
return this._chain || bcoin.chain.global;
|
|
||||||
});
|
|
||||||
|
|
||||||
AbstractBlock.prototype.__defineGetter__('rhash', function() {
|
AbstractBlock.prototype.__defineGetter__('rhash', function() {
|
||||||
return utils.revHex(this.hash('hex'));
|
return utils.revHex(this.hash('hex'));
|
||||||
});
|
});
|
||||||
|
|||||||
@ -167,6 +167,9 @@ Chain.prototype._init = function _init() {
|
|||||||
self.tip = tip;
|
self.tip = tip;
|
||||||
self.height = tip.height;
|
self.height = tip.height;
|
||||||
|
|
||||||
|
if (self.bestHeight === -1)
|
||||||
|
network.height = tip.height;
|
||||||
|
|
||||||
self.loaded = true;
|
self.loaded = true;
|
||||||
self.emit('open');
|
self.emit('open');
|
||||||
self.emit('tip', tip);
|
self.emit('tip', tip);
|
||||||
@ -889,6 +892,10 @@ Chain.prototype._setBestChain = function _setBestChain(entry, block, callback) {
|
|||||||
|
|
||||||
self.tip = entry;
|
self.tip = entry;
|
||||||
self.height = entry.height;
|
self.height = entry.height;
|
||||||
|
|
||||||
|
if (self.bestHeight === -1)
|
||||||
|
network.height = entry.height;
|
||||||
|
|
||||||
self.emit('tip', entry);
|
self.emit('tip', entry);
|
||||||
|
|
||||||
return callback();
|
return callback();
|
||||||
@ -1062,8 +1069,10 @@ Chain.prototype.add = function add(initial, peer, callback, force) {
|
|||||||
// We do this even for orphans (peers will send
|
// We do this even for orphans (peers will send
|
||||||
// us their highest block during the initial
|
// us their highest block during the initial
|
||||||
// getblocks sync, making it an orphan).
|
// getblocks sync, making it an orphan).
|
||||||
if (block.getCoinbaseHeight() > self.bestHeight)
|
if (block.getCoinbaseHeight() > self.bestHeight) {
|
||||||
self.bestHeight = block.getCoinbaseHeight();
|
self.bestHeight = block.getCoinbaseHeight();
|
||||||
|
network.height = self.bestHeight;
|
||||||
|
}
|
||||||
|
|
||||||
// If previous block wasn't ever seen,
|
// If previous block wasn't ever seen,
|
||||||
// add it current to orphans and break.
|
// add it current to orphans and break.
|
||||||
|
|||||||
@ -8,6 +8,7 @@ var bn = require('bn.js');
|
|||||||
var bcoin = require('../bcoin');
|
var bcoin = require('../bcoin');
|
||||||
var utils = require('./utils');
|
var utils = require('./utils');
|
||||||
var assert = utils.assert;
|
var assert = utils.assert;
|
||||||
|
var network = bcoin.protocol.network;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Coin
|
* Coin
|
||||||
@ -63,39 +64,19 @@ function Coin(tx, index) {
|
|||||||
|
|
||||||
utils.inherits(Coin, bcoin.output);
|
utils.inherits(Coin, bcoin.output);
|
||||||
|
|
||||||
Coin.prototype.__defineGetter__('chain', function() {
|
|
||||||
return this._chain || bcoin.chain.global;
|
|
||||||
});
|
|
||||||
|
|
||||||
Coin.prototype.getSize = function getSize() {
|
|
||||||
return 4 + 4 + 8 + this.script.getSize() + 32 + 4 + 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
Coin.prototype.getConfirmations = function getConfirmations(height) {
|
Coin.prototype.getConfirmations = function getConfirmations(height) {
|
||||||
var top;
|
if (height == null)
|
||||||
|
height = network.height;
|
||||||
if (height == null) {
|
|
||||||
if (!this.chain)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
top = this.chain.height;
|
|
||||||
} else {
|
|
||||||
top = height;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.height === -1)
|
if (this.height === -1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (top < this.height)
|
if (height < this.height)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return top - this.height + 1;
|
return height - this.height + 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
Coin.prototype.__defineGetter__('confirmations', function() {
|
|
||||||
return this.getConfirmations();
|
|
||||||
});
|
|
||||||
|
|
||||||
Coin.prototype.getAge = function getAge(height) {
|
Coin.prototype.getAge = function getAge(height) {
|
||||||
var age = this.getConfirmations(height);
|
var age = this.getConfirmations(height);
|
||||||
|
|
||||||
@ -108,6 +89,10 @@ Coin.prototype.getAge = function getAge(height) {
|
|||||||
return age;
|
return age;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Coin.prototype.__defineGetter__('confirmations', function() {
|
||||||
|
return this.getConfirmations();
|
||||||
|
});
|
||||||
|
|
||||||
Coin.prototype.__defineGetter__('age', function() {
|
Coin.prototype.__defineGetter__('age', function() {
|
||||||
return this.getAge();
|
return this.getAge();
|
||||||
});
|
});
|
||||||
@ -122,6 +107,7 @@ Coin.prototype.inspect = function inspect() {
|
|||||||
coinbase: this.coinbase,
|
coinbase: this.coinbase,
|
||||||
hash: this.hash ? utils.revHex(this.hash) : null,
|
hash: this.hash ? utils.revHex(this.hash) : null,
|
||||||
index: this.index,
|
index: this.index,
|
||||||
|
age: this.age,
|
||||||
address: this.getAddress()
|
address: this.getAddress()
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@ -180,6 +180,7 @@ Input.prototype.inspect = function inspect() {
|
|||||||
hash: this.prevout.hash,
|
hash: this.prevout.hash,
|
||||||
index: this.prevout.index,
|
index: this.prevout.index,
|
||||||
spent: false,
|
spent: false,
|
||||||
|
age: 0,
|
||||||
address: null
|
address: null
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,7 @@ var bcoin = require('../bcoin');
|
|||||||
var utils = require('./utils');
|
var utils = require('./utils');
|
||||||
var assert = utils.assert;
|
var assert = utils.assert;
|
||||||
var constants = bcoin.protocol.constants;
|
var constants = bcoin.protocol.constants;
|
||||||
|
var network = bcoin.protocol.network;
|
||||||
var Script = bcoin.script;
|
var Script = bcoin.script;
|
||||||
var Witness = bcoin.script.witness;
|
var Witness = bcoin.script.witness;
|
||||||
|
|
||||||
@ -45,8 +46,6 @@ function MTX(options) {
|
|||||||
|
|
||||||
this.height = -1;
|
this.height = -1;
|
||||||
|
|
||||||
this._chain = options.chain;
|
|
||||||
|
|
||||||
if (options.inputs) {
|
if (options.inputs) {
|
||||||
options.inputs.forEach(function(input) {
|
options.inputs.forEach(function(input) {
|
||||||
this.addInput(input);
|
this.addInput(input);
|
||||||
@ -882,10 +881,12 @@ MTX.prototype.selectCoins = function selectCoins(coins, options) {
|
|||||||
// Calculate max possible size after signing.
|
// Calculate max possible size after signing.
|
||||||
size = tx.maxSize(options.m, options.n);
|
size = tx.maxSize(options.m, options.n);
|
||||||
|
|
||||||
// if (newkb == null && tx.isFree(this.chain.height + 1, size)) {
|
if (options.free) {
|
||||||
// fee = new bn(0);
|
if (newkb == null && tx.isFree(null, size)) {
|
||||||
// break;
|
fee = new bn(0);
|
||||||
// }
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (options.accurate) {
|
if (options.accurate) {
|
||||||
newkb = size / 1024;
|
newkb = size / 1024;
|
||||||
@ -960,7 +961,7 @@ MTX.prototype.fill = function fill(coins, options) {
|
|||||||
result = this.selectCoins(coins, options);
|
result = this.selectCoins(coins, options);
|
||||||
|
|
||||||
if (!result.coins) {
|
if (!result.coins) {
|
||||||
err = new Error('Could not fill transaction');
|
err = new Error('Could not fill transaction.');
|
||||||
err.requiredFunds = result.total;
|
err.requiredFunds = result.total;
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
@ -1022,12 +1023,8 @@ MTX.prototype.sortMembers = function sortMembers() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
MTX.prototype.avoidFeeSniping = function avoidFeeSniping(height) {
|
MTX.prototype.avoidFeeSniping = function avoidFeeSniping(height) {
|
||||||
if (height == null) {
|
if (height == null)
|
||||||
if (!this.chain)
|
height = network.height;
|
||||||
return;
|
|
||||||
|
|
||||||
height = this.chain.height;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (height === -1)
|
if (height === -1)
|
||||||
height = 0;
|
height = 0;
|
||||||
|
|||||||
@ -153,6 +153,8 @@ main.deployments = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
main.height = -1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Testnet (v3)
|
* Testnet (v3)
|
||||||
* https://en.bitcoin.it/wiki/Testnet
|
* https://en.bitcoin.it/wiki/Testnet
|
||||||
@ -272,6 +274,8 @@ testnet.deployments = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
testnet.height = -1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Regtest
|
* Regtest
|
||||||
*/
|
*/
|
||||||
@ -373,6 +377,8 @@ regtest.deployments = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
regtest.height = -1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Segnet
|
* Segnet
|
||||||
*/
|
*/
|
||||||
@ -481,6 +487,8 @@ segnet.ruleChangeActivationThreshold = 108;
|
|||||||
segnet.minerConfirmationWindow = 144;
|
segnet.minerConfirmationWindow = 144;
|
||||||
segnet.deployments = {};
|
segnet.deployments = {};
|
||||||
|
|
||||||
|
segnet.height = -1;
|
||||||
|
|
||||||
network.xprivkeys = {
|
network.xprivkeys = {
|
||||||
'76066276': 'main',
|
'76066276': 'main',
|
||||||
'70615956': 'testnet',
|
'70615956': 'testnet',
|
||||||
|
|||||||
@ -10,6 +10,7 @@ var bcoin = require('../bcoin');
|
|||||||
var utils = require('./utils');
|
var utils = require('./utils');
|
||||||
var assert = utils.assert;
|
var assert = utils.assert;
|
||||||
var constants = bcoin.protocol.constants;
|
var constants = bcoin.protocol.constants;
|
||||||
|
var network = bcoin.protocol.network;
|
||||||
var Script = bcoin.script;
|
var Script = bcoin.script;
|
||||||
var BufferReader = require('./reader');
|
var BufferReader = require('./reader');
|
||||||
var BufferWriter = require('./writer');
|
var BufferWriter = require('./writer');
|
||||||
@ -44,8 +45,6 @@ function TX(data, block, index) {
|
|||||||
|
|
||||||
this.height = data.height != null ? data.height : -1;
|
this.height = data.height != null ? data.height : -1;
|
||||||
|
|
||||||
this._chain = data.chain;
|
|
||||||
|
|
||||||
// assert(data.inputs.length !== 0);
|
// assert(data.inputs.length !== 0);
|
||||||
// assert(data.outputs.length !== 0);
|
// assert(data.outputs.length !== 0);
|
||||||
|
|
||||||
@ -913,11 +912,11 @@ TX.prototype.maxSize = function maxSize() {
|
|||||||
TX.prototype.getPriority = function getPriority(height, size) {
|
TX.prototype.getPriority = function getPriority(height, size) {
|
||||||
var sum, i, input, age;
|
var sum, i, input, age;
|
||||||
|
|
||||||
if (height == null)
|
if (height == null) {
|
||||||
height = this.height;
|
height = this.height;
|
||||||
|
if (height === -1)
|
||||||
if (height === -1)
|
height = network.height + 1;
|
||||||
height = null;
|
}
|
||||||
|
|
||||||
if (!this.hasCoins())
|
if (!this.hasCoins())
|
||||||
return new bn(0);
|
return new bn(0);
|
||||||
@ -953,8 +952,11 @@ TX.prototype.isFree = function isFree(height, size) {
|
|||||||
if (!this.hasCoins())
|
if (!this.hasCoins())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (height == null)
|
if (height == null) {
|
||||||
height = this.height;
|
height = this.height;
|
||||||
|
if (height === -1)
|
||||||
|
height = network.height + 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (size == null)
|
if (size == null)
|
||||||
size = this.maxSize();
|
size = this.maxSize();
|
||||||
@ -981,37 +983,17 @@ TX.prototype.getMinFee = function getMinFee(size) {
|
|||||||
return fee;
|
return fee;
|
||||||
};
|
};
|
||||||
|
|
||||||
TX.prototype.getHeight = function getHeight() {
|
|
||||||
if (this.height !== -1)
|
|
||||||
return this.height;
|
|
||||||
|
|
||||||
if (!this.chain)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
return this.block ? this.chain.getHeight(this.block) : -1;
|
|
||||||
};
|
|
||||||
|
|
||||||
TX.prototype.getConfirmations = function getConfirmations(height) {
|
TX.prototype.getConfirmations = function getConfirmations(height) {
|
||||||
var top;
|
if (height == null)
|
||||||
|
height = network.height;
|
||||||
|
|
||||||
if (height == null) {
|
if (this.height === -1)
|
||||||
if (!this.chain)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
top = this.chain.height;
|
|
||||||
} else {
|
|
||||||
top = height;
|
|
||||||
}
|
|
||||||
|
|
||||||
height = this.height;
|
|
||||||
|
|
||||||
if (height === -1)
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (top < height)
|
if (height < this.height)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return top - height + 1;
|
return height - this.height + 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
TX.prototype.getValue = function getValue() {
|
TX.prototype.getValue = function getValue() {
|
||||||
@ -1034,10 +1016,6 @@ TX.prototype.hasType = function hasType(type) {
|
|||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
TX.prototype.__defineGetter__('chain', function() {
|
|
||||||
return this._chain || bcoin.chain.global;
|
|
||||||
});
|
|
||||||
|
|
||||||
TX.prototype.__defineGetter__('rblock', function() {
|
TX.prototype.__defineGetter__('rblock', function() {
|
||||||
return this.block
|
return this.block
|
||||||
? utils.revHex(this.block)
|
? utils.revHex(this.block)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user