WIP changes for next version

This commit is contained in:
Chris Kleeschulte 2017-08-09 18:11:03 -04:00
parent 95bcad836c
commit c61490ed62
3 changed files with 43 additions and 16 deletions

View File

@ -27,6 +27,9 @@ function BlockController(options) {
});
this.common = new Common({log: this.node.log});
this._block = this.node.services.block;
this._header = this.node.services.header;
this._timestamp = this.node.services.timestamp;
}
var BLOCK_LIMIT = 200;
@ -59,24 +62,31 @@ BlockController.prototype.block = function(req, res, next) {
var blockCached = self.blockCache.get(hash);
if (blockCached) {
blockCached.confirmations = self.node.services.bitcoind.height - blockCached.height + 1;
var height = self._block.getTip().height;
blockCached.confirmations = height - blockCached.height + 1;
req.block = blockCached;
next();
} else {
self.node.getBlock(hash, function(err, block) {
if((err && err.code === -5) || (err && err.code === -8)) {
return self.common.handleErrors(null, res);
} else if(err) {
self._block.getBlock(hash, function(err, block) {
if (err) {
return self.common.handleErrors(err, res);
}
self.node.services.bitcoind.getBlockHeader(hash, function(err, info) {
if (!block) {
return self.common.handleErrors(null, res);
}
self._header.getBlockHeader(hash, function(err, info) {
console.log(info);
if (err) {
return self.common.handleErrors(err, res);
}
var blockResult = self.transformBlock(block, info);
if (blockResult.confirmations >= self.blockCacheConfirmations) {
self.blockCache.set(hash, blockResult);
}
req.block = blockResult;
next();
});
@ -158,7 +168,7 @@ BlockController.prototype.showRaw = function(req, res) {
BlockController.prototype.blockIndex = function(req, res) {
var self = this;
var height = req.params.height;
this.node.services.bitcoind.getBlockHeader(parseInt(height), function(err, info) {
self._header.getBlockHeader(parseInt(height), function(err, info) {
if (err) {
return self.common.handleErrors(err, res);
}
@ -183,7 +193,7 @@ BlockController.prototype._getBlockSummary = function(hash, moreTimestamp, next)
if (summaryCache) {
finish(summaryCache);
} else {
self.node.services.bitcoind.getRawBlock(hash, function(err, blockBuffer) {
self._block.getRawBlock(hash, function(err, blockBuffer) {
if (err) {
return next(err);
}
@ -201,7 +211,7 @@ BlockController.prototype._getBlockSummary = function(hash, moreTimestamp, next)
var txlength = br.readVarintNum();
info.transactions = [bitcore.Transaction().fromBufferReader(br)];
self.node.services.bitcoind.getBlockHeader(hash, function(err, blockHeader) {
self._header.getBlockHeader(hash, function(err, blockHeader) {
if (err) {
return next(err);
}
@ -216,7 +226,8 @@ BlockController.prototype._getBlockSummary = function(hash, moreTimestamp, next)
poolInfo: self.getPoolInfo(info)
};
var confirmations = self.node.services.bitcoind.height - height + 1;
var _height = self._block.getTip().height;
var confirmations = _height - height + 1;
if (confirmations >= self.blockCacheConfirmations) {
self.blockSummaryCache.set(hash, summary);
}
@ -259,7 +270,7 @@ BlockController.prototype.list = function(req, res) {
var more = false;
var moreTimestamp = lte;
self.node.services.bitcoind.getBlockHashesByTimestamp(lte, gte, function(err, hashes) {
self._timestamp.getBlockHashesByTimestamp(lte, gte, function(err, hashes) {
if(err) {
return self.common.handleErrors(err, res);
}

View File

@ -61,7 +61,7 @@ var InsightAPI = function(options) {
this.txController = new TxController(this.node);
};
InsightAPI.dependencies = ['bitcoind', 'web'];
InsightAPI.dependencies = ['header', 'block', 'transaction', 'address', 'web', 'mempool', 'timestamp', 'fee'];
inherits(InsightAPI, BaseService);
@ -90,9 +90,25 @@ InsightAPI.prototype.getRoutePrefix = function() {
};
InsightAPI.prototype.start = function(callback) {
this.node.services.bitcoind.on('tx', this.transactionEventHandler.bind(this));
this.node.services.bitcoind.on('block', this.blockEventHandler.bind(this));
setImmediate(callback);
if (this._subscribed) {
return;
}
this._subscribed = true;
if (!this._bus) {
this._bus = this.node.openBus({remoteAddress: 'localhost-insight-api'});
}
this._bus.on('block/block', this.transactionEventHandler.bind(this));
this._bus.subscribe('block/block');
this._bus.on('mempool/transaction', this.blockEventHandler.bind(this));
this._bus.subscribe('mempool/transaction');
callback();
};
InsightAPI.prototype.createLogInfoStream = function() {

View File

@ -61,7 +61,7 @@
"bitcoreNode": "lib",
"dependencies": {
"async": "*",
"bitcore-lib": "^0.13.7",
"bitcore-lib": "bitpay/bitcore-lib#transitional",
"bitcore-message": "^1.0.1",
"body-parser": "^1.13.3",
"compression": "^1.6.1",