Various fixes.
This commit is contained in:
parent
72770944db
commit
f10dbaf047
@ -56,13 +56,20 @@ BlockService.prototype.getTip = function() {
|
|||||||
|
|
||||||
BlockService.prototype.getBlock = function(arg, callback) {
|
BlockService.prototype.getBlock = function(arg, callback) {
|
||||||
|
|
||||||
var hash = this._getHash(arg);
|
var self = this;
|
||||||
|
self._getHash(arg, function(err, hash) {
|
||||||
|
|
||||||
if (!hash) {
|
if (err) {
|
||||||
return callback();
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!hash) {
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
|
||||||
|
self._getBlock(hash, callback);
|
||||||
|
});
|
||||||
|
|
||||||
this._getBlock(hash, callback);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BlockService.prototype.getBlockOverview = function(hash, callback) {
|
BlockService.prototype.getBlockOverview = function(hash, callback) {
|
||||||
|
|||||||
@ -39,11 +39,16 @@ FeeService.prototype.getAPIMethods = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
FeeService.prototype.estimateFee = function(blocks, callback) {
|
FeeService.prototype.estimateFee = function(blocks, callback) {
|
||||||
this._client.estimateFee(blocks || 4, callback);
|
this._client.estimateFee(blocks || 4, function(err, res) {
|
||||||
|
if (err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
if (!res) {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
callback(null, res.result);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = FeeService;
|
module.exports = FeeService;
|
||||||
|
|
||||||
|
|||||||
@ -24,7 +24,7 @@ var HeaderService = function(options) {
|
|||||||
|
|
||||||
this.subscriptions = {};
|
this.subscriptions = {};
|
||||||
this.subscriptions.block = [];
|
this.subscriptions.block = [];
|
||||||
this._checkpoint = options.checkpoint || 2000;
|
this._checkpoint = options.checkpoint || 2000; // set to -1 to resync all headers.
|
||||||
this.GENESIS_HASH = constants.BITCOIN_GENESIS_HASH[this.node.network];
|
this.GENESIS_HASH = constants.BITCOIN_GENESIS_HASH[this.node.network];
|
||||||
this._lastHeader = null;
|
this._lastHeader = null;
|
||||||
this.blockServiceSyncing = true;
|
this.blockServiceSyncing = true;
|
||||||
@ -61,6 +61,7 @@ HeaderService.prototype.getAPIMethods = function() {
|
|||||||
var methods = [
|
var methods = [
|
||||||
['getAllHeaders', this, this.getAllHeaders, 0],
|
['getAllHeaders', this, this.getAllHeaders, 0],
|
||||||
['getBestHeight', this, this.getBestHeight, 0],
|
['getBestHeight', this, this.getBestHeight, 0],
|
||||||
|
['getInfo', this, this.getInfo, 0],
|
||||||
['getBlockHeader', this, this.getBlockHeader, 1]
|
['getBlockHeader', this, this.getBlockHeader, 1]
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -68,6 +69,27 @@ HeaderService.prototype.getAPIMethods = function() {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
HeaderService.prototype.getCurrentDifficulty = function() {
|
||||||
|
var target = bcoin.mining.common.getTarget(this._lastHeader.bits);
|
||||||
|
return bcoin.mining.common.getDifficulty(target);
|
||||||
|
};
|
||||||
|
|
||||||
|
HeaderService.prototype.getInfo = function(callback) {
|
||||||
|
callback(null, {
|
||||||
|
blocks: this._lastHeader.height,
|
||||||
|
connections: this._p2p.getNumberOfPeers(),
|
||||||
|
timeoffset: 0,
|
||||||
|
proxy: '',
|
||||||
|
testnet: this.node.network === 'livenet' ? false: true,
|
||||||
|
errors: '',
|
||||||
|
network: this.node.network,
|
||||||
|
relayFee: 0,
|
||||||
|
version: 'bitcore-1.1.2',
|
||||||
|
protocolversion: 700001,
|
||||||
|
difficulty: this.getCurrentDifficulty()
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
HeaderService.prototype.getAllHeaders = function(callback) {
|
HeaderService.prototype.getAllHeaders = function(callback) {
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
@ -195,7 +217,6 @@ HeaderService.prototype.stop = function(callback) {
|
|||||||
|
|
||||||
HeaderService.prototype._startHeaderSubscription = function() {
|
HeaderService.prototype._startHeaderSubscription = function() {
|
||||||
|
|
||||||
|
|
||||||
this._bus.on('p2p/headers', this._onHeaders.bind(this));
|
this._bus.on('p2p/headers', this._onHeaders.bind(this));
|
||||||
this._bus.subscribe('p2p/headers');
|
this._bus.subscribe('p2p/headers');
|
||||||
|
|
||||||
@ -524,7 +545,7 @@ HeaderService.prototype._onBestHeight = function(height) {
|
|||||||
|
|
||||||
HeaderService.prototype._startSync = function() {
|
HeaderService.prototype._startSync = function() {
|
||||||
|
|
||||||
this._numNeeded = Math.max(this._bestHeight - this._tip.height, this._checkpoint);
|
this._numNeeded = this._bestHeight - this._tip.height;
|
||||||
|
|
||||||
log.info('Header Service: Gathering: ' + this._numNeeded + ' ' + 'header(s) from the peer-to-peer network.');
|
log.info('Header Service: Gathering: ' + this._numNeeded + ' ' + 'header(s) from the peer-to-peer network.');
|
||||||
|
|
||||||
@ -594,7 +615,12 @@ HeaderService.prototype._getLastHeader = function(callback) {
|
|||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
if (self._tip.height > self._checkpoint) {
|
// redo all headers
|
||||||
|
if (this._checkpoint === -1) {
|
||||||
|
this._checkpoint = this._tip.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self._tip.height >= self._checkpoint) {
|
||||||
self._tip.height -= self._checkpoint;
|
self._tip.height -= self._checkpoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -23,6 +23,7 @@ var P2P = function(options) {
|
|||||||
this._initPubSub();
|
this._initPubSub();
|
||||||
this._bcoin = null;
|
this._bcoin = null;
|
||||||
this._currentBestHeight = null;
|
this._currentBestHeight = null;
|
||||||
|
this._latestBits = 0x1d00ffff;
|
||||||
};
|
};
|
||||||
|
|
||||||
util.inherits(P2P, BaseService);
|
util.inherits(P2P, BaseService);
|
||||||
@ -38,13 +39,16 @@ P2P.prototype.getAPIMethods = function() {
|
|||||||
['clearInventoryCache', this, this.clearInventoryCache, 0],
|
['clearInventoryCache', this, this.clearInventoryCache, 0],
|
||||||
['getBlocks', this, this.getBlocks, 1],
|
['getBlocks', this, this.getBlocks, 1],
|
||||||
['getHeaders', this, this.getHeaders, 1],
|
['getHeaders', this, this.getHeaders, 1],
|
||||||
['getInfo', this, this.getInfo, 0],
|
|
||||||
['getMempool', this, this.getMempool, 0],
|
['getMempool', this, this.getMempool, 0],
|
||||||
['sendTransaction', this, this.sendTransaction, 1]
|
['sendTransaction', this, this.sendTransaction, 1]
|
||||||
];
|
];
|
||||||
return methods;
|
return methods;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
P2P.prototype.getNumberOfPeers = function() {
|
||||||
|
return this._pool.numberConnected;
|
||||||
|
};
|
||||||
|
|
||||||
P2P.prototype.getBlocks = function(filter) {
|
P2P.prototype.getBlocks = function(filter) {
|
||||||
|
|
||||||
var peer = this._getPeer();
|
var peer = this._getPeer();
|
||||||
@ -61,13 +65,6 @@ P2P.prototype.getHeaders = function(filter) {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
P2P.prototype.getInfo = function(callback) {
|
|
||||||
callback(null, {
|
|
||||||
blocks: this._getBestHeight(),
|
|
||||||
connections: this._pool.numberConnected
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
P2P.prototype.getMempool = function(filter) {
|
P2P.prototype.getMempool = function(filter) {
|
||||||
|
|
||||||
var peer = this._getPeer();
|
var peer = this._getPeer();
|
||||||
|
|||||||
@ -36,7 +36,6 @@ TimestampService.prototype.getBlockHashesByTimestamp = function(high, low, callb
|
|||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
var result = [];
|
var result = [];
|
||||||
var lastEntry;
|
|
||||||
|
|
||||||
var start = self._encoding.encodeTimestampBlockKey(low);
|
var start = self._encoding.encodeTimestampBlockKey(low);
|
||||||
var end = self._encoding.encodeTimestampBlockKey(high);
|
var end = self._encoding.encodeTimestampBlockKey(high);
|
||||||
@ -50,9 +49,7 @@ TimestampService.prototype.getBlockHashesByTimestamp = function(high, low, callb
|
|||||||
|
|
||||||
tsStream.on('data', function(data) {
|
tsStream.on('data', function(data) {
|
||||||
var value = self._encoding.decodeTimestampBlockValue(data.value);
|
var value = self._encoding.decodeTimestampBlockValue(data.value);
|
||||||
console.log(value);
|
|
||||||
result.push(value);
|
result.push(value);
|
||||||
lastEntry = value;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var streamErr;
|
var streamErr;
|
||||||
@ -70,7 +67,7 @@ TimestampService.prototype.getBlockHashesByTimestamp = function(high, low, callb
|
|||||||
return callback();
|
return callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
return callback(null, result.push(lastEntry));
|
return callback(null, result);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user