Bitcoin cash uppercase.

This commit is contained in:
Brendon Duncan 2018-08-28 17:18:05 +12:00
commit c2cca3c080
2 changed files with 12 additions and 45 deletions

View file

@ -96,49 +96,6 @@
}
return result;
}
function isValidCashAddr(address, network) {
var a = address.replace('bitcoincash:', '');
var result = {};
if (a[0] == '1') {
result = Address.fromString(a, 'livenet', 'pubkeyhash');
} else if (a[0] == '3') {
result = Address.fromString(a, 'livenet', 'scripthash');
} else if (a[0] == 'C') {
result = Address.fromString(a, 'livenet', 'pubkeyhash', BitpayFormat);
} else if (a[0] == 'H') {
result = Address.fromString(a, 'livenet', 'scripthash', BitpayFormat);
} else if (a[0] == 'q') {
result = Address.fromString(address, 'livenet', 'pubkeyhash', CashAddrFormat);
} else if (a[0] == 'p') {
result = Address.fromString(address, 'livenet', 'scripthash', CashAddrFormat);
} else {
return null;
}
var isValid = false;
var prefix = network === 'testnet' ? 'bchtest:' : 'bitcoincash:';
try {
if (cashAddrRe.test(address)) {
// bitcoinCashJs.Address.isValid() assumes legacy address for string data, so does not work with cashaddr.
var bchAddresses = bitcoinCashJsService.readAddress(address.toLowerCase());
if (bchAddresses) {
var legacyAddress = bchAddresses.legacy;
if (bch.Address.isValid(legacyAddress, network)) {
isValid = true;
}
}
}
} catch (e) {
// Nop - Must not be a valid cashAddr.
$log.error('Error validating address.', e);
}
console.log(address,'isValidCashAddr:', isValid);
return isValid;
}
/*
@ -170,7 +127,7 @@
// Need to do testnet, and copay too
*/
// bitcoincash:?r=https://bitpay.com/i/GLRoZMZxaWBqLqpoXexzoD
function parse(uri) {
var parsed = {
isValid: false

View file

@ -162,10 +162,20 @@ fdescribe('bitcoinUriService', function() {
expect(parsed.testnet).toBe(true);
});
it('cashAddr uppercase', function() {
var parsed = bitcoinUriService.parse('BITCOINCASH:QZZG9NMC5VX8GAP6XFATX3TWNSDN2YRMCSSULSMY44');
expect(parsed.isValid).toBe(true);
expect(parsed.address).toBe('qzzg9nmc5vx8gap6xfatx3twnsdn2yrmcssulsmy44');
expect(parsed.coin).toBe('bch');
expect(parsed.legacyAddress).toBe('1D5euC1yUbHiNpXreQrUUYt7LNevD3cviR');
expect(parsed.testnet).toBe(false);
});
it('cashAddr with prefix', function() {
var parsed = bitcoinUriService.parse('bitcoincash:qrq9p82a247lecv08ldk5p5h6ahtnjzpqcnh8yhq92');
console.log('parsed:', JSON.stringify(parsed));
expect(parsed.isValid).toBe(true);
expect(parsed.address).toBe('qrq9p82a247lecv08ldk5p5h6ahtnjzpqcnh8yhq92');