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 * @private
*/ */
Address._transformStringCashAddr = function(data, network, type) { Address._transformStringCashAddr = function(data, network, type) {
network = network || 'mainnet'; if (!(typeof network === 'string')) {
type = type || Address.PayToPublicKeyHash; network = network.toString();
var networkObject = Networks.get(network); }
$.checkArgument(networkObject, 'Invalid network.'); var decoded = cashaddr.decode(data);
$.checkArgument(type in networkObject, 'Invalid type.'); $.checkArgument(
var version = new Buffer([networkObject[type]]); !network ||
var hashBuffer = new Buffer(cashaddr.decode(data).hash); (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]); var addressBuffer = Buffer.concat([version, hashBuffer]);
return Address._transformBuffer(addressBuffer, network, type); return Address._transformBuffer(addressBuffer, network, type);
}; };

Loading…
Cancel
Save