multicoin-address-validator-ts
Version:
Multicoin address validator for Bitcoin and other Altcoins. TS version
29 lines (28 loc) • 1.03 kB
JavaScript
;
var bech32 = require('./crypto/bech32');
// bip 173 bech 32 addresses (https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki)
module.exports = {
isValidAddress: function (address, currency, opts) {
if (opts === void 0) { opts = {}; }
var _a = opts.networkType, networkType = _a === void 0 ? 'prod' : _a;
var decoded = bech32.decode(address, bech32.encodings.BECH32);
if (!decoded) {
return false;
}
var bech32Hrp = decoded.hrp;
var correctBech32Hrps;
if (networkType === 'prod' || networkType === 'testnet') {
correctBech32Hrps = currency.bech32Hrp[networkType];
}
else if (currency.bech32Hrp) {
correctBech32Hrps = currency.bech32Hrp.prod.concat(currency.bech32Hrp.testnet);
}
else {
return false;
}
if (correctBech32Hrps.indexOf(bech32Hrp) === -1) {
return false;
}
return true;
}
};