UNPKG

multicoin-address-validator-ts

Version:

Multicoin address validator for Bitcoin and other Altcoins. TS version

32 lines (31 loc) 941 B
"use strict"; var base58 = require('./crypto/base58'); var cryptoUtils = require('./crypto/utils'); var prefix = new Uint8Array([6, 161, 159]); function decodeRaw(buffer) { var payload = buffer.slice(0, -4); var checksum = buffer.slice(-4); var newChecksum = cryptoUtils.hexStr2byteArray(cryptoUtils.sha256x2(cryptoUtils.byteArray2hexStr(payload))); if (checksum[0] ^ newChecksum[0] | checksum[1] ^ newChecksum[1] | checksum[2] ^ newChecksum[2] | checksum[3] ^ newChecksum[3]) return; return payload; } var isValidAddress = function (address) { try { var buffer = base58.decode(address); var payload = decodeRaw(buffer); if (!payload) return false; payload.slice(prefix.length); return true; } catch (e) { return false; } }; module.exports = { isValidAddress: isValidAddress };