From 77ce329a2e737f46fab4dbc841f72c8e5b0869d2 Mon Sep 17 00:00:00 2001 From: alex nicolae Date: Sun, 2 Sep 2018 01:05:08 +0300 Subject: [PATCH 1/5] Added currencies TokenPay(TPAY) and Verge(XVG) --- src/currencies.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/currencies.js b/src/currencies.js index bed7bc64..dd2f1037 100644 --- a/src/currencies.js +++ b/src/currencies.js @@ -156,6 +156,14 @@ var CURRENCIES = [{ name: 'qtum', symbol: 'qtum', addressTypes: {prod: ['3a', '32'], testnet: ['6f', 'c4']} +},{ + name: 'tokenpay', + symbol: 'tpay', + addressTypes: {prod: ['41', '7e'], testnet: []} +},{ + name: 'verge', + symbol: 'xvg', + addressTypes: {prod: ['1e', '33'], testnet: ['6f', 'c4']} }]; From 4f22f9815e7674e2f50349d4aff74dbf08a6339a Mon Sep 17 00:00:00 2001 From: alex nicolae Date: Tue, 9 Apr 2019 13:57:31 +0300 Subject: [PATCH 2/5] Added TokenPay Testnet --- src/currencies.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/currencies.js b/src/currencies.js index dd2f1037..034de5e9 100644 --- a/src/currencies.js +++ b/src/currencies.js @@ -159,7 +159,7 @@ var CURRENCIES = [{ },{ name: 'tokenpay', symbol: 'tpay', - addressTypes: {prod: ['41', '7e'], testnet: []} + addressTypes: {prod: ['41', '7e'], testnet: ['7f', 'c4']} },{ name: 'verge', symbol: 'xvg', @@ -167,6 +167,7 @@ var CURRENCIES = [{ }]; + module.exports = { getByNameOrSymbol: function (currencyNameOrSymbol) { var nameOrSymbol = currencyNameOrSymbol.toLowerCase(); From f820f90cf66998598d639f898afe15737d65e427 Mon Sep 17 00:00:00 2001 From: alex nicolae Date: Tue, 9 Apr 2019 17:48:20 +0300 Subject: [PATCH 3/5] Added tests for TPAY and XVG --- test/wallet_address_validator.js | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/test/wallet_address_validator.js b/test/wallet_address_validator.js index 0cf857e9..f35d80e6 100644 --- a/test/wallet_address_validator.js +++ b/test/wallet_address_validator.js @@ -327,6 +327,17 @@ describe('WAValidator.validate()', function () { valid('RAvj2KKVUohTu3hVdNJ4U6hQi7TNawpacH', 'KMD'); //valid('t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'komodo', 'testnet'); }); + + it('should return true for correct tokenpay addresses', function () { + valid('TTU9AFbvNcUfyUC3JLcXGKnMncsPJzViyj', 'tokenpay'); + valid('TYpb6GJDjchpi3GfwZfcLHA2jfWP6kXEMC', 'TPAY'); + valid('tC3qX5M25NJhUnhJpcFHaxLkQJjyHGBzqf', 'tokenpay', 'testnet'); + }); + + it('should return true for correct verge addresses', function () { + valid('DSePg1kfKC1Pr8FCf52tM7K6Mrg5CB29xT', 'verge'); + valid('D7JLwcCtZRyJzEuCnhocc1gDCXqoWb5KL1', 'XVG'); + }); }); describe('invalid results', function () { @@ -510,6 +521,18 @@ describe('WAValidator.validate()', function () { invalid('RAYj2KKVUohTu3hVdNJ4U6hQi7TNawpacH', 'KMD'); //invalid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'komodo', 'testnet'); }); - + + it('should return false for incorrect tokenpay addresses', function () { + commonTests('tokenpay'); + invalid('TTU9AFbvNcUfyUC3JLcXGKnMncsPJzViyk', 'tokenpay'); + invalid('TYpb6GJDjchpi3GfwZfcLHA2jfWP6kXEMd', 'TPAY'); + invalid('tC3qX5M25NJhUnhJpcFHaxLkQJjyHGBzqf', 'tokenpay', 'testnet'); + }); + + it('should return false for incorrect verge addresses', function () { + commonTests('verge'); + invalid('DSePg1kfKC1Pr8FCf52tM7K6Mrg5CB29xs', 'verge'); + invalid('D7JLwcCtZRyJzEuCnhocc1gDCXqoWb5KL5', 'XVG'); + }); }); }); From af21157cc3693ea468030ced3dd88cea9c66b4d0 Mon Sep 17 00:00:00 2001 From: alex nicolae Date: Tue, 9 Apr 2019 17:57:20 +0300 Subject: [PATCH 4/5] Merge conflicts --- src/currencies.js | 119 +++++++++++++++++++++-------- test/wallet_address_validator.js | 127 ++++++++++++++++++++++++++----- 2 files changed, 194 insertions(+), 52 deletions(-) diff --git a/src/currencies.js b/src/currencies.js index 034de5e9..a15324a7 100644 --- a/src/currencies.js +++ b/src/currencies.js @@ -1,125 +1,156 @@ var XRPValidator = require('./ripple_validator'); var ETHValidator = require('./ethereum_validator'); +var BTCValidator = require('./bitcoin_validator'); +var XMRValidator = require('./monero_validator'); +var NANOValidator = require('./nano_validator'); // defines P2PKH and P2SH address types for standard (prod) and testnet networks var CURRENCIES = [{ name: 'bitcoin', symbol: 'btc', - addressTypes: {prod: ['00', '05'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['00', '05'], testnet: ['6f', 'c4']}, + validator: BTCValidator },{ name: 'bitcoincash', symbol: 'bch', - addressTypes: {prod: ['00', '05'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['00', '05'], testnet: ['6f', 'c4']}, + validator: BTCValidator },{ name: 'litecoin', symbol: 'ltc', - addressTypes: {prod: ['30', '05', '32'], testnet: ['6f', 'c4', '3a']} + addressTypes: {prod: ['30', '05', '32'], testnet: ['6f', 'c4', '3a']}, + validator: BTCValidator },{ name: 'peercoin', symbol: 'ppc', - addressTypes: {prod: ['37', '75'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['37', '75'], testnet: ['6f', 'c4']}, + validator: BTCValidator },{ name: 'dogecoin', symbol: 'doge', - addressTypes: {prod: ['1e', '16'], testnet: ['71', 'c4']} + addressTypes: {prod: ['1e', '16'], testnet: ['71', 'c4']}, + validator: BTCValidator },{ name: 'beavercoin', symbol: 'bvc', - addressTypes: {prod: ['19', '05'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['19', '05'], testnet: ['6f', 'c4']}, + validator: BTCValidator, },{ name: 'freicoin', symbol: 'frc', - addressTypes: {prod: ['00', '05'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['00', '05'], testnet: ['6f', 'c4']}, + validator: BTCValidator },{ name: 'protoshares', symbol: 'pts', - addressTypes: {prod: ['38', '05'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['38', '05'], testnet: ['6f', 'c4']}, + validator: BTCValidator },{ name: 'megacoin', symbol: 'mec', - addressTypes: {prod: ['32', '05'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['32', '05'], testnet: ['6f', 'c4']}, + validator: BTCValidator },{ name: 'primecoin', symbol: 'xpm', - addressTypes: {prod: ['17', '53'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['17', '53'], testnet: ['6f', 'c4']}, + validator: BTCValidator },{ name: 'auroracoin', symbol: 'aur', - addressTypes: {prod: ['17', '05'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['17', '05'], testnet: ['6f', 'c4']}, + validator: BTCValidator },{ name: 'namecoin', symbol: 'nmc', - addressTypes: {prod: ['34'], testnet: []} + addressTypes: {prod: ['34'], testnet: []}, + validator: BTCValidator },{ name: 'biocoin', symbol: 'bio', - addressTypes: {prod: ['19', '14'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['19', '14'], testnet: ['6f', 'c4']}, + validator: BTCValidator },{ name: 'garlicoin', symbol: 'grlc', - addressTypes: {prod: ['26', '05'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['26', '05'], testnet: ['6f', 'c4']}, + validator: BTCValidator },{ name: 'vertcoin', symbol: 'vtc', - addressTypes: {prod: ['0x', '47'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['0x', '47'], testnet: ['6f', 'c4']}, + segwitHrp: 'vtc', + validator: BTCValidator },{ name: 'bitcoingold', symbol: 'btg', - addressTypes: {prod: ['26', '17'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['26', '17'], testnet: ['6f', 'c4']}, + validator: BTCValidator },{ name: 'komodo', symbol: 'kmd', - addressTypes: {prod: ['3c', '55'], testnet: ['0','5']} + addressTypes: {prod: ['3c', '55'], testnet: ['0','5']}, + validator: BTCValidator },{ name: 'bitcoinz', symbol: 'btcz', expectedLength: 26, - addressTypes: {prod: ['1cb8','1cbd'], testnet: ['1d25', '1cba']} + addressTypes: {prod: ['1cb8','1cbd'], testnet: ['1d25', '1cba']}, + validator: BTCValidator },{ name: 'bitcoinprivate', symbol: 'btcp', expectedLength: 26, - addressTypes: {prod: ['1325','13af'], testnet: ['1957', '19e0']} + addressTypes: {prod: ['1325','13af'], testnet: ['1957', '19e0']}, + validator: BTCValidator },{ name: 'hush', symbol: 'hush', expectedLength: 26, - addressTypes: {prod: ['1cb8','1cbd'], testnet: ['1d25', '1cba']} + addressTypes: {prod: ['1cb8','1cbd'], testnet: ['1d25', '1cba']}, + validator: BTCValidator },{ name: 'snowgem', symbol: 'sng', expectedLength: 26, - addressTypes: {prod: ['1c28','1c2d'], testnet: ['1d25', '1cba']} + addressTypes: {prod: ['1c28','1c2d'], testnet: ['1d25', '1cba']}, + validator: BTCValidator },{ name: 'zcash', symbol: 'zec', expectedLength: 26, - addressTypes: {prod: ['1cb8','1cbd'], testnet: ['1d25', '1cba']} + addressTypes: {prod: ['1cb8','1cbd'], testnet: ['1d25', '1cba']}, + validator: BTCValidator },{ name: 'zclassic', symbol: 'zcl', expectedLength: 26, - addressTypes: {prod: ['1cb8','1cbd'], testnet: ['1d25', '1cba']} + addressTypes: {prod: ['1cb8','1cbd'], testnet: ['1d25', '1cba']}, + validator: BTCValidator },{ name: 'zencash', symbol: 'zen', expectedLength: 26, - addressTypes: {prod: ['2089','2096'], testnet: ['2092','2098']} + addressTypes: {prod: ['2089','2096'], testnet: ['2092','2098']}, + validator: BTCValidator },{ name: 'votecoin', symbol: 'vot', expectedLength: 26, - addressTypes: {prod: ['1cb8','1cbd'], testnet: ['1d25', '1cba']} + addressTypes: {prod: ['1cb8','1cbd'], testnet: ['1d25', '1cba']}, + validator: BTCValidator },{ name: 'decred', symbol: 'dcr', addressTypes: {prod: ['073f', '071a'], testnet: ['0f21', '0efc']}, hashFunction: 'blake256', - expectedLength: 26 + expectedLength: 26, + validator: BTCValidator },{ name: 'digibyte', symbol: 'dgb', addressTypes: {prod: ['1e'], testnet: []}, + validator: BTCValidator },{ name: 'ethereum', symbol: 'eth', @@ -143,27 +174,51 @@ var CURRENCIES = [{ },{ name: 'dash', symbol: 'dash', - addressTypes: {prod: ['4c', '10'], testnet: ['8c', '13']} + addressTypes: {prod: ['4c', '10'], testnet: ['8c', '13']}, + validator: BTCValidator },{ name: 'neo', symbol: 'neo', - addressTypes: {prod: ['17'], testnet: []} + addressTypes: {prod: ['17'], testnet: []}, + validator: BTCValidator },{ name: 'neogas', symbol: 'gas', - addressTypes: {prod: ['17'], testnet: []} + addressTypes: {prod: ['17'], testnet: []}, + validator: BTCValidator },{ name: 'qtum', symbol: 'qtum', - addressTypes: {prod: ['3a', '32'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['3a', '32'], testnet: ['78', '6e']}, + validator: BTCValidator +},{ + name: 'bankex', + symbol: 'bkx', + validator: ETHValidator +},{ + name: 'monero', + symbol: 'xmr', + addressTypes: {prod: ['18'], testnet: ['53']}, + iAddressTypes: {prod: ['19'], testnet: ['54']}, + validator: XMRValidator +},{ + name: 'nano', + symbol: 'nano', + validator: NANOValidator, +},{ + name: 'raiblocks', + symbol: 'xrb', + validator: NANOValidator },{ name: 'tokenpay', symbol: 'tpay', - addressTypes: {prod: ['41', '7e'], testnet: ['7f', 'c4']} + addressTypes: {prod: ['41', '7e'], testnet: ['7f', 'c4']}, + validator: BTCValidator },{ name: 'verge', symbol: 'xvg', - addressTypes: {prod: ['1e', '33'], testnet: ['6f', 'c4']} + addressTypes: {prod: ['1e', '33'], testnet: ['6f', 'c4']}, + validator: BTCValidator }]; diff --git a/test/wallet_address_validator.js b/test/wallet_address_validator.js index f35d80e6..cd7e0f1b 100644 --- a/test/wallet_address_validator.js +++ b/test/wallet_address_validator.js @@ -36,6 +36,25 @@ describe('WAValidator.validate()', function () { valid('3NJZLcZEEYBpxYEUGewU4knsQRn1WM5Fkt'); valid('3NJZLcZEEYBpxYEUGewU4knsQRn1WM5Fkt', 'bitcoin'); valid('2MxKEf2su6FGAUfCEAHreGFQvEYrfYNHvL7', 'bitcoin', 'testnet'); + + // segwit addresses + valid('BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4', 'bitcoin'); + valid('tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7', 'bitcoin'); + valid('bc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k7grplx', 'bitcoin'); + valid('BC1SW50QA3JX3S', 'bitcoin'); + valid('bc1zw508d6qejxtdg4y5r3zarvaryvg6kdaj', 'bitcoin'); + valid('tb1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesrxh6hy', 'bitcoin'); + + invalid("tc1qw508d6qejxtdg4y5r3zarvary0c5xw7kg3g4ty", 'bitcoin'), + invalid("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t5", 'bitcoin'), + invalid("BC13W508D6QEJXTDG4Y5R3ZARVARY0C5XW7KN40WF2", 'bitcoin'), + invalid("bc1rw5uspcuh", 'bitcoin'), + invalid("bc10w508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7kw5rljs90", 'bitcoin'), + invalid("BC1QR508D6QEJXTDG4Y5R3ZARVARYV98GJ9P", 'bitcoin'), + invalid("tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sL5k7", 'bitcoin'), + invalid("bc1zw508d6qejxtdg4y5r3zarvaryvqyzf3du", 'bitcoin'), + invalid("tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3pjxtptv", 'bitcoin'), + invalid("bc1gmk9yu", 'bitcoin') }); it('should return true for correct bitcoincash addresses', function () { @@ -66,6 +85,7 @@ describe('WAValidator.validate()', function () { valid('3NJZLcZEEYBpxYEUGewU4knsQRn1WM5Fkt', 'litecoin'); valid('2MxKEf2su6FGAUfCEAHreGFQvEYrfYNHvL7', 'litecoin', 'testnet'); valid('QW2SvwjaJU8LD6GSmtm1PHnBG2xPuxwZFy', 'litecoin', 'testnet'); + valid('QjpzxpbLp5pCGsCczMbfh1uhC3P89QZavY', 'litecoin', 'testnet'); }); it('should return true for correct peercoin addresses', function () { @@ -104,7 +124,7 @@ describe('WAValidator.validate()', function () { valid('2MxKEf2su6FGAUfCEAHreGFQvEYrfYNHvL7', 'beavercoin', 'testnet'); }); - it('should return true for correct litecoin freicoin', function () { + it('should return true for correct freicoin addresses', function () { valid('1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa', 'freicoin'); valid('1oNLrsHnBcR6dpaBpwz3LSwutbUNkNSjs', 'freicoin'); valid('1SQHtwR5oJRKLfiWQ2APsAd9miUc4k2ez', 'freicoin'); @@ -196,6 +216,9 @@ describe('WAValidator.validate()', function () { valid('mvww6DEJ18dbyQUukpVQXvLgrNDJazZn1Y', 'vertcoin', 'testnet'); valid('mn3mdEE6cf1snxVsknNz4GRTdSrWXqYp7c', 'VTC', 'testnet'); valid('Vri6Q4GgNFfdtcpxD961TotJwaSaYQCaL5', 'VTC'); + valid('vtc1qmzq3erafwvz23yfeu9tu45uz2kx3d7esk0rayg', 'VTC'); + valid('vtc1qhy8eqwqxpyryz4wctus36yl2uu60t0z6ecrvtc', 'VTC'); + valid('vtc1qh9y09s2crkp63mk26u3vrq9q4w3h8ee8gepjgw', 'VTC'); }); it('should return true for correct BitcoinGold addresses', function () { @@ -271,67 +294,100 @@ describe('WAValidator.validate()', function () { it('should return true for correct qtum addresses', function () { valid('QNjUiD3bVVZwYTc5AhpeQbS1mfb2guyWhe', 'qtum'); valid('QVZnSrMwKp6AL4FjUPPnfFgsma6j1DXQXu', 'QTUM'); - valid('2MxKEf2su6FGAUfCEAHreGFQvEYrfYNHvL7', 'qtum', 'testnet'); + valid('qcSLSxN1sngCWSrKFZ6UC7ri4hhVSdq9SU', 'qtum', 'testnet'); + valid('qbgHcqxXYHVJZXHheGpHwLJsB5epDUtWxe', 'qtum', 'testnet'); + valid('qZqqcqCsVtP2U38WWaUnwshHRpefvCa8hX', 'qtum', 'testnet'); }); - + it('should return true for correct votecoin addresses', function () { valid('t1U9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', 'votecoin'); valid('t3Vz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', 'VOT'); valid('t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'votecoin', 'testnet'); }); - + it('should return true for correct bitcoinz addresses', function () { valid('t1U9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', 'bitcoinz'); valid('t3Vz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', 'BTCZ'); valid('t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'bitcoinz', 'testnet'); }); - + it('should return true for correct zclassic addresses', function () { valid('t1U9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', 'zclassic'); valid('t3Vz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', 'ZCL'); valid('t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'zclassic', 'testnet'); }); - + it('should return true for correct hush addresses', function () { valid('t1U9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', 'hush'); valid('t3Vz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', 'HUSH'); valid('t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'hush', 'testnet'); }); - + it('should return true for correct zcash addresses', function () { valid('t1U9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', 'zcash'); valid('t3Vz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', 'ZEC'); valid('t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'zcash', 'testnet'); }); - + it('should return true for correct bitcoinprivate addresses', function () { valid('b1M4XXPFhwMb1SP33yhzn3h9qWXjujkgep4', 'bitcoinprivate'); //valid('bx....', 'BTCP'); //valid('nx....', 'bitcoinprivate', 'testnet'); }); - + it('should return true for correct snowgem addresses', function () { valid('s1fx7WBkjB4UH6qQjPp6Ysmtr1C1JiTK2Yw', 'snowgem'); valid('s3d27MhkBRt3ha2UuxhjXaYF4DCnttTMnL1', 'SNG'); valid('t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'snowgem', 'testnet'); }); - + it('should return true for correct zencash addresses', function () { valid('znhiGGfYRepxkBjXYvA2kFrXiC351i9ta4z', 'zencash'); valid('zssEdGnZCQ9G86LZFtbynMn1hYTVhn6eYCL', 'ZEN'); valid('ztmWMDLWjbruCJxKmmfAZiT6QAQdiv5F291', 'zencash', 'testnet'); }); - + it('should return true for correct komodo addresses', function () { valid('R9R5HirAzqDcWrWGiJEL115dpV3QB3hobH', 'komodo'); valid('RAvj2KKVUohTu3hVdNJ4U6hQi7TNawpacH', 'KMD'); //valid('t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'komodo', 'testnet'); }); + it('should return true for correct Bankex addresses', function () { + valid('0xeac39e1bc802baae3d4b9cb518f3f60374bbad6c', 'bankex'); + valid('0x45245bc59219eeaaf6cd3f382e078a461ff9de7b', 'BKX'); + valid('0xf40d80FCfa5cdEa0bB1E570c2D52132ac9bC6aEC', 'bankex', 'testnet'); + valid('0x8A7395f281EeCf2B471B689E87Cf4C7fa8bb957d', 'BKX', 'testnet'); + }); + + it('should return true for correct monero addresses', function () { + valid('47zQ5LAivg6hNCgijXSEFVLX7mke1bgM6YGLFaANDoJbgXDymcAAZvvMNt2PmMpqEe5qRy2zyfMYXdwpmdyitiFh84xnPG2', 'monero'); + valid('48bWuoDG75CXMDHbmPEvUF2hm1vLDic7ZJ7hqRkL65QR9p13AQAX4eEACXNk4YP115Q4KRVZnAvmMBHrcGfv9FvKPZnH6vH', 'XMR'); + valid('A2be3UvzMtkJtxRYgcCbQt2y7Rp2eLVGqNTWfZeankrWimSMM4y7uMP6B9oAZaHsXTj8KFSerkSkkVRuEuEca9QM8VhxCNU', 'monero', 'testnet'); + + //integrated addresses + valid('4Gd4DLiXzBmbVX2FZZ3Cvu6fUaWACup1qDowprUCje1kSP4FmbftiJMSfV8kWZXNqmVwj4m52xqtgFNUudVmsmGkGvkLcCibWfVUfUFVB7', 'monero'); + valid('4J5sF94AzXgFgx8LuWc9dcWkJkGkD3cL3L2AuhX6QA9jFvSxxj6QhHqHXqM2b2Go7G8RyDzEbHxYd9G26XUUbuJChipEyBz9fENMU2Ua9b', 'XMR'); + }); + + it('should return true for correct nano addresses', function () { + valid('xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3', 'nano'); + valid('xrb_13ezf4od79h1tgj9aiu4djzcmmguendtjfuhwfukhuucboua8cpoihmh8byo', 'nano'); + valid('xrb_35jjmmmh81kydepzeuf9oec8hzkay7msr6yxagzxpcht7thwa5bus5tomgz9', 'nano'); + valid('xrb_1111111111111111111111111111111111111111111111111111hifc8npp', 'nano'); + valid('xrb_1ipx847tk8o46pwxt5qjdbncjqcbwcc1rrmqnkztrfjy5k7z4imsrata9est', 'nano'); + valid('xrb_3wm37qz19zhei7nzscjcopbrbnnachs4p1gnwo5oroi3qonw6inwgoeuufdp', 'nano'); + valid('xrb_3arg3asgtigae3xckabaaewkx3bzsh7nwz7jkmjos79ihyaxwphhm6qgjps4', 'nano'); + valid('xrb_1f5e4w33ndqbkx4bw5jtp13kp5xghebfxcmw9hdt1f7goid1s4373w6tjmgu', 'nano'); + valid('xrb_1q79ahdr36uqn38p5tp5sqwkn73rnpj1k8obtuetdbjcx37d5gahhd1u9cuh', 'nano'); + valid('nano_1q79ahdr36uqn38p5tp5sqwkn73rnpj1k8obtuetdbjcx37d5gahhd1u9cuh', 'nano'); + }); + it('should return true for correct tokenpay addresses', function () { valid('TTU9AFbvNcUfyUC3JLcXGKnMncsPJzViyj', 'tokenpay'); valid('TYpb6GJDjchpi3GfwZfcLHA2jfWP6kXEMC', 'TPAY'); valid('tC3qX5M25NJhUnhJpcFHaxLkQJjyHGBzqf', 'tokenpay', 'testnet'); + valid('tNLYDkCLm1kpCM7RZbUFFnvWL6t4NvQ5pD', 'TPAY', 'testnet'); }); it('should return true for correct verge addresses', function () { @@ -411,6 +467,9 @@ describe('WAValidator.validate()', function () { it('should return false for incorrect vertcoin addresses', function () { commonTests('vertcoin'); + invalid('vtc1qmzq3erafwvz23yabc9tu45uz2kx3d7esk0rayg', 'vertcoin'); + invalid('vtc1qhy8eqwqxpyryz4wctus36yl2uu60t0z6ecrvt', 'vertcoin'); + invalid('vtd1qhy8eqwqxpyryz4wctus36yl2uu60t0z6ecrvtc', 'vertcoin'); }); it('should return false for incorrect bitcoingold addresses', function () { @@ -421,6 +480,13 @@ describe('WAValidator.validate()', function () { commonTests('decred'); }); + it('should return false for incorrect bankex addresses', function () { + invalid('1SQHtwR5oJRKLfiWQ2APsAd9miUc4k2ez', 'bankex'); + invalid('116CGDLddrZhMrTwhCVJXtXQpxygTT1kHd', 'BKX'); + invalid('mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef', 'bankex', 'testnet'); + invalid('mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef', 'BKX', 'testnet'); + }); + it('should return false for incorrect digibyte addresses', function () { commonTests('digibyte'); }); @@ -458,63 +524,64 @@ describe('WAValidator.validate()', function () { commonTests('qtum'); invalid('QNPhBbVhDghASxcUh2vHotQUgNeLRFTcfb', 'qtum'); invalid('QOPhBbVhDghASxcUh2vHotQUgNeLRFTcfa', 'QTUM'); + invalid('qZqqcqCsVtP2U38ABCUnwshHRpefvCa8hX', 'QTUM', 'testnet'); }); - + it('should return false for incorrect votecoin addresses', function () { commonTests('votecoin'); invalid('t1Y9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', 'votecoin'); invalid('t3Yz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', 'VOT'); invalid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'votecoin', 'testnet'); }); - + it('should return false for incorrect bitcoinz addresses', function () { commonTests('bitcoinz'); invalid('t1Y9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', 'bitcoinz'); invalid('t3Yz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', 'BTCZ'); invalid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'bitcoinz', 'testnet'); }); - + it('should return false for incorrect zclassic addresses', function () { commonTests('zclassic'); invalid('t1Y9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', 'zclassic'); invalid('t3Yz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', 'ZCL'); invalid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'zclassic', 'testnet'); }); - + it('should return false for incorrect hush addresses', function () { invalid('t1Y9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', 'hush'); invalid('t3Yz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', 'HUSH'); invalid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'hush', 'testnet'); }); - + it('should return false for incorrect zcash addresses', function () { commonTests('zcash'); invalid('t1Y9yhDa5XEjgfnTgZoKddeSiEN1aoLkQxq', 'zcash'); invalid('t3Yz22vK5z2LcKEdg16Yv4FFneEL1zg9ojd', 'ZEC'); invalid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'zcash', 'testnet'); }); - + it('should return false for incorrect bitcoinprivate addresses', function () { commonTests('bitcoinprivate'); invalid('b1Y4XXPFhwMb1SP33yhzn3h9qWXjujkgep4', 'bitcoinprivate'); //invalid('bx....', 'BTCP'); //invalid('nx....', 'bitcoinprivate', 'testnet'); }); - + it('should return false for incorrect snowgem addresses', function () { commonTests('snowgem'); invalid('s1Yx7WBkjB4UH6qQjPp6Ysmtr1C1JiTK2Yw', 'snowgem'); invalid('s3Y27MhkBRt3ha2UuxhjXaYF4DCnttTMnL1', 'SNG'); invalid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'snowgem', 'testnet'); }); - + it('should return false for incorrect zencash addresses', function () { commonTests('zencash'); invalid('znYiGGfYRepxkBjXYvA2kFrXiC351i9ta4z', 'zencash'); invalid('zsYEdGnZCQ9G86LZFtbynMn1hYTVhn6eYCL', 'ZEN'); invalid('ztYWMDLWjbruCJxKmmfAZiT6QAQdiv5F291', 'zencash', 'testnet'); }); - + it('should return false for incorrect komodo addresses', function () { commonTests('komodo'); invalid('R9Y5HirAzqDcWrWGiJEL115dpV3QB3hobH', 'komodo'); @@ -522,11 +589,31 @@ describe('WAValidator.validate()', function () { //invalid('t2YNzUUx8mWBCRYPRezvA363EYXyEpHokyi', 'komodo', 'testnet'); }); + it('should return false for incorrect monero addresses', function () { + commonTests('monero'); + invalid('4AWygwA3hHNE4e4Yr9PtRWJiorXTjZkCi57g4ExYzfXDFFQ8DRFEFyui1dLqVknpqQjGUBdTMbgaFAZaDbrVHdk3GAKBZ3E', 'monero'); + invalid('44643dtxcxjgMWEQLo6mh1c4d9Zxx9GbgK9hEj9iGSiFEryCkbwHyJ3JqxZJRqeC3Hb7ZBLKq5NkaJwR1x95EYnR1bTgN6d', 'xmr'); + invalid('A17N9ztrxjQD3v3JJtHGvHVnq6BAbujDNEuensB6PFwBYFpkjAicih8hDtX76HBuEag5NeaCuMZmRMe6eE5NMRGxFTQn8nJ', 'monero', 'testnet'); + + //integrated + invalid('4LNSCKNSTPNbJYkyAEgL966eHJHLDHiq1PpwKoiFBybcSqNGYfLBJApC62uQEeGAFxfYEd29uXBBrJFo7DhKqFVNi3GhmN79EtD5dgycYz', 'monero'); + invalid('4JpzTwf3i1GeCV76beVr19179oa8j1L8xNSC1bXMtAxxdf4aTTLqubL8EvXfQmUGKt9MMigFtKy91VtoTTSfg1LU7LocPruT6KcGC9RKJV', 'xmr'); + }); + + it('should return false for incorrect nano addresses', function () { + commonTests('nano'); + invalid('xrb_1f5e4w33ndqbkx4bw5jtp13kp5xghebfxcmw9hdt1f7goid1s4373w6tjdgu', 'nano'); + invalid('nano_1f5e4w33ndqbkx4bw5jtp13kp5xghebfxcmw9hdt1f7goid1s4373w6tjdgu', 'nano'); + invalid('xrb_1111111112111111111111111111111111111111111111111111hifc8npp', 'nano'); + invalid('nano_111111111111111111111111111111111111111111111111111hifc8npp', 'nano'); + }); + it('should return false for incorrect tokenpay addresses', function () { commonTests('tokenpay'); invalid('TTU9AFbvNcUfyUC3JLcXGKnMncsPJzViyk', 'tokenpay'); invalid('TYpb6GJDjchpi3GfwZfcLHA2jfWP6kXEMd', 'TPAY'); invalid('tC3qX5M25NJhUnhJpcFHaxLkQJjyHGBzqf', 'tokenpay', 'testnet'); + invalid('tNLYDkCLm1kpCM7RZbUFFnvWL6t4NvQ5p4', 'TPAY', 'testnet'); }); it('should return false for incorrect verge addresses', function () { From f668254fc138d34f37a725f69d2b38e4ddbd0088 Mon Sep 17 00:00:00 2001 From: alex nicolae Date: Tue, 9 Apr 2019 18:10:19 +0300 Subject: [PATCH 5/5] Invalid address test for tpay fix --- test/wallet_address_validator.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/wallet_address_validator.js b/test/wallet_address_validator.js index cd7e0f1b..d982f33a 100644 --- a/test/wallet_address_validator.js +++ b/test/wallet_address_validator.js @@ -612,7 +612,7 @@ describe('WAValidator.validate()', function () { commonTests('tokenpay'); invalid('TTU9AFbvNcUfyUC3JLcXGKnMncsPJzViyk', 'tokenpay'); invalid('TYpb6GJDjchpi3GfwZfcLHA2jfWP6kXEMd', 'TPAY'); - invalid('tC3qX5M25NJhUnhJpcFHaxLkQJjyHGBzqf', 'tokenpay', 'testnet'); + invalid('tC3qX5M25NJhUnhJpcFHaxLkQJjyHGBzqv', 'tokenpay', 'testnet'); invalid('tNLYDkCLm1kpCM7RZbUFFnvWL6t4NvQ5p4', 'TPAY', 'testnet'); });