UNPKG

1.51 kBJavaScriptView Raw
1const CoinHelper = require('./coin');
2const cs = require('coinstring');
3
4const mainnetVersion = 0x00;
5const mainnetScriptVersion = 0x05;
6const testnetVersion = 0x6F;
7const testnetScriptVersion = 0xC4;
8
9const mainnetAddressValidator = cs.createValidator(mainnetVersion);
10//const testnetAddressValidator = cs.createValidator(testnetVersion);
11
12function addressValidator(network, address) {
13
14 if( (network === 'regtest' && /^R[a-km-zA-HJ-NP-Z1-9]{25,34}$/.test(address) ) ||
15 (network === 'testnet' && /^[mn2][a-km-zA-HJ-NP-Z1-9]{25,34}$/.test(address) ) ||
16 (network === 'mainnet' && /^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$/.test(address) ) ){
17
18 return true;
19
20 }
21
22 return false;
23
24}
25
26class BitcoinCashHelper extends CoinHelper {
27
28 getURIPrefix() {
29 return 'bitcoincash';
30 }
31
32 validAddress(address) {
33
34 return addressValidator(this.opts.network, address);
35
36 }
37
38 addressExplorerUrl(address) {
39 switch(this.opts.network) {
40 case 'mainnet':
41 return `https://live.blockcypher.com/bch/address/${address}`;
42 case 'testnet':
43 return `https://www.blocktrail.com/tBCC/address/${address}`;
44 default:
45 return null;
46 }
47 }
48
49 txExplorerUrl(txId) {
50 switch(this.opts.network) {
51 case 'mainnet':
52 return `https://live.blockcypher.com/bch/tx/${txId}`;
53 case 'testnet':
54 return `https://www.blocktrail.com/tBCC/tx/${txId}`;
55 default:
56 return null;
57 }
58 }
59
60}
61
62BitcoinCashHelper.code = 'BCH';
63
64module.exports = BitcoinCashHelper;