txdb: refactor.

This commit is contained in:
Christopher Jeffrey 2016-08-15 11:37:57 -07:00
parent 80103454c0
commit 0f3f9c984b
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -483,16 +483,15 @@ TXDB.prototype.getInfo = function getInfo(tx, callback) {
* Add an orphan (tx hash + input index) * Add an orphan (tx hash + input index)
* to orphan list. Stored by its required coin ID. * to orphan list. Stored by its required coin ID.
* @private * @private
* @param {String} key - Required coin hash + index. * @param {Outpoint} prevout - Required coin hash & index.
* @param {Hash} hash - Orphan transaction hash. * @param {Buffer} spender - Spender input hash and index.
* @param {Number} index - Orphan input index.
* @param {Function} callback - Returns [Error, Buffer]. * @param {Function} callback - Returns [Error, Buffer].
*/ */
TXDB.prototype._addOrphan = function _addOrphan(hash, index, outpoint, callback) { TXDB.prototype._addOrphan = function _addOrphan(prevout, spender, callback) {
var self = this; var self = this;
var p = new BufferWriter(); var p = new BufferWriter();
var key = this.key.o(hash, index); var key = this.key.o(prevout.hash, prevout.index);
this.get(key, function(err, data) { this.get(key, function(err, data) {
if (err) if (err)
@ -501,7 +500,7 @@ TXDB.prototype._addOrphan = function _addOrphan(hash, index, outpoint, callback)
if (data) if (data)
p.writeBytes(data); p.writeBytes(data);
p.writeBytes(outpoint); p.writeBytes(spender);
self.put(key, p.render()); self.put(key, p.render());
@ -512,7 +511,8 @@ TXDB.prototype._addOrphan = function _addOrphan(hash, index, outpoint, callback)
/** /**
* Retrieve orphan list by coin ID. * Retrieve orphan list by coin ID.
* @private * @private
* @param {String} key * @param {Hash} hash
* @param {Number} index
* @param {Function} callback - Returns [Error, {@link Orphan}]. * @param {Function} callback - Returns [Error, {@link Orphan}].
*/ */
@ -767,7 +767,7 @@ TXDB.prototype.add = function add(tx, info, callback) {
// Consume unspent money or add orphans // Consume unspent money or add orphans
utils.forEachSerial(tx.inputs, function(input, next, i) { utils.forEachSerial(tx.inputs, function(input, next, i) {
var prevout = input.prevout; var prevout = input.prevout;
var key, address, outpoint; var key, address, spender;
if (tx.isCoinbase()) if (tx.isCoinbase())
return next(); return next();
@ -782,12 +782,12 @@ TXDB.prototype.add = function add(tx, info, callback) {
key = prevout.hash + prevout.index; key = prevout.hash + prevout.index;
// s/[outpoint-key] -> [spender-hash]|[spender-input-index] // s/[outpoint-key] -> [spender-hash]|[spender-input-index]
outpoint = bcoin.outpoint.fromTX(tx, i).toRaw(); spender = bcoin.outpoint.fromTX(tx, i).toRaw();
self.put(self.key.s(prevout.hash, prevout.index), outpoint); self.put(self.key.s(prevout.hash, prevout.index), spender);
// Add orphan, if no parent transaction is yet known // Add orphan, if no parent transaction is yet known
if (!input.coin) if (!input.coin)
return self._addOrphan(prevout.hash, prevout.index, outpoint, next); return self._addOrphan(prevout, spender, next);
self.del(self.key.c(prevout.hash, prevout.index)); self.del(self.key.c(prevout.hash, prevout.index));
self.del(self.key.C(path.account, prevout.hash, prevout.index)); self.del(self.key.C(path.account, prevout.hash, prevout.index));