UNPKG

30.9 kBJavaScriptView Raw
1/***
2 * @license
3 * https://github.com/bitcoincashjs/bchaddr
4 * Copyright (c) 2018 Emilio Almansi
5 * Distributed under the MIT software license, see the accompanying
6 * file LICENSE or http://www.opensource.org/licenses/mit-license.php.
7 */
8
9var assert = require('chai').assert
10var bchaddr = require('..')
11
12describe('bchaddr', function () {
13 var LEGACY_MAINNET_P2PKH_ADDRESSES = [
14 '1B9UNtBfkkpgt8kVbwLN9ktE62QKnMbDzR',
15 '185K5yAfcrARrHjNVt4iAUHtkYqcogF4km',
16 '1EUrmffDt4SQQkGVfmDTyFcp57PuByeadW',
17 '1H6YWsFBxvDx6Ce9dyUFZvjG29npxQpBpR',
18 '15z9kQvBaZmTGRTRbP3K1VBM3BQvRsj4U4',
19 '1P238gziZdeS5Wj9nqLhQHSBK2Lz6zPSke',
20 '13WamBttqMB9AHNovKBCeLFGC5sbN4iZkh',
21 '17Sa1fdVXh2NVgcn5xoWzTLGNivg9gUDQ7',
22 '1tQ2P2q5cVERY8AkGD4K8RGc6NmZQVTKN',
23 '1FJSGaq7Wip2ADSJboxMXniPhnYM8ym5Ri',
24 '1GxjvJnjF6t29gDnX4jF3u25u5JRqANYPV',
25 '1N7gqB2GtgJG8ap3uwRoKyrcrrSTa4qfXu',
26 '1JG6fXqEiu9H2fktGxqpFfGGLdy6ie7QgY',
27 '14ipzRgYAbSZUnmeRNhhrPMQ8XQrzGg4wo',
28 '185FScTRCtVXRoy5gSDbuLnnQaQWqCK4A1',
29 '1NPRQpCNaeVvZLYw6Z3Y1XkKxLt9BrFTn5',
30 '1Pa8bRApFwCZ8rkgCJh9mfUmj4XJMUYdom',
31 '13HmTnwyKacGJCt2WseTReCeEAtG5ZAyci',
32 '1Mdob5JY1yuwoj6y76Vf3AQpoqUH5Aft8z',
33 '1D8zGeRj3Vkns6VwKxwNoW2mDsxF25w2Zy'
34 ]
35
36 var LEGACY_MAINNET_P2SH_ADDRESSES = [
37 '3BqVJRg7Jf94yJSvj2zxaPFAEYh3MAyyw9',
38 '38mL1Wf7AkUowTRocyjJb6epu58LSafEYf',
39 '3FAshD9fRxknVuxvnrt4PsykDdgckmK7xD',
40 '3HnZSQjdWpYLBNLam58qzZ6CAg5YXBddBW',
41 '36gAfxQd8U5qMb9riUhuS7YHBhhdvjr8u1',
42 '3Pi44EVA7XxpAgRauw1Hpuo7TYdhd7WMon',
43 '34CbgjPLPFVXFT5F3Qqo4xcCLcAJwvkM85',
44 '388awD7w5bLkarKDD4U7R5hCXFDPmHuWW7',
45 '32aQwvXGdWocWhpbsMsejknCkcfVB4ivTM',
46 '3FzTC8KZ4d8QFP8jiucwxR5KrJq4bcevn7',
47 '3HekqrHAo1CQEqvDeAPqUXP23bb9Sf9WoA',
48 '3NohkiWiSaceDkWV336PkcDZ1NjBBWBewT',
49 '3Jx7b5KgGoTf7qTKQ4WQgHdCVAFpCKiqsB',
50 '35QquyAyiVkwZxU5YUNJH1iLH3haZ5TEfC',
51 '38mGN9wrknouWyfWoXtCKy9iZ6hEMRGsyp',
52 '3P5SLMgp8YpJeWFNDei8SA7G6sArkNKQKL',
53 '3QG9WxfFoqWwE2T7KQMkCHqhsap1waSfDu',
54 '33ynPLSQsUvePNaTdyK3rGZaNhAyfeAmbT',
55 '3NKpWcnyZtEKttoQECAFTnmkxMkzgbT4WX',
56 '3Dq1CBvAbQ5AxGCNT4byE8PhNQExZcR6Q2'
57 ]
58
59 var LEGACY_TESTNET_P2PKH_ADDRESSES = [
60 'mqfRfwGeZnFwfFE7KWJjyg6Yx212iGi6Fi',
61 'mnbGP2FeRsbgdQCzDT35zPWDcYSKm4wrcg',
62 'mtzp4ikCh5sfBrk7PLBqoAq8w6zc48PsGn',
63 'mwcVovLAmwfCsK7mMYSdPqwat9PXqcMiFt',
64 'mkW73U1APbCi3Xw3Jx1gqQPfuB1dHFDiEU',
65 'n3XzRk5hNf5grdCmWQK5ECeWB1wgzzYzZd',
66 'mi2Y4EyseNcPwPrRdt9aUFTb45UJHNgtbL',
67 'mmxXJiiULiTdGo6PoXmtpNYbEiXP2v746S',
68 'mgQMKS7otdvVCebnTqBS93dbU5yUZPsANB',
69 'mupPZdv6KkFGwKuvKNvjMhviZn93yznq73',
70 'mwUhDMsi48KGvnhQEdhcspEQm4u8o754bx',
71 'n2de8E7FhhjWuhHfdWQB9u4wir3AXqspCt',
72 'mxn3xavDXvaXonEVzXpC5aUbCdZoaTEB2g',
73 'mjEnHUmWycspFuFG8wg5gJZizX1ZtEF1XN',
74 'mnbCjfYQ1uvnCvShQ1ByjG17Ga1Dk3RTXN',
75 'n2uNhsHMPfwBLT2Yp81uqSxepLUr6zCnCz',
76 'n465tUFo4xdouyEHusfXbah6b481K5Nivk',
77 'mhoikr2x8c3X5KMeEScqFZQy6AUy4GeR4M',
78 'n29kt8PWq1MCaqaapfU2s5d9fq4yytS1xJ',
79 'msewZhWhrXC3eCyZ3XukdRF65sYwtbmARy'
80 ]
81
82 var LEGACY_TESTNET_P2SH_ADDRESSES = [
83 '2N3PhNAc8v7eRB65UQAcqCLERStuD93JXLD',
84 '2MzKY5Fb8nCzA9F4MJ7MBD3e67RLWFE1ciP',
85 '2N6j5kx5h3RG8hhbUTzVw1py1RytnZNYoXo',
86 '2N9LmW9ff8H3gP9y8SCkicW5TP2HiFpeK4z',
87 '2MxENjhLejvbBZNnQPcKn44XYQ3uoiBT3fF',
88 '2NFGG7yRBizUANU48b4dASrnNftqsNwzSM1',
89 '2MukokUKMzhzsTEhniYTfgubTYxNUi6PtTX',
90 '2Mygnzx3xh3r6ndwktC5z32gTjbRZXkJpFr',
91 '2Mt8d1fTJEyJxiVT9YVVXMhmTxxsexLdJiE',
92 '2N7YfFsFag5dkTAmHQ3EpaN4b4f3EPkwQkk',
93 '2N9CxubDCQThkSdYmKJ1i6UNHFwoKBxp2Hj',
94 '2NEMupTSk437zRY92iAiGNZCpDiwLvwnZEL',
95 '2NAWKepFhtFy1Kd5s5C8HJEcThWTyzKiNGA',
96 '2Mvy3yi71KxGHmk6dDbzAtxhbVPukK6MD5u',
97 '2MzKURtstNFKFimJ4UfW4wv8ymSuQCcZPN2',
98 '2NEdeQ6cqk1KerHsutnL1476XKDP2agcCh5',
99 '2NFpMahbHRJ2HRp5ezXycpEpy5w2BmnVM9W',
100 '2MuXzT5NSUwRzbAD1K6vvUDYqb3P9RUvPgK',
101 '2NDt2aMj1BLjg6gRwuKn85jm2AhyAV8e2VF',
102 '2N5PDFvrCCraXA3pv8CDqr5NxakT8KJb3Gg'
103 ]
104
105 var BITPAY_MAINNET_P2PKH_ADDRESSES = [
106 'CScMwvXjdooDnGevHgfHjGWFi9cjk75Aaj',
107 'CPYCf1WjVu8xkRdoBdPdjyuvNg42oA7g3o',
108 'CVwkLi1Hm7QwJtAvMWYPYmEqhEcK4KW3my',
109 'CYZS5ubFqyCUzLYaKioB9SMHeH1Eno9teV',
110 'CMT3KTGFTcjzAZMrH8NEazoNfJdLLwdA2P',
111 'CeUvhjLnSgcxyedaUafcyo4Cw9ZPwGq9JJ',
112 'CJyULEExiQ9g4RHEc4W8DqsHpD61DzD2KS',
113 'CNuTahyZQjzuPpXCmi8SZxxHzr966Y3NWT',
114 'CHMHbRNtxfTmKg2bS1Xyte3JEDbBZJdBDR',
115 'CWmKqdBBPmnZ4MLjHZHH7JLRKukm2ZLsY3',
116 'CYRdVM8o89rZ3p8DCp4AdQe7XCWqo98EJW',
117 'CdaaQDNLmjGo2iiUbgkiuVUeUyesW7zuM3',
118 'CZizEaBJbx7ovofJxiAjqAtHxmBWaYnQ8e',
119 'CLBiZU2c3eR6Nvg5782dRtyRkedGxq5zep',
120 'CPY91eoV5wU4KwsWNBYXUrQp2hcvm6nds4',
121 'CdrJyrYSThUTTUTMnJNTb3NMaU6Z4RU7ZN',
122 'Cf32ATWt8zB62zf6t425MB6oMBjiHc6XZf',
123 'CJkf2qJ3CdaoCLnTCcyP19pfrJ6fyRmeF4',
124 'Cd6hA7ebu2tUhs1Pnqpacg2rRxgh4RX3ij',
125 'CUbsqgmnvYjKmEQN1iGJP1enr1Aet3jrNW'
126 ]
127
128 var BITPAY_MAINNET_P2SH_ADDRESSES = [
129 'HGfbmE7C9yMjbUKxaif7YmmhGCi4FN8hzH',
130 'HDbSUK6C24hUZdJqUfPTZVBMvj9MGEzYSY',
131 'HKzzA1akHGyT85qxeYYDNGWHFHhddvQabB',
132 'HNcfuDAiN8kzoYDccknzxwcjCL6ZLVoQNQ',
133 'HBWH8kqhynJVym2taAN4QW4pDMiepA7r24',
134 'HUYAX2vExrBUnrJcmcfSoJKeVCeiW7ZdQA',
135 'H92i9XpREZiBscxGu6Vx3M8jNGBKqscBBB',
136 'HCxhQ1Z1vuZRD2CF4k8GPUDjYuEQdZhDyJ',
137 'H7QXQixMUq2H8shdj3Xoi9JjnGgW4UtQvF',
138 'HLpZevkduwM4sZ1mabH6vobrsxr5XLQ9Xh',
139 'HNUsJeiFeKR4s1oFVr3zSuuZ5FcAJ5fEvi',
140 'HTdpDWwoHtqJqvPWtikYizk632kC3jeVq5',
141 'HPnE3skm87gKk1LMFkAZeg9jWpGq5JcGD2',
142 'HAExNmc4ZoycC8M7QA2TFQEsJhibS24Sff',
143 'HDbNpxNwc72a99YYfDYMJMgFakiFCURWsc',
144 'HTuYoA7tys2yGg8Q5LNHQYdo8XBsZkPfms',
145 'HV6Fym6Lf9jbrCL9B61uAgNEuEq2mwoPKw',
146 'H8otr8sVio9K1YTVVeyCpf67QMBzV5ieHM',
147 'HT9vyRE4RCSzX4gS5spQSBJHz1n1ZBCcYM',
148 'HJf7ezMFSiHqaS5QJkG8CWvEQ4FyTTnjMB'
149 ]
150
151 var BITPAY_TESTNET_P2PKH_ADDRESSES = [
152 'mqfRfwGeZnFwfFE7KWJjyg6Yx212iGi6Fi',
153 'mnbGP2FeRsbgdQCzDT35zPWDcYSKm4wrcg',
154 'mtzp4ikCh5sfBrk7PLBqoAq8w6zc48PsGn',
155 'mwcVovLAmwfCsK7mMYSdPqwat9PXqcMiFt',
156 'mkW73U1APbCi3Xw3Jx1gqQPfuB1dHFDiEU',
157 'n3XzRk5hNf5grdCmWQK5ECeWB1wgzzYzZd',
158 'mi2Y4EyseNcPwPrRdt9aUFTb45UJHNgtbL',
159 'mmxXJiiULiTdGo6PoXmtpNYbEiXP2v746S',
160 'mgQMKS7otdvVCebnTqBS93dbU5yUZPsANB',
161 'mupPZdv6KkFGwKuvKNvjMhviZn93yznq73',
162 'mwUhDMsi48KGvnhQEdhcspEQm4u8o754bx',
163 'n2de8E7FhhjWuhHfdWQB9u4wir3AXqspCt',
164 'mxn3xavDXvaXonEVzXpC5aUbCdZoaTEB2g',
165 'mjEnHUmWycspFuFG8wg5gJZizX1ZtEF1XN',
166 'mnbCjfYQ1uvnCvShQ1ByjG17Ga1Dk3RTXN',
167 'n2uNhsHMPfwBLT2Yp81uqSxepLUr6zCnCz',
168 'n465tUFo4xdouyEHusfXbah6b481K5Nivk',
169 'mhoikr2x8c3X5KMeEScqFZQy6AUy4GeR4M',
170 'n29kt8PWq1MCaqaapfU2s5d9fq4yytS1xJ',
171 'msewZhWhrXC3eCyZ3XukdRF65sYwtbmARy'
172 ]
173
174 var BITPAY_TESTNET_P2SH_ADDRESSES = [
175 '2N3PhNAc8v7eRB65UQAcqCLERStuD93JXLD',
176 '2MzKY5Fb8nCzA9F4MJ7MBD3e67RLWFE1ciP',
177 '2N6j5kx5h3RG8hhbUTzVw1py1RytnZNYoXo',
178 '2N9LmW9ff8H3gP9y8SCkicW5TP2HiFpeK4z',
179 '2MxENjhLejvbBZNnQPcKn44XYQ3uoiBT3fF',
180 '2NFGG7yRBizUANU48b4dASrnNftqsNwzSM1',
181 '2MukokUKMzhzsTEhniYTfgubTYxNUi6PtTX',
182 '2Mygnzx3xh3r6ndwktC5z32gTjbRZXkJpFr',
183 '2Mt8d1fTJEyJxiVT9YVVXMhmTxxsexLdJiE',
184 '2N7YfFsFag5dkTAmHQ3EpaN4b4f3EPkwQkk',
185 '2N9CxubDCQThkSdYmKJ1i6UNHFwoKBxp2Hj',
186 '2NEMupTSk437zRY92iAiGNZCpDiwLvwnZEL',
187 '2NAWKepFhtFy1Kd5s5C8HJEcThWTyzKiNGA',
188 '2Mvy3yi71KxGHmk6dDbzAtxhbVPukK6MD5u',
189 '2MzKURtstNFKFimJ4UfW4wv8ymSuQCcZPN2',
190 '2NEdeQ6cqk1KerHsutnL1476XKDP2agcCh5',
191 '2NFpMahbHRJ2HRp5ezXycpEpy5w2BmnVM9W',
192 '2MuXzT5NSUwRzbAD1K6vvUDYqb3P9RUvPgK',
193 '2NDt2aMj1BLjg6gRwuKn85jm2AhyAV8e2VF',
194 '2N5PDFvrCCraXA3pv8CDqr5NxakT8KJb3Gg'
195 ]
196
197 var CASHADDR_MAINNET_P2PKH_ADDRESSES = [
198 'bitcoincash:qph5kuz78czq00e3t85ugpgd7xmer5kr7c5f6jdpwk',
199 'bitcoincash:qpxenfpcf975gxdjmq9pk3xm6hjmfj6re56t60smsm',
200 'bitcoincash:qzfau6vrq980qntgp5e7l6cpfsf7jw88c5u7y85qx6',
201 'bitcoincash:qzcguejjfxld867ck4zudc9a6y8mf6ftgqqrxzfmlh',
202 'bitcoincash:qqm2lpqdfjsg8kkhwk0a3e3gypyswkd69urny99j70',
203 'bitcoincash:qrccfa4qm3xfcrta78v7du75jjaww0ylnss5nxsy9s',
204 'bitcoincash:qqdcsl6c879esyxyacmz7g6vtzwjjwtznsv65x6znz',
205 'bitcoincash:qpr2ddwe8qnnh8h20mmn4zgrharmy0vuy5y4gr8gl2',
206 'bitcoincash:qqymsmh0nhfhs9k5whhnjwfxyaumvtxm8g2z0s4f9y',
207 'bitcoincash:qzwdmm83qjx7372wxgszaukan73ffn8ct54v6hs3dl',
208 'bitcoincash:qzh3f9me5z5sn2w8euap2gyrp6kr7gf6my5mhjey6s',
209 'bitcoincash:qrneuckcx69clprn4nnr82tf8sycqrs3ac4tr8m86f',
210 'bitcoincash:qz742xef07g9w8q52mx0q6m9hp05hnzm657wqd0ce2',
211 'bitcoincash:qq5dzl0drx8v0layyyuh5aupvxfs80ydmsp5444280',
212 'bitcoincash:qpxedxtug7kpwd6tgf5vx08gjamel7sldsc40mxew8',
213 'bitcoincash:qr4fs2m8tjmw54r2aqmadggzuagttkujgyrjs5d769',
214 'bitcoincash:qrmed4fxlhkgay9nxw7zn9muew5ktkyjnuuawvycze',
215 'bitcoincash:qqv3cpvmu4h0vqa6aly0urec7kwtuhe49yz6e7922v',
216 'bitcoincash:qr39scfteeu5l573lzerchh6wc4cqkxeturafzfkk9',
217 'bitcoincash:qzzjgw37vwls805c9fw6g9vqyupadst6wgmane0s4l'
218 ]
219
220 var CASHADDR_MAINNET_P2SH_ADDRESSES = [
221 'bitcoincash:pph5kuz78czq00e3t85ugpgd7xmer5kr7crv8a2z4t',
222 'bitcoincash:ppxenfpcf975gxdjmq9pk3xm6hjmfj6re5dw8qhctx',
223 'bitcoincash:pzfau6vrq980qntgp5e7l6cpfsf7jw88c5tmegnra8',
224 'bitcoincash:pzcguejjfxld867ck4zudc9a6y8mf6ftgqhxmdwcy2',
225 'bitcoincash:pqm2lpqdfjsg8kkhwk0a3e3gypyswkd69u5ke2z39j',
226 'bitcoincash:prccfa4qm3xfcrta78v7du75jjaww0ylns83wfh87d',
227 'bitcoincash:pqdcsl6c879esyxyacmz7g6vtzwjjwtznsmlffapgl',
228 'bitcoincash:ppr2ddwe8qnnh8h20mmn4zgrharmy0vuy5ns4vqtyh',
229 'bitcoincash:pqymsmh0nhfhs9k5whhnjwfxyaumvtxm8ga8jlj27e',
230 'bitcoincash:pzwdmm83qjx7372wxgszaukan73ffn8ct5zf8chjkz',
231 'bitcoincash:pzh3f9me5z5sn2w8euap2gyrp6kr7gf6myr72a78pd',
232 'bitcoincash:prneuckcx69clprn4nnr82tf8sycqrs3aczw7guyp5',
233 'bitcoincash:pz742xef07g9w8q52mx0q6m9hp05hnzm65ftazgmzh',
234 'bitcoincash:pq5dzl0drx8v0layyyuh5aupvxfs80ydmsk3g6jfuj',
235 'bitcoincash:ppxedxtug7kpwd6tgf5vx08gjamel7slds0sj5p646',
236 'bitcoincash:pr4fs2m8tjmw54r2aqmadggzuagttkujgy5hdm2apc',
237 'bitcoincash:prmed4fxlhkgay9nxw7zn9muew5ktkyjnutcnrrmey',
238 'bitcoincash:pqv3cpvmu4h0vqa6aly0urec7kwtuhe49y4ly3zf33',
239 'bitcoincash:pr39scfteeu5l573lzerchh6wc4cqkxetu5c5dw4dc',
240 'bitcoincash:pzzjgw37vwls805c9fw6g9vqyupadst6wgvcwkgnwz'
241 ]
242
243 var CASHADDR_TESTNET_P2PKH_ADDRESSES = [
244 'bchtest:qph5kuz78czq00e3t85ugpgd7xmer5kr7csm740kf2',
245 'bchtest:qpxenfpcf975gxdjmq9pk3xm6hjmfj6re57e7gjvh8',
246 'bchtest:qzfau6vrq980qntgp5e7l6cpfsf7jw88c5cvqqkhpx',
247 'bchtest:qzcguejjfxld867ck4zudc9a6y8mf6ftgqy3z9tvct',
248 'bchtest:qqm2lpqdfjsg8kkhwk0a3e3gypyswkd69u8pqz89en',
249 'bchtest:qrccfa4qm3xfcrta78v7du75jjaww0ylns5xhpjnzv',
250 'bchtest:qqdcsl6c879esyxyacmz7g6vtzwjjwtznsggspc457',
251 'bchtest:qpr2ddwe8qnnh8h20mmn4zgrharmy0vuy5q8vy9lck',
252 'bchtest:qqymsmh0nhfhs9k5whhnjwfxyaumvtxm8gwsthh7zc',
253 'bchtest:qzwdmm83qjx7372wxgszaukan73ffn8ct5377sjx2r',
254 'bchtest:qzh3f9me5z5sn2w8euap2gyrp6kr7gf6mysfn4mnav',
255 'bchtest:qrneuckcx69clprn4nnr82tf8sycqrs3ac3e8qesa4',
256 'bchtest:qz742xef07g9w8q52mx0q6m9hp05hnzm656uy2d07k',
257 'bchtest:qq5dzl0drx8v0layyyuh5aupvxfs80ydms9x3jhaqn',
258 'bchtest:qpxedxtug7kpwd6tgf5vx08gjamel7sldsu8tuywfm',
259 'bchtest:qr4fs2m8tjmw54r2aqmadggzuagttkujgy8q5n0fae',
260 'bchtest:qrmed4fxlhkgay9nxw7zn9muew5ktkyjnuc02tx099',
261 'bchtest:qqv3cpvmu4h0vqa6aly0urec7kwtuhe49yxgae8ads',
262 'bchtest:qr39scfteeu5l573lzerchh6wc4cqkxetu80d9tp3e',
263 'bchtest:qzzjgw37vwls805c9fw6g9vqyupadst6wgl0h7d8jr'
264 ]
265
266 var CASHADDR_TESTNET_P2SH_ADDRESSES = [
267 'bchtest:pph5kuz78czq00e3t85ugpgd7xmer5kr7c87r6g4jh',
268 'bchtest:ppxenfpcf975gxdjmq9pk3xm6hjmfj6re5fur840v6',
269 'bchtest:pzfau6vrq980qntgp5e7l6cpfsf7jw88c50fa0356m',
270 'bchtest:pzcguejjfxld867ck4zudc9a6y8mf6ftgqn5l2v0rk',
271 'bchtest:pqm2lpqdfjsg8kkhwk0a3e3gypyswkd69usyadqxzw',
272 'bchtest:prccfa4qm3xfcrta78v7du75jjaww0ylnsrr2w4se3',
273 'bchtest:pqdcsl6c879esyxyacmz7g6vtzwjjwtznslddwlk0r',
274 'bchtest:ppr2ddwe8qnnh8h20mmn4zgrharmy0vuy5hz3tzurt',
275 'bchtest:pqymsmh0nhfhs9k5whhnjwfxyaumvtxm8ge4kcsae9',
276 'bchtest:pzwdmm83qjx7372wxgszaukan73ffn8ct5xmrl4937',
277 'bchtest:pzh3f9me5z5sn2w8euap2gyrp6kr7gf6my8vw6usx3',
278 'bchtest:prneuckcx69clprn4nnr82tf8sycqrs3acxu607nxg',
279 'bchtest:pz742xef07g9w8q52mx0q6m9hp05hnzm65dee92v9t',
280 'bchtest:pq5dzl0drx8v0layyyuh5aupvxfs80ydmsjrvas7mw',
281 'bchtest:ppxedxtug7kpwd6tgf5vx08gjamel7sldstzknrdjx',
282 'bchtest:pr4fs2m8tjmw54r2aqmadggzuagttkujgys9fug2xy',
283 'bchtest:prmed4fxlhkgay9nxw7zn9muew5ktkyjnu02hypv7c',
284 'bchtest:pqv3cpvmu4h0vqa6aly0urec7kwtuhe49y3dqkq7kd',
285 'bchtest:pr39scfteeu5l573lzerchh6wc4cqkxetus2s2vz2y',
286 'bchtest:pzzjgw37vwls805c9fw6g9vqyupadst6wgg2232yf7'
287 ]
288
289 var LEGACY_ADDRESSES = flatten([
290 LEGACY_MAINNET_P2PKH_ADDRESSES,
291 LEGACY_MAINNET_P2SH_ADDRESSES,
292 LEGACY_TESTNET_P2PKH_ADDRESSES,
293 LEGACY_TESTNET_P2SH_ADDRESSES
294 ])
295
296 var BITPAY_MAINNET_ADDRESSES = flatten([
297 BITPAY_MAINNET_P2PKH_ADDRESSES,
298 BITPAY_MAINNET_P2SH_ADDRESSES
299 ])
300
301 var BITPAY_ADDRESSES = flatten([
302 BITPAY_MAINNET_ADDRESSES,
303 BITPAY_TESTNET_P2PKH_ADDRESSES,
304 BITPAY_TESTNET_P2SH_ADDRESSES
305 ])
306
307 var CASHADDR_ADDRESSES = flatten([
308 CASHADDR_MAINNET_P2PKH_ADDRESSES,
309 CASHADDR_MAINNET_P2SH_ADDRESSES,
310 CASHADDR_TESTNET_P2PKH_ADDRESSES,
311 CASHADDR_TESTNET_P2SH_ADDRESSES
312 ])
313
314 var CASHADDR_ADDRESSES_NO_PREFIX = CASHADDR_ADDRESSES.map(function (address) {
315 var parts = address.split(':')
316 return parts[1]
317 })
318
319 var MAINNET_ADDRESSES = flatten([
320 LEGACY_MAINNET_P2PKH_ADDRESSES,
321 LEGACY_MAINNET_P2SH_ADDRESSES,
322 BITPAY_MAINNET_P2PKH_ADDRESSES,
323 BITPAY_MAINNET_P2SH_ADDRESSES,
324 CASHADDR_MAINNET_P2PKH_ADDRESSES,
325 CASHADDR_MAINNET_P2SH_ADDRESSES
326 ])
327
328 var TESTNET_ADDRESSES = flatten([
329 LEGACY_TESTNET_P2PKH_ADDRESSES,
330 LEGACY_TESTNET_P2SH_ADDRESSES,
331 BITPAY_TESTNET_P2PKH_ADDRESSES,
332 BITPAY_TESTNET_P2SH_ADDRESSES,
333 CASHADDR_TESTNET_P2PKH_ADDRESSES,
334 CASHADDR_TESTNET_P2SH_ADDRESSES
335 ])
336
337 var P2PKH_ADDRESSES = flatten([
338 LEGACY_MAINNET_P2PKH_ADDRESSES,
339 LEGACY_TESTNET_P2PKH_ADDRESSES,
340 BITPAY_MAINNET_P2PKH_ADDRESSES,
341 BITPAY_TESTNET_P2PKH_ADDRESSES,
342 CASHADDR_MAINNET_P2PKH_ADDRESSES,
343 CASHADDR_TESTNET_P2PKH_ADDRESSES
344 ])
345
346 var P2SH_ADDRESSES = flatten([
347 LEGACY_MAINNET_P2SH_ADDRESSES,
348 LEGACY_TESTNET_P2SH_ADDRESSES,
349 BITPAY_MAINNET_P2SH_ADDRESSES,
350 BITPAY_TESTNET_P2SH_ADDRESSES,
351 CASHADDR_MAINNET_P2SH_ADDRESSES,
352 CASHADDR_TESTNET_P2SH_ADDRESSES
353 ])
354
355 function flatten (arrays) {
356 return [].concat.apply([], arrays)
357 }
358
359 describe('#detectAddressFormat()', function () {
360 it('should fail when called with an invalid address', function () {
361 assert.throws(function () {
362 bchaddr.detectAddressFormat()
363 }, bchaddr.InvalidAddressError)
364 assert.throws(function () {
365 bchaddr.detectAddressFormat('some invalid address')
366 }, bchaddr.InvalidAddressError)
367 assert.throws(function () {
368 bchaddr.detectAddressFormat('st1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
369 }, bchaddr.InvalidAddressError)
370 })
371 it('it should detect a legacy address\' format correctly', function () {
372 LEGACY_ADDRESSES.forEach(function (address) {
373 assert.strictEqual(bchaddr.detectAddressFormat(address), bchaddr.Format.Legacy)
374 })
375 })
376 it('it should detect a bitpay address\' format correctly', function () {
377 BITPAY_MAINNET_ADDRESSES.forEach(function (address) {
378 assert.strictEqual(bchaddr.detectAddressFormat(address), bchaddr.Format.Bitpay)
379 })
380 })
381 it('it should detect a cashaddr address\' format correctly', function () {
382 CASHADDR_ADDRESSES.forEach(function (address) {
383 assert.strictEqual(bchaddr.detectAddressFormat(address), bchaddr.Format.Cashaddr)
384 })
385 })
386 })
387
388 describe('#detectAddressNetwork()', function () {
389 it('should fail when called with an invalid address', function () {
390 assert.throws(function () {
391 bchaddr.detectAddressNetwork()
392 }, bchaddr.InvalidAddressError)
393 assert.throws(function () {
394 bchaddr.detectAddressNetwork('some invalid address')
395 }, bchaddr.InvalidAddressError)
396 assert.throws(function () {
397 bchaddr.detectAddressNetwork('t1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
398 }, bchaddr.InvalidAddressError)
399 })
400 it('it should detect a mainnet address\' network correctly', function () {
401 MAINNET_ADDRESSES.forEach(function (address) {
402 assert.strictEqual(bchaddr.detectAddressNetwork(address), bchaddr.Network.Mainnet)
403 })
404 })
405 it('it should detect a testnet address\' network correctly', function () {
406 TESTNET_ADDRESSES.forEach(function (address) {
407 assert.strictEqual(bchaddr.detectAddressNetwork(address), bchaddr.Network.Testnet)
408 })
409 })
410 })
411
412 describe('#detectAddressType()', function () {
413 it('should fail when called with an invalid address', function () {
414 assert.throws(function () {
415 bchaddr.detectAddressType()
416 }, bchaddr.InvalidAddressError)
417 assert.throws(function () {
418 bchaddr.detectAddressType('some invalid address')
419 }, bchaddr.InvalidAddressError)
420 assert.throws(function () {
421 bchaddr.detectAddressType('somt1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
422 }, bchaddr.InvalidAddressError)
423 })
424 it('should detect a P2PKH address\' type correctly', function () {
425 P2PKH_ADDRESSES.forEach(function (address) {
426 assert.strictEqual(bchaddr.detectAddressType(address), bchaddr.Type.P2PKH)
427 })
428 })
429 it('should detect a P2SH address\' type correctly', function () {
430 P2SH_ADDRESSES.forEach(function (address) {
431 assert.strictEqual(bchaddr.detectAddressType(address), bchaddr.Type.P2SH)
432 })
433 })
434 })
435
436 describe('#toLegacyAddress()', function () {
437 it('should fail when called with an invalid address', function () {
438 assert.throws(function () {
439 bchaddr.toLegacyAddress()
440 }, bchaddr.InvalidAddressError)
441 assert.throws(function () {
442 bchaddr.toLegacyAddress('some invalid address')
443 }, bchaddr.InvalidAddressError)
444 assert.throws(function () {
445 bchaddr.toLegacyAddress('some t1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
446 }, bchaddr.InvalidAddressError)
447 })
448 it('should translate legacy address format to itself correctly', function () {
449 assert.deepEqual(
450 LEGACY_ADDRESSES.map(bchaddr.toLegacyAddress),
451 LEGACY_ADDRESSES
452 )
453 })
454 it('should translate bitpay address format to legacy format correctly', function () {
455 assert.deepEqual(
456 BITPAY_ADDRESSES.map(bchaddr.toLegacyAddress),
457 LEGACY_ADDRESSES
458 )
459 })
460 it('should translate cashaddr address format to legacy format correctly', function () {
461 assert.deepEqual(
462 CASHADDR_ADDRESSES.map(bchaddr.toLegacyAddress),
463 LEGACY_ADDRESSES
464 )
465 })
466 })
467
468 describe('#toBitpayAddress()', function () {
469 it('should fail when called with an invalid address', function () {
470 assert.throws(function () {
471 bchaddr.toBitpayAddress()
472 }, bchaddr.InvalidAddressError)
473 assert.throws(function () {
474 bchaddr.toBitpayAddress('some invalid address')
475 }, bchaddr.InvalidAddressError)
476 assert.throws(function () {
477 bchaddr.toBitpayAddress('some t1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
478 }, bchaddr.InvalidAddressError)
479 })
480 it('should translate legacy address format to bitpay format correctly', function () {
481 assert.deepEqual(
482 LEGACY_ADDRESSES.map(bchaddr.toBitpayAddress),
483 BITPAY_ADDRESSES
484 )
485 })
486 it('should translate bitpay address format to itself correctly', function () {
487 assert.deepEqual(
488 BITPAY_ADDRESSES.map(bchaddr.toBitpayAddress),
489 BITPAY_ADDRESSES
490 )
491 })
492 it('should translate cashaddr address format to bitpay format correctly', function () {
493 assert.deepEqual(
494 CASHADDR_ADDRESSES.map(bchaddr.toBitpayAddress),
495 BITPAY_ADDRESSES
496 )
497 })
498 })
499
500 describe('#toCashAddress()', function () {
501 it('should fail when called with an invalid address', function () {
502 assert.throws(function () {
503 bchaddr.toCashAddress()
504 }, bchaddr.InvalidAddressError)
505 assert.throws(function () {
506 bchaddr.toCashAddress('some invalid address')
507 }, bchaddr.InvalidAddressError)
508 assert.throws(function () {
509 bchaddr.toCashAddress('some int1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
510 }, bchaddr.InvalidAddressError)
511 })
512 it('should translate legacy address format to cashaddr format correctly', function () {
513 assert.deepEqual(
514 LEGACY_ADDRESSES.map(bchaddr.toCashAddress),
515 CASHADDR_ADDRESSES
516 )
517 })
518 it('should translate bitpay address format to cashaddr format correctly', function () {
519 assert.deepEqual(
520 BITPAY_ADDRESSES.map(bchaddr.toCashAddress),
521 CASHADDR_ADDRESSES
522 )
523 })
524 it('should translate cashaddr address format to itself correctly', function () {
525 assert.deepEqual(
526 CASHADDR_ADDRESSES.map(bchaddr.toCashAddress),
527 CASHADDR_ADDRESSES
528 )
529 })
530 it('should translate no-prefix cashaddr address format to itself correctly', function () {
531 assert.deepEqual(
532 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.toCashAddress),
533 CASHADDR_ADDRESSES
534 )
535 })
536 })
537
538 describe('#isLegacyAddress()', function () {
539 it('should fail when called with an invalid address', function () {
540 assert.throws(function () {
541 bchaddr.isLegacyAddress()
542 }, bchaddr.InvalidAddressError)
543 assert.throws(function () {
544 bchaddr.isLegacyAddress('some invalid address')
545 }, bchaddr.InvalidAddressError)
546 assert.throws(function () {
547 bchaddr.isLegacyAddress('some t1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
548 }, bchaddr.InvalidAddressError)
549 })
550 it('should return true for a legacy address', function () {
551 LEGACY_ADDRESSES.forEach(function (address) {
552 assert.isTrue(bchaddr.isLegacyAddress(address))
553 })
554 })
555 it('should return false for a bitpay address', function () {
556 BITPAY_MAINNET_ADDRESSES.forEach(function (address) {
557 assert.isFalse(bchaddr.isLegacyAddress(address))
558 })
559 })
560 it('should return false for a cashaddr address', function () {
561 CASHADDR_ADDRESSES.forEach(function (address) {
562 assert.isFalse(bchaddr.isLegacyAddress(address))
563 })
564 })
565 })
566
567 describe('#isBitpayAddress()', function () {
568 it('should fail when called with an invalid address', function () {
569 assert.throws(function () {
570 bchaddr.isBitpayAddress()
571 }, bchaddr.InvalidAddressError)
572 assert.throws(function () {
573 bchaddr.isBitpayAddress('some invalid address')
574 }, bchaddr.InvalidAddressError)
575 assert.throws(function () {
576 bchaddr.isBitpayAddress('some t1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
577 }, bchaddr.InvalidAddressError)
578 })
579 it('should return false for a legacy address', function () {
580 LEGACY_ADDRESSES.forEach(function (address) {
581 assert.isFalse(bchaddr.isBitpayAddress(address))
582 })
583 })
584 it('should return true for a bitpay address', function () {
585 BITPAY_MAINNET_ADDRESSES.forEach(function (address) {
586 assert.isTrue(bchaddr.isBitpayAddress(address))
587 })
588 })
589 it('should return false for a cashaddr address', function () {
590 CASHADDR_ADDRESSES.forEach(function (address) {
591 assert.isFalse(bchaddr.isBitpayAddress(address))
592 })
593 })
594 })
595
596 describe('#isCashAddress()', function () {
597 it('should fail when called with an invalid address', function () {
598 assert.throws(function () {
599 bchaddr.isCashAddress()
600 }, bchaddr.InvalidAddressError)
601 assert.throws(function () {
602 bchaddr.isCashAddress('some invalid address')
603 }, bchaddr.InvalidAddressError)
604 assert.throws(function () {
605 bchaddr.isCashAddress('some int1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
606 }, bchaddr.InvalidAddressError)
607 })
608 it('should return false for a legacy address', function () {
609 LEGACY_ADDRESSES.forEach(function (address) {
610 assert.isFalse(bchaddr.isCashAddress(address))
611 })
612 })
613 it('should return false for a bitpay address', function () {
614 BITPAY_ADDRESSES.forEach(function (address) {
615 assert.isFalse(bchaddr.isCashAddress(address))
616 })
617 })
618 it('should return true for a cashaddr address', function () {
619 CASHADDR_ADDRESSES.forEach(function (address) {
620 assert.isTrue(bchaddr.isCashAddress(address))
621 })
622 })
623 })
624
625 describe('#isMainnetAddress()', function () {
626 it('should fail when called with an invalid address', function () {
627 assert.throws(function () {
628 bchaddr.isMainnetAddress()
629 }, bchaddr.InvalidAddressError)
630 assert.throws(function () {
631 bchaddr.isMainnetAddress('some invalid address')
632 }, bchaddr.InvalidAddressError)
633 assert.throws(function () {
634 bchaddr.isMainnetAddress('somet1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
635 }, bchaddr.InvalidAddressError)
636 })
637 it('should return true for a mainnet address', function () {
638 MAINNET_ADDRESSES.forEach(function (address) {
639 assert.isTrue(bchaddr.isMainnetAddress(address))
640 })
641 })
642 it('should return false for a testnet address', function () {
643 TESTNET_ADDRESSES.forEach(function (address) {
644 assert.isFalse(bchaddr.isMainnetAddress(address))
645 })
646 })
647 })
648
649 describe('#isTestnetAddress()', function () {
650 it('should fail when called with an invalid address', function () {
651 assert.throws(function () {
652 bchaddr.isTestnetAddress()
653 }, bchaddr.InvalidAddressError)
654 assert.throws(function () {
655 bchaddr.isTestnetAddress('some invalid address')
656 }, bchaddr.InvalidAddressError)
657 assert.throws(function () {
658 bchaddr.isTestnetAddress('somet1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
659 }, bchaddr.InvalidAddressError)
660 })
661 it('should return false for a mainnet address', function () {
662 MAINNET_ADDRESSES.forEach(function (address) {
663 assert.isFalse(bchaddr.isTestnetAddress(address))
664 })
665 })
666 it('should return true for a testnet address', function () {
667 TESTNET_ADDRESSES.forEach(function (address) {
668 assert.isTrue(bchaddr.isTestnetAddress(address))
669 })
670 })
671 })
672
673 describe('#isP2PKHAddress()', function () {
674 it('should fail when called with an invalid address', function () {
675 assert.throws(function () {
676 bchaddr.isP2PKHAddress()
677 }, bchaddr.InvalidAddressError)
678 assert.throws(function () {
679 bchaddr.isP2PKHAddress('some invalid address')
680 }, bchaddr.InvalidAddressError)
681 assert.throws(function () {
682 bchaddr.isP2PKHAddress('some it1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
683 }, bchaddr.InvalidAddressError)
684 })
685 it('should return true for a P2PKH address', function () {
686 P2PKH_ADDRESSES.forEach(function (address) {
687 assert.isTrue(bchaddr.isP2PKHAddress(address))
688 })
689 })
690 it('should return false for a P2SH address', function () {
691 P2SH_ADDRESSES.forEach(function (address) {
692 assert.isFalse(bchaddr.isP2PKHAddress(address))
693 })
694 })
695 })
696
697 describe('#isP2SHAddress()', function () {
698 it('should fail when called with an invalid address', function () {
699 assert.throws(function () {
700 bchaddr.isP2SHAddress()
701 }, bchaddr.InvalidAddressError)
702 assert.throws(function () {
703 bchaddr.isP2SHAddress('some invalid address')
704 }, bchaddr.InvalidAddressError)
705 assert.throws(function () {
706 bchaddr.isP2SHAddress('some int1LuPdPkGH5QoNSewQrr8EzNbM27ktPdgQX')
707 }, bchaddr.InvalidAddressError)
708 })
709 it('should return false for a P2PKH address', function () {
710 P2PKH_ADDRESSES.forEach(function (address) {
711 assert.isFalse(bchaddr.isP2SHAddress(address))
712 })
713 })
714 it('should return true for a P2SH address', function () {
715 P2SH_ADDRESSES.forEach(function (address) {
716 assert.isTrue(bchaddr.isP2SHAddress(address))
717 })
718 })
719 })
720
721 describe('cashaddr prefix detection', function () {
722 it('should return the same result for detectAddressFormat', function () {
723 assert.deepEqual(
724 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.detectAddressFormat),
725 CASHADDR_ADDRESSES.map(bchaddr.detectAddressFormat)
726 )
727 })
728 it('should return the same result for detectAddressNetwork', function () {
729 assert.deepEqual(
730 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.detectAddressNetwork),
731 CASHADDR_ADDRESSES.map(bchaddr.detectAddressNetwork)
732 )
733 })
734 it('should return the same result for detectAddressType', function () {
735 assert.deepEqual(
736 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.detectAddressType),
737 CASHADDR_ADDRESSES.map(bchaddr.detectAddressType)
738 )
739 })
740 it('should return the same result for toLegacyAddress', function () {
741 assert.deepEqual(
742 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.toLegacyAddress),
743 CASHADDR_ADDRESSES.map(bchaddr.toLegacyAddress)
744 )
745 })
746 it('should return the same result for toBitpayAddress', function () {
747 assert.deepEqual(
748 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.toBitpayAddress),
749 CASHADDR_ADDRESSES.map(bchaddr.toBitpayAddress)
750 )
751 })
752 it('should return the same result for isLegacyAddress', function () {
753 assert.deepEqual(
754 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.isLegacyAddress),
755 CASHADDR_ADDRESSES.map(bchaddr.isLegacyAddress)
756 )
757 })
758 it('should return the same result for isBitpayAddress', function () {
759 assert.deepEqual(
760 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.isBitpayAddress),
761 CASHADDR_ADDRESSES.map(bchaddr.isBitpayAddress)
762 )
763 })
764 it('should return the same result for isCashAddress', function () {
765 assert.deepEqual(
766 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.isCashAddress),
767 CASHADDR_ADDRESSES.map(bchaddr.isCashAddress)
768 )
769 })
770 it('should return the same result for isMainnetAddress', function () {
771 assert.deepEqual(
772 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.isMainnetAddress),
773 CASHADDR_ADDRESSES.map(bchaddr.isMainnetAddress)
774 )
775 })
776 it('should return the same result for isTestnetAddress', function () {
777 assert.deepEqual(
778 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.isTestnetAddress),
779 CASHADDR_ADDRESSES.map(bchaddr.isTestnetAddress)
780 )
781 })
782 it('should return the same result for isP2PKHAddress', function () {
783 assert.deepEqual(
784 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.isP2PKHAddress),
785 CASHADDR_ADDRESSES.map(bchaddr.isP2PKHAddress)
786 )
787 })
788 it('should return the same result for isP2SHAddress', function () {
789 assert.deepEqual(
790 CASHADDR_ADDRESSES_NO_PREFIX.map(bchaddr.isP2SHAddress),
791 CASHADDR_ADDRESSES.map(bchaddr.isP2SHAddress)
792 )
793 })
794 })
795})