Skip to content

Commit

Permalink
Use logical timestamp to display blocks
Browse files Browse the repository at this point in the history
  • Loading branch information
Chethan Krishna committed Jul 29, 2016
1 parent e650561 commit 3bbdb09
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 15 deletions.
21 changes: 9 additions & 12 deletions lib/blocks.js
Original file line number Diff line number Diff line change
Expand Up @@ -246,16 +246,17 @@ BlockController.prototype.list = function(req, res) {
isToday = true;
}

var gte = Math.round((new Date(dateStr)).getTime() / 1000);
var low = Math.round((new Date(dateStr)).getTime() / 1000);

//pagination
var lte = parseInt(req.query.startTimestamp) || gte + 86400;
var prev = this.formatTimestamp(new Date((gte - 86400) * 1000));
var next = lte ? this.formatTimestamp(new Date(lte * 1000)) : null;
var high = parseInt(req.query.startTimestamp) || low + 86400;
var prev = this.formatTimestamp(new Date((low - 86400) * 1000));
var next = high ? this.formatTimestamp(new Date(high * 1000)) : null;
var limit = parseInt(req.query.limit || BLOCK_LIMIT);
var more = false;

self.node.services.bitcoind.getBlockHashesByTimestamp(lte, gte, function(err, hashes) {
var options = {'noOrphans':false, 'logicalTimes':true};
self.node.services.bitcoind.getBlockHashesByTimestamp(high, low, options, function(err, hashes) {
if(err) {
return self.common.handleErrors(err, res);
}
Expand All @@ -270,32 +271,28 @@ BlockController.prototype.list = function(req, res) {
async.mapSeries(
hashes,
function(hash, next) {
self._getBlockSummary(hash, next);
self._getBlockSummary(hash.blockhash, next);
},
function(err, blocks) {
if(err) {
return self.common.handleErrors(err, res);
}

blocks.sort(function(a, b) {
return b.height - a.height;
});

var data = {
blocks: blocks,
length: blocks.length,
pagination: {
next: next,
prev: prev,
currentTs: lte - 1,
currentTs: high - 1,
current: dateStr,
isToday: isToday,
more: more
}
};

if(more) {
data.pagination.moreTs = blocks[blocks.length - 1].time;
data.pagination.moreTs = hashes[hashes.length - 1].logicalts - 1;
}

res.jsonp(data);
Expand Down
6 changes: 3 additions & 3 deletions test/blocks.js
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,8 @@ describe('Blocks', function() {
stub.onSecondCall().callsArgWith(1, null, new Buffer(blocks['00000000000006bd8fe9e53780323c0e85719eca771022e1eb6d10c62195c441'], 'hex'));

var hashes = [
'00000000000006bd8fe9e53780323c0e85719eca771022e1eb6d10c62195c441',
'000000000008fbb2e358e382a6f6948b2da24563bba183af447e6e2542e8efc7'
{blockhash: '00000000000006bd8fe9e53780323c0e85719eca771022e1eb6d10c62195c441', logicalts: 12345678},
{blockhash: '000000000008fbb2e358e382a6f6948b2da24563bba183af447e6e2542e8efc7', logicalts: 12345678}
];
var node = {
log: sinon.stub(),
Expand All @@ -190,7 +190,7 @@ describe('Blocks', function() {
getBlockHeader: function(hash, callback) {
callback(null, blockIndexes[hash]);
},
getBlockHashesByTimestamp: sinon.stub().callsArgWith(2, null, hashes)
getBlockHashesByTimestamp: sinon.stub().callsArgWith(3, null, hashes)
}
}
};
Expand Down

0 comments on commit 3bbdb09

Please sign in to comment.