fix work bug

This commit is contained in:
Manuel Araoz 2015-04-07 16:34:54 -03:00
parent 0bd69fa74f
commit b3ad83b9ee
2 changed files with 18 additions and 12 deletions

View File

@ -40,7 +40,7 @@ BlockChain.prototype.addData = function(block) {
var prevHash = bitcore.util.buffer.reverse(block.header.prevHash).toString('hex'); var prevHash = bitcore.util.buffer.reverse(block.header.prevHash).toString('hex');
this.work[block.hash] = this.work[prevHash].work + getWork(block.header.bits); this.work[block.hash] = this.work[prevHash] + getWork(block.header.bits);
this.prev[block.hash] = prevHash; this.prev[block.hash] = prevHash;
}; };

View File

@ -39,6 +39,7 @@ var BitcoreNode = function(bus, networkMonitor, blockService, transactionService
this.bus.register(bitcore.Block, function(block) { this.bus.register(bitcore.Block, function(block) {
console.log('Block', block.id);
var prevHash = bitcore.util.buffer.reverse(block.header.prevHash).toString('hex'); var prevHash = bitcore.util.buffer.reverse(block.header.prevHash).toString('hex');
self.blockCache[block.hash] = block; self.blockCache[block.hash] = block;
@ -48,15 +49,21 @@ var BitcoreNode = function(bus, networkMonitor, blockService, transactionService
} }
var blockchainChanges = self.blockchain.proposeNewBlock(block); var blockchainChanges = self.blockchain.proposeNewBlock(block);
console.log('changes', blockchainChanges);
Promise.each(blockchainChanges.unconfirmed, function(hash) { Promise.each(blockchainChanges.unconfirmed, function(hash) {
return self.blockService.unconfirm(self.blockCache[hash]); return self.blockService.unconfirm(self.blockCache[hash]);
}) })
.then(Promise.each(blockchainChanges.confirmed, function(hash) { .then(function() {
return self.blockService.confirm(self.blockCache[hash]); return Promise.all(blockchainChanges.confirmed.map(function(hash) {
})) return self.blockService.confirm(self.blockCache[hash]);
.then(function() { }));
self.networkMonitor.requestBlocks(self.blockchain.getBlockLocator()); })
}); .then(function() {
self.networkMonitor.requestBlocks(self.blockchain.getBlockLocator());
})
.catch(function(error) {
self.stop(error);
});
}); });
this.bus.onAny(function(value) { this.bus.onAny(function(value) {
@ -79,7 +86,6 @@ BitcoreNode.create = function(opts) {
var networkMonitor = NetworkMonitor.create(bus, opts.NetworkMonitor); var networkMonitor = NetworkMonitor.create(bus, opts.NetworkMonitor);
console.log(opts.LevelUp);
var database = Promise.promisifyAll( var database = Promise.promisifyAll(
new LevelUp(opts.LevelUp || config.get('LevelUp')) new LevelUp(opts.LevelUp || config.get('LevelUp'))
); );
@ -119,8 +125,8 @@ BitcoreNode.prototype.start = function() {
}); });
}; };
BitcoreNode.prototype.stop = function() { BitcoreNode.prototype.stop = function(reason) {
this.networkMonitor.stop(); this.networkMonitor.stop(reason);
}; };