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)
* to orphan list. Stored by its required coin ID.
* @private
* @param {String} key - Required coin hash + index.
* @param {Hash} hash - Orphan transaction hash.
* @param {Number} index - Orphan input index.
* @param {Outpoint} prevout - Required coin hash & index.
* @param {Buffer} spender - Spender input hash and index.
* @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 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) {
if (err)
@ -501,7 +500,7 @@ TXDB.prototype._addOrphan = function _addOrphan(hash, index, outpoint, callback)
if (data)
p.writeBytes(data);
p.writeBytes(outpoint);
p.writeBytes(spender);
self.put(key, p.render());
@ -512,7 +511,8 @@ TXDB.prototype._addOrphan = function _addOrphan(hash, index, outpoint, callback)
/**
* Retrieve orphan list by coin ID.
* @private
* @param {String} key
* @param {Hash} hash
* @param {Number} index
* @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
utils.forEachSerial(tx.inputs, function(input, next, i) {
var prevout = input.prevout;
var key, address, outpoint;
var key, address, spender;
if (tx.isCoinbase())
return next();
@ -782,12 +782,12 @@ TXDB.prototype.add = function add(tx, info, callback) {
key = prevout.hash + prevout.index;
// s/[outpoint-key] -> [spender-hash]|[spender-input-index]
outpoint = bcoin.outpoint.fromTX(tx, i).toRaw();
self.put(self.key.s(prevout.hash, prevout.index), outpoint);
spender = bcoin.outpoint.fromTX(tx, i).toRaw();
self.put(self.key.s(prevout.hash, prevout.index), spender);
// Add orphan, if no parent transaction is yet known
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(path.account, prevout.hash, prevout.index));