wallet: path version and type.

This commit is contained in:
Christopher Jeffrey 2016-10-04 12:30:44 -07:00
parent 2c066ddce1
commit dd7ccd40db
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
2 changed files with 71 additions and 16 deletions

View File

@ -666,6 +666,44 @@ Account.prototype.setDepth = co(function* setDepth(receiveDepth, changeDepth, ne
return receive || nested; return receive || nested;
}); });
/**
* Get witness version for a path.
* @param {Path}
* @returns {Number}
*/
Account.prototype.getWitnessVersion = function getWitnessVersion(path) {
if (!this.witness)
return -1;
if (path.branch === 2)
return -1;
return 0;
};
/**
* Get address type for a path.
* @param {Path} path
* @returns {Number}
*/
Account.prototype.getAddressType = function getAddressType(path) {
if (path.branch === 2)
return Script.types.SCRIPTHASH;
if (this.witness) {
if (this.type === Acount.types.MULTISIG)
return Script.types.WITNESSSCRIPTHASH;
return Script.types.WITNESSPUBKEYHASH;
}
if (this.type === Acount.types.MULTISIG)
return Script.types.SCRIPTHASH;
return Script.types.PUBKEYHASH;
};
/** /**
* Convert the account to a more inspection-friendly object. * Convert the account to a more inspection-friendly object.
* @returns {Object} * @returns {Object}

View File

@ -1071,6 +1071,14 @@ Wallet.prototype.getPath = co(function* getPath(address) {
path.id = this.id; path.id = this.id;
path.name = yield this.getAccountName(path.account); path.name = yield this.getAccountName(path.account);
assert(path.name);
// account = yield this.getAccount(path.account);
// assert(account);
// path.name = account.name;
// path.version = account.getWitnessVersion(path);
// path.type = account.getAddressType(path);
this.pathCache.set(hash, path); this.pathCache.set(hash, path);
return path; return path;
@ -1083,23 +1091,32 @@ Wallet.prototype.getPath = co(function* getPath(address) {
*/ */
Wallet.prototype.getPaths = co(function* getPaths(acct) { Wallet.prototype.getPaths = co(function* getPaths(acct) {
var out = []; var index = yield this.ensureIndex(acct);
var i, account, paths, path; var paths = yield this.db.getWalletPaths(this.wid);
var result = [];
account = yield this._getIndex(acct); var i, path;
paths = yield this.db.getWalletPaths(this.wid);
for (i = 0; i < paths.length; i++) { for (i = 0; i < paths.length; i++) {
path = paths[i]; path = paths[i];
if (!account || path.account === account) { if (index == null || path.account === index) {
path.id = this.id; path.id = this.id;
path.name = yield this.getAccountName(path.account); path.name = yield this.getAccountName(path.account);
assert(path.name);
// account = yield this.getAccount(path.account);
// assert(account);
// path.name = account.name;
// path.version = account.getWitnessVersion(path);
// path.type = account.getAddressType(path);
this.pathCache.set(path.hash, path); this.pathCache.set(path.hash, path);
out.push(path);
result.push(path);
} }
} }
return out; return result;
}); });
/** /**
@ -1899,7 +1916,7 @@ Wallet.prototype.zap = co(function* zap(acct, age) {
*/ */
Wallet.prototype._zap = co(function* zap(acct, age) { Wallet.prototype._zap = co(function* zap(acct, age) {
var account = yield this._getIndex(acct); var account = yield this.ensureIndex(acct);
return yield this.txdb.zap(account, age); return yield this.txdb.zap(account, age);
}); });
@ -1957,7 +1974,7 @@ Wallet.prototype.getPathInfo = co(function* getPathInfo(tx) {
*/ */
Wallet.prototype.getHistory = co(function* getHistory(acct) { Wallet.prototype.getHistory = co(function* getHistory(acct) {
var account = yield this._getIndex(acct); var account = yield this.ensureIndex(acct);
return this.txdb.getHistory(account); return this.txdb.getHistory(account);
}); });
@ -1968,7 +1985,7 @@ Wallet.prototype.getHistory = co(function* getHistory(acct) {
*/ */
Wallet.prototype.getCoins = co(function* getCoins(acct) { Wallet.prototype.getCoins = co(function* getCoins(acct) {
var account = yield this._getIndex(acct); var account = yield this.ensureIndex(acct);
return yield this.txdb.getCoins(account); return yield this.txdb.getCoins(account);
}); });
@ -1979,7 +1996,7 @@ Wallet.prototype.getCoins = co(function* getCoins(acct) {
*/ */
Wallet.prototype.getUnconfirmed = co(function* getUnconfirmed(acct) { Wallet.prototype.getUnconfirmed = co(function* getUnconfirmed(acct) {
var account = yield this._getIndex(acct); var account = yield this.ensureIndex(acct);
return yield this.txdb.getUnconfirmed(account); return yield this.txdb.getUnconfirmed(account);
}); });
@ -1990,7 +2007,7 @@ Wallet.prototype.getUnconfirmed = co(function* getUnconfirmed(acct) {
*/ */
Wallet.prototype.getBalance = co(function* getBalance(acct) { Wallet.prototype.getBalance = co(function* getBalance(acct) {
var account = yield this._getIndex(acct); var account = yield this.ensureIndex(acct);
return yield this.txdb.getBalance(account); return yield this.txdb.getBalance(account);
}); });
@ -2009,7 +2026,7 @@ Wallet.prototype.getRange = co(function* getRange(acct, options) {
options = acct; options = acct;
acct = null; acct = null;
} }
account = yield this._getIndex(acct); account = yield this.ensureIndex(acct);
return yield this.txdb.getRange(account, options); return yield this.txdb.getRange(account, options);
}); });
@ -2021,7 +2038,7 @@ Wallet.prototype.getRange = co(function* getRange(acct, options) {
*/ */
Wallet.prototype.getLast = co(function* getLast(acct, limit) { Wallet.prototype.getLast = co(function* getLast(acct, limit) {
var account = yield this._getIndex(acct); var account = yield this.ensureIndex(acct);
return yield this.txdb.getLast(account, limit); return yield this.txdb.getLast(account, limit);
}); });
@ -2033,7 +2050,7 @@ Wallet.prototype.getLast = co(function* getLast(acct, limit) {
* @returns {Promise} * @returns {Promise}
*/ */
Wallet.prototype._getIndex = co(function* _getIndex(acct) { Wallet.prototype.ensureIndex = co(function* ensureIndex(acct) {
var index; var index;
if (acct == null) if (acct == null)