diff --git a/src/address.js b/src/address.js index ccc1ad2..11ea291 100644 --- a/src/address.js +++ b/src/address.js @@ -133,7 +133,7 @@ class Address { * @api Address.toEcashAddress() toEcashAddress() * @apiName toEcashAddress * @apiGroup Address - * @apiDescription Convert legacy to cashAddress format + * @apiDescription Convert legacy to eCash (XEC) format * * @apiExample Example usage: * // mainnet @@ -158,6 +158,35 @@ class Address { return ecashAddress.split(':')[1] } + /** + * @api Address.toEtokenAddress() toEtokenAddress() + * @apiName toEtokenAddress + * @apiGroup Address + * @apiDescription Convert legacy to eToken (XEC) format + * + * @apiExample Example usage: + * // mainnet + * bchjs.Address.toEcashAddress('bitcoincash:qq50d800hgunr8u4trz3uuppspk3mds0dy9978plt2') + * // ecash:qq50d800hgunr8u4trz3uuppspk3mds0dyug2v69da + * + * // mainnet no prefix + * bchjs.Address.toEcashAddress('bitcoincash:qq50d800hgunr8u4trz3uuppspk3mds0dy9978plt2', false) + * // qq50d800hgunr8u4trz3uuppspk3mds0dyug2v69da + * + */ + toEtokenAddress (address, prefix = true) { + const decoded = this._decode(address) + + const etokenAddress = cashaddr.encode( + 'etoken', + decoded.type, + decoded.hash + ) + + if (prefix) return etokenAddress + return etokenAddress.split(':')[1] + } + /** * @api Address.ecashtoCashAddress() ecashtoCashAddress() * @apiName ecashtoCashAddress diff --git a/test/unit/address.js b/test/unit/address.js index d2e5524..198d45c 100644 --- a/test/unit/address.js +++ b/test/unit/address.js @@ -935,4 +935,44 @@ describe('#address.js', () => { }) }) }) + + describe('#toEcashAddress', () => { + it('should convert a BCH address to an eCash address', () => { + const cashAddr = 'bitcoincash:qr24z7q6s26d9wr078lr2pxsmxg22cyn9s7yw984vk' + + const result = bchjs.Address.toEcashAddress(cashAddr) + // console.log('result: ', result) + + assert.equal(result, 'ecash:qr24z7q6s26d9wr078lr2pxsmxg22cyn9s8f6wu02p') + }) + + it('should convert a BCH address to an eCash address without a prefix', () => { + const cashAddr = 'bitcoincash:qr24z7q6s26d9wr078lr2pxsmxg22cyn9s7yw984vk' + + const result = bchjs.Address.toEcashAddress(cashAddr, false) + // console.log('result: ', result) + + assert.equal(result, 'qr24z7q6s26d9wr078lr2pxsmxg22cyn9s8f6wu02p') + }) + }) + + describe('#toEtokenAddress', () => { + it('should convert a BCH address to an eToken address', () => { + const cashAddr = 'bitcoincash:qr24z7q6s26d9wr078lr2pxsmxg22cyn9s7yw984vk' + + const result = bchjs.Address.toEtokenAddress(cashAddr) + // console.log('result: ', result) + + assert.equal(result, 'etoken:qr24z7q6s26d9wr078lr2pxsmxg22cyn9sfhnv2gwk') + }) + + it('should convert a BCH address to an eToken address without a prefix', () => { + const cashAddr = 'bitcoincash:qr24z7q6s26d9wr078lr2pxsmxg22cyn9s7yw984vk' + + const result = bchjs.Address.toEtokenAddress(cashAddr, false) + // console.log('result: ', result) + + assert.equal(result, 'qr24z7q6s26d9wr078lr2pxsmxg22cyn9sfhnv2gwk') + }) + }) })