Browse Source

Improved cashaddr translation.

master
Emilio Almansi 7 years ago
parent
commit
8b59e7962d
  1. 30
      src/address.js

30
src/address.js

@ -346,13 +346,29 @@ Address._transformStringBitpay = function(data, network, type) {
* @private
*/
Address._transformStringCashAddr = function(data, network, type) {
network = network || 'mainnet';
type = type || Address.PayToPublicKeyHash;
var networkObject = Networks.get(network);
$.checkArgument(networkObject, 'Invalid network.');
$.checkArgument(type in networkObject, 'Invalid type.');
var version = new Buffer([networkObject[type]]);
var hashBuffer = new Buffer(cashaddr.decode(data).hash);
if (!(typeof network === 'string')) {
network = network.toString();
}
var decoded = cashaddr.decode(data);
$.checkArgument(
!network ||
(network === 'livenet' && decoded.prefix === 'bitcoincash') ||
(network === 'testnet' && decoded.prefix === 'bchtest'),
'Invalid network.'
);
$.checkArgument(
!type ||
(type === Address.PayToPublicKeyHash && decoded.type === 'P2PKH') ||
(type === Address.PayToScriptHash && decoded.type === 'P2SH'),
'Invalid type.'
);
network = Networks.get(network ||
(decoded.prefix === 'bitcoincash' ? 'livenet' : 'testnet')
);
type = type ||
(decoded.type === 'P2PKH' ? Address.PayToPublicKeyHash : Address.PayToScriptHash);
var version = new Buffer([network[type]]);
var hashBuffer = new Buffer(decoded.hash);
var addressBuffer = Buffer.concat([version, hashBuffer]);
return Address._transformBuffer(addressBuffer, network, type);
};

Loading…
Cancel
Save