From 6d95cd030274fff91588c7f7e52d26d4adbf1013 Mon Sep 17 00:00:00 2001 From: Chris Kleeschulte Date: Fri, 12 May 2017 20:36:27 -0400 Subject: [PATCH] Combined bitcoind getBlock with getBlockHeader to centralize height. --- lib/services/bitcoind/index.js | 17 +++++++++++++++-- lib/services/db/index.js | 14 +++----------- regtest/db.js | 8 ++++++-- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/lib/services/bitcoind/index.js b/lib/services/bitcoind/index.js index 0207e663..801d5f92 100644 --- a/lib/services/bitcoind/index.js +++ b/lib/services/bitcoind/index.js @@ -412,12 +412,25 @@ Bitcoin.prototype.getBlock = function(blockArg, callback) { return callback(err); } self._tryAllClients(function(client, done) { + client.getBlock(blockhash, false, function(err, response) { + if (err) { return done(self._wrapRPCError(err)); } - var blockObj = bitcore.Block.fromString(response.result); - done(null, blockObj); + + self.getBlockHeader(blockhash, function(err, header) { + + if(err) { + return done(self._wrapRPCError(err)); + } + + var blockObj = bitcore.Block.fromString(response.result); + blockObj.__height = header.height; + done(null, blockObj); + + }); + }); }, callback); } diff --git a/lib/services/db/index.js b/lib/services/db/index.js index ded34296..2006f3ec 100644 --- a/lib/services/db/index.js +++ b/lib/services/db/index.js @@ -319,18 +319,10 @@ DB.prototype.loadTips = function(callback) { return next(err); } - self.bitcoind.getBlockHeader(hash, function(err, header) { + self[tip] = block; + log.info('loaded tip, hash: ' + block.hash + ' height: ' + block.__height); + next(); - if(err) { - return next(err); - } - - block.__height = header.height; - self[tip] = block; - log.info('loaded tip, hash: ' + block.hash + ' height: ' + block.__height); - next(); - - }); }); }); diff --git a/regtest/db.js b/regtest/db.js index 8e3ce88a..8f3e7181 100644 --- a/regtest/db.js +++ b/regtest/db.js @@ -101,12 +101,16 @@ describe('DB Operations', function() { blocks.genesis, //end initChain block1.hash, blocks.block1a, + { height: 1, hash: block1.header.hash, previousblockhash: BufferUtil.reverse(block1.header.prevHash).toString('hex') }, block2.hash, blocks.block1b, - { hash: block1.header.hash, previousblockhash: BufferUtil.reverse(block1.header.prevHash).toString('hex') }, - { hash: block2.header.hash, previousblockhash: BufferUtil.reverse(block2.header.prevHash).toString('hex') }, + { height: 1, hash: block2.header.hash, previousblockhash: BufferUtil.reverse(block2.header.prevHash).toString('hex') }, + { height: 1, hash: block1.header.hash, previousblockhash: BufferUtil.reverse(block1.header.prevHash).toString('hex') }, + { height: 1, hash: block2.header.hash, previousblockhash: BufferUtil.reverse(block2.header.prevHash).toString('hex') }, blocks.genesis, + { height: 0, hash: genesis.hash }, blocks.block1b, + { height: 1, hash: block1.header.hash, previousblockhash: BufferUtil.reverse(block2.header.prevHash).toString('hex') }, ]; after(function(done) {