UNPKG

wallet-validator

Version:

Fast Wallet address validator for Bitcoin and other Altcoins.

36 lines (28 loc) 869 B
var CRC = require('crc'); var cbor = require('./crypto/cbor'); var base58 = require('./crypto/base58'); function getDecoded(address) { try { var decoded = base58.decode(address); return cbor.decode(new Uint8Array(decoded).buffer); } catch (e) { // if decoding fails, assume invalid address return null; } } module.exports = { isValidAddress: function (address) { var decoded = getDecoded(address); if (!decoded || (!Array.isArray(decoded) && decoded.length != 2)) { return false; } var tagged = decoded[0]; var validCrc = decoded[1]; if (typeof (validCrc) != 'number') { return false; } // get crc of the payload var crc = CRC.crc32(tagged); return crc == validCrc; } };