diff --git a/lib/wallet/txdb.js b/lib/wallet/txdb.js index 89c350c7..ff480d11 100644 --- a/lib/wallet/txdb.js +++ b/lib/wallet/txdb.js @@ -2285,7 +2285,7 @@ Balance.prototype.fromRaw = function fromRaw(data) { var p = new BufferReader(data); this.unconfirmed = p.readU53(); this.confirmed = p.readU53(); - this.total += this.unconfirmed + this.total += this.unconfirmed; this.total += this.confirmed; return this; }; @@ -2344,12 +2344,17 @@ TXDBState.prototype.commit = function commit() { return this.toRaw(); }; -TXDBState.prototype.toRaw = function toRaw() { - var p = new BufferWriter(); +TXDBState.prototype.toRaw = function toRaw(writer) { + var p = new BufferWriter(writer); + p.writeU64(this.tx); p.writeU64(this.coin); this.balance.toRaw(p); - return p.render(); + + if (!writer) + p = p.render(); + + return p; }; TXDBState.prototype.fromRaw = function fromRaw(data) { @@ -2382,11 +2387,15 @@ TXDBState.prototype.unconfirm = function unconfirm(value) { return this.balance.unconfirm(value); }; -TXDBState.prototype.toJSON = function toJSON() { +TXDBState.prototype.toJSON = function toJSON(minimal) { return { + wid: !minimal ? this.wid : undefined, + id: !minimal ? this.id : undefined, tx: this.tx, coin: this.coin, - balance: this.balance + unconfirmed: utils.btc(this.balance.unconfirmed), + confirmed: utils.btc(this.balance.confirmed), + total: utils.btc(this.balance.total) }; }; diff --git a/lib/wallet/wallet.js b/lib/wallet/wallet.js index b18c7ee2..cb1d60a8 100644 --- a/lib/wallet/wallet.js +++ b/lib/wallet/wallet.js @@ -25,8 +25,6 @@ var WalletKey = require('./walletkey'); var HD = require('../hd/hd'); var Account = require('./account'); var MasterKey = require('./masterkey'); -var Input = require('../primitives/input'); -var Output = require('../primitives/output'); var LRU = require('../utils/lru'); var PathInfo = require('./pathinfo'); @@ -1551,31 +1549,20 @@ Wallet.prototype.getKey = co(function* getKey(address) { /** * Map input addresses to paths. - * @param {TX|Input} tx + * @param {TX} tx * @returns {Promise} - Returns {@link Path}[]. */ Wallet.prototype.getInputPaths = co(function* getInputPaths(tx) { var paths = []; - var hashes = []; - var i, hash, path; + var i, hashes, hash, path; - if (tx instanceof Input) { - if (!tx.coin) - throw new Error('Not all coins available.'); + yield this.fillCoins(tx); - hash = tx.coin.getHash('hex'); + if (!tx.hasCoins()) + throw new Error('Not all coins available.'); - if (hash) - hashes.push(hash); - } else { - yield this.fillCoins(tx); - - if (!tx.hasCoins()) - throw new Error('Not all coins available.'); - - hashes = tx.getInputHashes('hex'); - } + hashes = tx.getInputHashes('hex'); for (i = 0; i < hashes.length; i++) { hash = hashes[i]; @@ -1589,23 +1576,15 @@ Wallet.prototype.getInputPaths = co(function* getInputPaths(tx) { /** * Map output addresses to paths. - * @param {TX|Output} tx + * @param {TX} tx * @returns {Promise} - Returns {@link Path}[]. */ Wallet.prototype.getOutputPaths = co(function* getOutputPaths(tx) { var paths = []; - var hashes = []; + var hashes = tx.getOutputHashes('hex'); var i, hash, path; - if (tx instanceof Output) { - hash = tx.getHash('hex'); - if (hash) - hashes.push(hash); - } else { - hashes = tx.getOutputHashes('hex'); - } - for (i = 0; i < hashes.length; i++) { hash = hashes[i]; path = yield this.getPath(hash); @@ -2362,7 +2341,7 @@ Wallet.prototype.inspect = function inspect() { accountDepth: this.accountDepth, token: this.token.toString('hex'), tokenDepth: this.tokenDepth, - state: this.state ? this.state.toJSON() : null, + state: this.state ? this.state.toJSON(true) : null, master: this.master, account: this.account }; @@ -2385,7 +2364,7 @@ Wallet.prototype.toJSON = function toJSON() { accountDepth: this.accountDepth, token: this.token.toString('hex'), tokenDepth: this.tokenDepth, - balance: this.balance.toJSON(true), + state: this.state.toJSON(true), master: this.master.toJSON(), account: this.account ? this.account.toJSON(true) : null }; diff --git a/migrate/walletdb3to4.js b/migrate/walletdb3to4.js index 1d320e5a..9c4e4d27 100644 --- a/migrate/walletdb3to4.js +++ b/migrate/walletdb3to4.js @@ -96,7 +96,9 @@ var updateStates = co(function* updateStates() { wallets = yield db.keys({ gte: layout.w(0), lte: layout.w(0xffffffff), - parse: layout.pre + parse: function(key) { + return key.readUInt32LE(1, true); + } }); console.log('Updating states...');