From b0aebb9c8404250bfaf034553880cca9fc9d5601 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Thu, 18 Aug 2016 00:16:28 -0700 Subject: [PATCH] coins: optimize. --- lib/bcoin/chaindb.js | 8 ++++---- lib/bcoin/coins.js | 4 ++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/bcoin/chaindb.js b/lib/bcoin/chaindb.js index 09c03a7f..2a73ab76 100644 --- a/lib/bcoin/chaindb.js +++ b/lib/bcoin/chaindb.js @@ -1071,11 +1071,11 @@ ChainDB.prototype.connectBlock = function connectBlock(block, view, callback) { for (i = 0; i < view.length; i++) { coins = view[i]; - if (coins.size() === 0) { + raw = coins.toRaw(); + if (!raw) { this.del(layout.c(coins.hash)); this.coinCache.remove(coins.hash); } else { - raw = coins.toRaw(); this.put(layout.c(coins.hash), raw); this.coinCache.set(coins.hash, raw); } @@ -1172,11 +1172,11 @@ ChainDB.prototype.disconnectBlock = function disconnectBlock(block, callback) { for (i = 0; i < view.length; i++) { coins = view[i]; - if (coins.size() === 0) { + raw = coins.toRaw(); + if (!raw) { self.del(layout.c(coins.hash)); self.coinCache.remove(coins.hash); } else { - raw = coins.toRaw(); self.put(layout.c(coins.hash), raw); self.coinCache.set(coins.hash, raw); } diff --git a/lib/bcoin/coins.js b/lib/bcoin/coins.js index ac8ffa57..7c6aa6b7 100644 --- a/lib/bcoin/coins.js +++ b/lib/bcoin/coins.js @@ -224,6 +224,10 @@ Coins.prototype.toRaw = function toRaw(writer) { var length = this.size(); var i, output, bits, fstart, flen, bit, oct; + // Return nothing if we're fully spent. + if (length === 0) + return writer; + // Varint version: hopefully some smartass // miner doesn't start mining `-1` versions. p.writeVarint(this.version);