address/wallet: refactor usage of Address.getHash.
This commit is contained in:
parent
e8fd4db0d6
commit
46b34677f1
@ -1120,9 +1120,6 @@ ChainDB.prototype.getCoinsByAddress = co(function* getCoinsByAddress(addresses)
|
|||||||
address = addresses[i];
|
address = addresses[i];
|
||||||
hash = Address.getHash(address);
|
hash = Address.getHash(address);
|
||||||
|
|
||||||
if (!hash)
|
|
||||||
throw new Error('Not an address.');
|
|
||||||
|
|
||||||
keys = yield this.db.keys({
|
keys = yield this.db.keys({
|
||||||
gte: layout.C(hash, encoding.ZERO_HASH, 0),
|
gte: layout.C(hash, encoding.ZERO_HASH, 0),
|
||||||
lte: layout.C(hash, encoding.MAX_HASH, 0xffffffff),
|
lte: layout.C(hash, encoding.MAX_HASH, 0xffffffff),
|
||||||
|
|||||||
@ -552,10 +552,6 @@ Mempool.prototype.getCoinsByAddress = function getCoinsByAddress(addresses) {
|
|||||||
|
|
||||||
for (i = 0; i < addresses.length; i++) {
|
for (i = 0; i < addresses.length; i++) {
|
||||||
hash = Address.getHash(addresses[i], 'hex');
|
hash = Address.getHash(addresses[i], 'hex');
|
||||||
|
|
||||||
if (!hash)
|
|
||||||
throw new Error('Not an address.');
|
|
||||||
|
|
||||||
coin = this.coinIndex.get(hash);
|
coin = this.coinIndex.get(hash);
|
||||||
|
|
||||||
for (j = 0; j < coin.length; j++)
|
for (j = 0; j < coin.length; j++)
|
||||||
@ -580,10 +576,6 @@ Mempool.prototype.getTXByAddress = function getTXByAddress(addresses) {
|
|||||||
|
|
||||||
for (i = 0; i < addresses.length; i++) {
|
for (i = 0; i < addresses.length; i++) {
|
||||||
hash = Address.getHash(addresses[i], 'hex');
|
hash = Address.getHash(addresses[i], 'hex');
|
||||||
|
|
||||||
if (!hash)
|
|
||||||
throw new Error('Not an address.');
|
|
||||||
|
|
||||||
tx = this.txIndex.get(hash);
|
tx = this.txIndex.get(hash);
|
||||||
|
|
||||||
for (j = 0; j < tx.length; j++)
|
for (j = 0; j < tx.length; j++)
|
||||||
@ -608,10 +600,6 @@ Mempool.prototype.getMetaByAddress = function getMetaByAddress(addresses) {
|
|||||||
|
|
||||||
for (i = 0; i < addresses.length; i++) {
|
for (i = 0; i < addresses.length; i++) {
|
||||||
hash = Address.getHash(addresses[i], 'hex');
|
hash = Address.getHash(addresses[i], 'hex');
|
||||||
|
|
||||||
if (!hash)
|
|
||||||
throw new Error('Not an address.');
|
|
||||||
|
|
||||||
tx = this.txIndex.getMeta(hash);
|
tx = this.txIndex.getMeta(hash);
|
||||||
|
|
||||||
for (j = 0; j < tx.length; j++)
|
for (j = 0; j < tx.length; j++)
|
||||||
|
|||||||
@ -3375,7 +3375,6 @@ Pool.prototype.sendFilterLoad = function sendFilterLoad() {
|
|||||||
|
|
||||||
Pool.prototype.watchAddress = function watchAddress(address) {
|
Pool.prototype.watchAddress = function watchAddress(address) {
|
||||||
var hash = Address.getHash(address);
|
var hash = Address.getHash(address);
|
||||||
assert(hash, 'Bad address.');
|
|
||||||
this.watch(hash);
|
this.watch(hash);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -816,29 +816,36 @@ Address.prototype.isUnknown = function isUnknown() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the hash of a base58 address or address-related object.
|
* Get the hash of a base58 address or address-related object.
|
||||||
* @param {Base58Address|Address|Hash} data
|
* @param {String|Address|Hash} data
|
||||||
* @param {String} enc
|
* @param {String?} enc
|
||||||
* @returns {Hash|null}
|
* @param {Network?} network
|
||||||
|
* @returns {Hash}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Address.getHash = function getHash(data, enc) {
|
Address.getHash = function getHash(data, enc, network) {
|
||||||
var hash;
|
var hash;
|
||||||
|
|
||||||
|
if (!data)
|
||||||
|
throw new Error('Object is not an address.');
|
||||||
|
|
||||||
if (typeof data === 'string') {
|
if (typeof data === 'string') {
|
||||||
if (data.length === 40 || data.length === 64)
|
if (data.length === 40 || data.length === 64)
|
||||||
return enc === 'hex' ? data : new Buffer(data, 'hex');
|
return enc === 'hex' ? data : new Buffer(data, 'hex');
|
||||||
|
|
||||||
try {
|
hash = Address.fromString(data, network).hash;
|
||||||
hash = Address.fromString(data).hash;
|
|
||||||
} catch (e) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else if (Buffer.isBuffer(data)) {
|
} else if (Buffer.isBuffer(data)) {
|
||||||
|
if (data.length !== 20 && data.length !== 32)
|
||||||
|
throw new Error('Object is not an address.');
|
||||||
hash = data;
|
hash = data;
|
||||||
} else if (data instanceof Address) {
|
} else if (data instanceof Address) {
|
||||||
hash = data.hash;
|
hash = data.hash;
|
||||||
|
if (network) {
|
||||||
|
network = Network.get(network);
|
||||||
|
if (data.network !== network)
|
||||||
|
throw new Error('Network mismatch for address.');
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return;
|
throw new Error('Object is not an address.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return enc === 'hex'
|
return enc === 'hex'
|
||||||
|
|||||||
@ -266,9 +266,12 @@ TXDB.prototype.values = function values(options) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
TXDB.prototype.getPath = function getPath(output) {
|
TXDB.prototype.getPath = function getPath(output) {
|
||||||
if (!output)
|
var addr = output.getAddress();
|
||||||
|
|
||||||
|
if (!addr)
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
return this.wallet.getPath(output.getAddress());
|
|
||||||
|
return this.wallet.getPath(addr);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -278,9 +281,12 @@ TXDB.prototype.getPath = function getPath(output) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
TXDB.prototype.hasPath = function hasPath(output) {
|
TXDB.prototype.hasPath = function hasPath(output) {
|
||||||
if (!output)
|
var addr = output.getAddress();
|
||||||
return Promise.resolve();
|
|
||||||
return this.wallet.hasPath(output.getAddress());
|
if (!addr)
|
||||||
|
return Promise.resolve(false);
|
||||||
|
|
||||||
|
return this.wallet.hasPath(addr);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2342,7 +2348,11 @@ TXDB.prototype._toDetails = co(function* _toDetails(wtx) {
|
|||||||
|
|
||||||
for (i = 0; i < tx.inputs.length; i++) {
|
for (i = 0; i < tx.inputs.length; i++) {
|
||||||
coin = coins[i];
|
coin = coins[i];
|
||||||
path = yield this.getPath(coin);
|
path = null;
|
||||||
|
|
||||||
|
if (coin)
|
||||||
|
path = yield this.getPath(coin);
|
||||||
|
|
||||||
details.setInput(i, path, coin);
|
details.setInput(i, path, coin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1060,13 +1060,7 @@ Wallet.prototype.commit = function commit() {
|
|||||||
|
|
||||||
Wallet.prototype.hasAddress = co(function* hasAddress(address) {
|
Wallet.prototype.hasAddress = co(function* hasAddress(address) {
|
||||||
var hash = Address.getHash(address, 'hex');
|
var hash = Address.getHash(address, 'hex');
|
||||||
var path;
|
var path = yield this.getPath(hash);
|
||||||
|
|
||||||
if (!hash)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
path = yield this.getPath(hash);
|
|
||||||
|
|
||||||
return path != null;
|
return path != null;
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1100,12 +1094,7 @@ Wallet.prototype.getPath = co(function* getPath(address) {
|
|||||||
|
|
||||||
Wallet.prototype.readPath = co(function* readPath(address) {
|
Wallet.prototype.readPath = co(function* readPath(address) {
|
||||||
var hash = Address.getHash(address, 'hex');
|
var hash = Address.getHash(address, 'hex');
|
||||||
var path;
|
var path = this.pathCache.get(hash);
|
||||||
|
|
||||||
if (!hash)
|
|
||||||
return;
|
|
||||||
|
|
||||||
path = this.pathCache.get(hash);
|
|
||||||
|
|
||||||
if (path)
|
if (path)
|
||||||
return path;
|
return path;
|
||||||
@ -1129,9 +1118,6 @@ Wallet.prototype.readPath = co(function* readPath(address) {
|
|||||||
Wallet.prototype.hasPath = co(function* hasPath(address) {
|
Wallet.prototype.hasPath = co(function* hasPath(address) {
|
||||||
var hash = Address.getHash(address, 'hex');
|
var hash = Address.getHash(address, 'hex');
|
||||||
|
|
||||||
if (!hash)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (this.pathCache.has(hash))
|
if (this.pathCache.has(hash))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
@ -1456,12 +1442,7 @@ Wallet.prototype._fund = co(function* fund(mtx, options) {
|
|||||||
|
|
||||||
Wallet.prototype.getAccountByAddress = co(function* getAccountByAddress(address) {
|
Wallet.prototype.getAccountByAddress = co(function* getAccountByAddress(address) {
|
||||||
var hash = Address.getHash(address, 'hex');
|
var hash = Address.getHash(address, 'hex');
|
||||||
var path;
|
var path = yield this.getPath(hash);
|
||||||
|
|
||||||
if (!hash)
|
|
||||||
return;
|
|
||||||
|
|
||||||
path = yield this.getPath(hash);
|
|
||||||
|
|
||||||
if (!path)
|
if (!path)
|
||||||
return;
|
return;
|
||||||
@ -1478,8 +1459,13 @@ Wallet.prototype.getAccountByAddress = co(function* getAccountByAddress(address)
|
|||||||
Wallet.prototype.estimateSize = co(function* estimateSize(prev) {
|
Wallet.prototype.estimateSize = co(function* estimateSize(prev) {
|
||||||
var scale = consensus.WITNESS_SCALE_FACTOR;
|
var scale = consensus.WITNESS_SCALE_FACTOR;
|
||||||
var address = prev.getAddress();
|
var address = prev.getAddress();
|
||||||
var account = yield this.getAccountByAddress(address);
|
|
||||||
var size = 0;
|
var size = 0;
|
||||||
|
var account;
|
||||||
|
|
||||||
|
if (!address)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
account = yield this.getAccountByAddress(address);
|
||||||
|
|
||||||
if (!account)
|
if (!account)
|
||||||
return -1;
|
return -1;
|
||||||
@ -1666,7 +1652,7 @@ Wallet.prototype._send = co(function* send(options, passphrase) {
|
|||||||
|
|
||||||
Wallet.prototype.increaseFee = co(function* increaseFee(hash, rate, passphrase) {
|
Wallet.prototype.increaseFee = co(function* increaseFee(hash, rate, passphrase) {
|
||||||
var wtx = yield this.getTX(hash);
|
var wtx = yield this.getTX(hash);
|
||||||
var i, tx, mtx, view, oldFee, fee, path, input, output, change;
|
var i, tx, mtx, view, oldFee, fee, path, input, output, change, addr;
|
||||||
|
|
||||||
assert(util.isUInt32(rate), 'Rate must be a number.');
|
assert(util.isUInt32(rate), 'Rate must be a number.');
|
||||||
|
|
||||||
@ -1708,7 +1694,12 @@ Wallet.prototype.increaseFee = co(function* increaseFee(hash, rate, passphrase)
|
|||||||
|
|
||||||
for (i = 0; i < mtx.outputs.length; i++) {
|
for (i = 0; i < mtx.outputs.length; i++) {
|
||||||
output = mtx.outputs[i];
|
output = mtx.outputs[i];
|
||||||
path = yield this.getPath(output.getAddress());
|
addr = output.getAddress();
|
||||||
|
|
||||||
|
if (!addr)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
path = yield this.getPath(addr);
|
||||||
|
|
||||||
if (!path)
|
if (!path)
|
||||||
continue;
|
continue;
|
||||||
@ -1820,12 +1811,8 @@ Wallet.prototype.deriveInputs = co(function* deriveInputs(mtx) {
|
|||||||
|
|
||||||
Wallet.prototype.getKey = co(function* getKey(address) {
|
Wallet.prototype.getKey = co(function* getKey(address) {
|
||||||
var hash = Address.getHash(address, 'hex');
|
var hash = Address.getHash(address, 'hex');
|
||||||
var path, account;
|
var path = yield this.getPath(hash);
|
||||||
|
var account;
|
||||||
if (!hash)
|
|
||||||
return;
|
|
||||||
|
|
||||||
path = yield this.getPath(hash);
|
|
||||||
|
|
||||||
if (!path)
|
if (!path)
|
||||||
return;
|
return;
|
||||||
@ -1848,12 +1835,8 @@ Wallet.prototype.getKey = co(function* getKey(address) {
|
|||||||
|
|
||||||
Wallet.prototype.getPrivateKey = co(function* getPrivateKey(address, passphrase) {
|
Wallet.prototype.getPrivateKey = co(function* getPrivateKey(address, passphrase) {
|
||||||
var hash = Address.getHash(address, 'hex');
|
var hash = Address.getHash(address, 'hex');
|
||||||
var path, account, key;
|
var path = yield this.getPath(hash);
|
||||||
|
var account, key;
|
||||||
if (!hash)
|
|
||||||
return;
|
|
||||||
|
|
||||||
path = yield this.getPath(hash);
|
|
||||||
|
|
||||||
if (!path)
|
if (!path)
|
||||||
return;
|
return;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user