multichain-address-validator 0.7.9 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +0 -1
  2. package/dist/cjs/chain-validators.js +23 -1
  3. package/dist/cjs/crypto/segwit_addr.js +8 -3
  4. package/dist/cjs/validators/bitcoin_validator.d.ts +5 -0
  5. package/dist/cjs/validators/bitcoin_validator.js +6 -5
  6. package/dist/cjs/validators/bittensor_validator.d.ts +2 -0
  7. package/dist/cjs/validators/bittensor_validator.js +11 -0
  8. package/dist/cjs/validators/index.d.ts +2 -0
  9. package/dist/cjs/validators/index.js +5 -1
  10. package/dist/cjs/validators/polkadot_validator.d.ts +1 -4
  11. package/dist/cjs/validators/polkadot_validator.js +5 -49
  12. package/dist/cjs/validators/ss58_validator.d.ts +11 -0
  13. package/dist/cjs/validators/ss58_validator.js +70 -0
  14. package/dist/cjs/validators/zcash_validator.d.ts +5 -0
  15. package/dist/cjs/validators/zcash_validator.js +52 -0
  16. package/dist/esm/chain-validators.js +24 -2
  17. package/dist/esm/crypto/segwit_addr.js +8 -3
  18. package/dist/esm/validators/bitcoin_validator.d.ts +5 -0
  19. package/dist/esm/validators/bitcoin_validator.js +5 -5
  20. package/dist/esm/validators/bittensor_validator.d.ts +2 -0
  21. package/dist/esm/validators/bittensor_validator.js +6 -0
  22. package/dist/esm/validators/index.d.ts +2 -0
  23. package/dist/esm/validators/index.js +2 -0
  24. package/dist/esm/validators/polkadot_validator.d.ts +1 -4
  25. package/dist/esm/validators/polkadot_validator.js +5 -49
  26. package/dist/esm/validators/ss58_validator.d.ts +11 -0
  27. package/dist/esm/validators/ss58_validator.js +64 -0
  28. package/dist/esm/validators/zcash_validator.d.ts +5 -0
  29. package/dist/esm/validators/zcash_validator.js +47 -0
  30. package/package.json +3 -2
  31. package/.editorconfig +0 -10
  32. package/.travis.yml +0 -11
  33. package/.vscode/launch.json +0 -23
  34. package/index.html +0 -12
  35. package/src/chain-validators.ts +0 -161
  36. package/src/crypto/base32.ts +0 -66
  37. package/src/crypto/base58.ts +0 -46
  38. package/src/crypto/bech32.js +0 -132
  39. package/src/crypto/biginteger.js +0 -1426
  40. package/src/crypto/blake256.js +0 -188
  41. package/src/crypto/blake2b.js +0 -276
  42. package/src/crypto/cnBase58.js +0 -226
  43. package/src/crypto/segwit_addr.js +0 -112
  44. package/src/crypto/utils.ts +0 -133
  45. package/src/helpers.ts +0 -13
  46. package/src/index.ts +0 -28
  47. package/src/types.ts +0 -19
  48. package/src/validators/algorand_validator.ts +0 -28
  49. package/src/validators/base58_validator.ts +0 -32
  50. package/src/validators/bch_validator.ts +0 -66
  51. package/src/validators/bip173_validator.ts +0 -19
  52. package/src/validators/bitcoin_validator.ts +0 -94
  53. package/src/validators/cardano_validator.ts +0 -50
  54. package/src/validators/eos_validator.ts +0 -13
  55. package/src/validators/ethereum_validator.ts +0 -37
  56. package/src/validators/hedera_validator.ts +0 -10
  57. package/src/validators/index.ts +0 -18
  58. package/src/validators/monero_validator.ts +0 -72
  59. package/src/validators/move_validator.ts +0 -11
  60. package/src/validators/nano_validator.ts +0 -32
  61. package/src/validators/nem_validator.ts +0 -18
  62. package/src/validators/polkadot_validator.ts +0 -57
  63. package/src/validators/ripple_validator.ts +0 -44
  64. package/src/validators/sia_validator.ts +0 -33
  65. package/src/validators/solana_validator.ts +0 -21
  66. package/src/validators/tezos_validator.ts +0 -36
  67. package/src/validators/tron_validator.ts +0 -59
  68. package/src/validators/xlm_validator.ts +0 -54
  69. package/test/addresses/addresses.ts +0 -59
  70. package/test/addresses/algorand.json +0 -6
  71. package/test/addresses/aptos.json +0 -6
  72. package/test/addresses/bch-testnet.json +0 -4
  73. package/test/addresses/bch.json +0 -7
  74. package/test/addresses/btc-testnet.json +0 -13
  75. package/test/addresses/btc.json +0 -14
  76. package/test/addresses/cardano.json +0 -8
  77. package/test/addresses/doge-testnet.json +0 -3
  78. package/test/addresses/doge.json +0 -7
  79. package/test/addresses/eos.json +0 -6
  80. package/test/addresses/evm.json +0 -20
  81. package/test/addresses/hbar.json +0 -11
  82. package/test/addresses/ltc-testnet.json +0 -10
  83. package/test/addresses/ltc.json +0 -8
  84. package/test/addresses/monero-testnet.json +0 -5
  85. package/test/addresses/monero.json +0 -7
  86. package/test/addresses/nano.json +0 -12
  87. package/test/addresses/nem.json +0 -4
  88. package/test/addresses/polkadot.json +0 -8
  89. package/test/addresses/ripple.json +0 -20
  90. package/test/addresses/sia.json +0 -5
  91. package/test/addresses/solana.json +0 -12
  92. package/test/addresses/sui.json +0 -6
  93. package/test/addresses/tezos.json +0 -9
  94. package/test/addresses/tron.json +0 -6
  95. package/test/addresses/xlm.json +0 -21
  96. package/test/multichain-address-validator.test.ts +0 -225
  97. package/tsconfig.cjs.json +0 -7
  98. package/tsconfig.esm.json +0 -7
  99. package/tsconfig.json +0 -24
@@ -1,72 +0,0 @@
1
- import cryptoUtils from '../crypto/utils.js'
2
- import {Address, NetworkType} from '../types.js'
3
- import {getAddress} from '../helpers.js'
4
- import cnBase58 from '../crypto/cnBase58.js'
5
-
6
-
7
- const addressRegTest = new RegExp(
8
- '^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{95}$'
9
- )
10
- const integratedAddressRegTest = new RegExp(
11
- '^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{106}$'
12
- )
13
-
14
- const types = {
15
- addressTypes: {mainnet: ['18', '42'], testnet: ['53', '63'], stagenet: ['24']},
16
- iAddressTypes: {mainnet: ['19'], testnet: ['54'], stagenet: ['25']},
17
- }
18
-
19
- function validateNetwork(decoded: string, networkType: NetworkType, addressType: 'standard' | 'integrated') {
20
- const addressTypes = addressType === 'integrated'
21
- ? types.iAddressTypes[networkType]
22
- : types.addressTypes[networkType]
23
-
24
- const at = parseInt(decoded.substr(0, 2), 16).toString()
25
-
26
- switch (networkType) {
27
- case 'mainnet':
28
- return addressTypes.indexOf(at) >= 0
29
- case 'testnet':
30
- return addressTypes.indexOf(at) >= 0
31
- // case 'stagenet':
32
- // return network.stagenet.indexOf(at) >= 0
33
- // case 'both':
34
- // return network.prod.indexOf(at) >= 0 || network.testnet.indexOf(at) >= 0 || network.stagenet.indexOf(at) >= 0
35
- default:
36
- return false
37
- }
38
- }
39
-
40
- function hextobin(hex: string) {
41
- if (hex.length % 2 !== 0) return null
42
- const res = new Uint8Array(hex.length / 2)
43
- for (let i = 0; i < hex.length / 2; ++i) {
44
- res[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16)
45
- }
46
- return res
47
- }
48
-
49
-
50
- export default (networkType: NetworkType) => ({
51
- isValidAddress(address: Address) {
52
- const addr = getAddress(address)
53
- let addressType: 'standard' | 'integrated' = 'standard'
54
- if (!addressRegTest.test(addr)) {
55
- if (integratedAddressRegTest.test(addr)) {
56
- addressType = 'integrated'
57
- } else {
58
- return false
59
- }
60
- }
61
-
62
- const decodedAddrStr = cnBase58.decode(addr)
63
- if (!decodedAddrStr) return false
64
-
65
- if (!validateNetwork(decodedAddrStr, networkType, addressType)) return false
66
-
67
- const addrChecksum = decodedAddrStr.slice(-8)
68
- const hashChecksum = cryptoUtils.keccak256Checksum(hextobin(decodedAddrStr.slice(0, -8)))
69
-
70
- return addrChecksum === hashChecksum
71
- }
72
- })
@@ -1,11 +0,0 @@
1
- import type { Address} from '../types.js'
2
- import {getAddress} from '../helpers.js'
3
-
4
- const regexp = new RegExp('^0x[0-9a-fA-F]{64}$');
5
-
6
- export default {
7
- isValidAddress(address: Address) {
8
- const addr = getAddress(address)
9
- return regexp.test(addr)
10
- },
11
- };
@@ -1,32 +0,0 @@
1
- import baseX from 'base-x'
2
-
3
- import cryptoUtils from '../crypto/utils.js'
4
- import {Address} from '../types.js'
5
- import {getAddress} from '../helpers.js'
6
-
7
-
8
- const ALLOWED_CHARS = '13456789abcdefghijkmnopqrstuwxyz';
9
-
10
- const codec = baseX(ALLOWED_CHARS);
11
- // https://github.com/nanocurrency/raiblocks/wiki/Accounts,-Keys,-Seeds,-and-Wallet-Identifiers
12
- const regexp = new RegExp('^(xrb|nano)_([' + ALLOWED_CHARS + ']{60})$');
13
-
14
- export default {
15
- isValidAddress(address: Address) {
16
- const addr = getAddress(address)
17
- if (regexp.test(addr)) {
18
- return this.verifyChecksum(addr);
19
- }
20
-
21
- return false;
22
- },
23
-
24
- verifyChecksum: function (address: string) {
25
- const bytes = codec.decode(regexp.exec(address)[2]).slice(-37);
26
- // https://github.com/nanocurrency/raiblocks/blob/master/rai/lib/numbers.cpp#L73
27
- const computedChecksum = cryptoUtils.blake2b(cryptoUtils.toHex(bytes.slice(0, -5)), 5);
28
- const checksum = cryptoUtils.toHex(bytes.slice(-5).reverse());
29
-
30
- return computedChecksum === checksum
31
- }
32
- };
@@ -1,18 +0,0 @@
1
- import {Buffer} from 'buffer'
2
-
3
- import cryptoUtils from '../crypto/utils.js'
4
- import {Address} from '../types.js'
5
- import {getAddress} from '../helpers.js'
6
-
7
- export default {
8
- isValidAddress(address: Address) {
9
- const addr = getAddress(address).toString().toUpperCase().replace(/-/g, '');
10
- if (!address || addr.length !== 40) {
11
- return false;
12
- }
13
- const decoded = cryptoUtils.toHex(cryptoUtils.base32.b32decode(addr));
14
- const stepThreeChecksum = cryptoUtils.keccak256Checksum(Buffer.from(decoded.slice(0, 42), 'hex'));
15
-
16
- return stepThreeChecksum === decoded.slice(42);
17
- }
18
- }
@@ -1,57 +0,0 @@
1
- import cryptoUtils from '../crypto/utils.js'
2
- import {Address} from '../types.js'
3
- import {getAddress} from '../helpers.js'
4
-
5
- // from https://github.com/paritytech/substrate/wiki/External-Address-Format-(SS58)
6
- const addressFormats = [
7
- {addressLength: 3, accountIndexLength: 1, checkSumLength: 1},
8
- {addressLength: 4, accountIndexLength: 2, checkSumLength: 1},
9
- {addressLength: 5, accountIndexLength: 2, checkSumLength: 2},
10
- {addressLength: 6, accountIndexLength: 4, checkSumLength: 1},
11
- {addressLength: 7, accountIndexLength: 4, checkSumLength: 2},
12
- {addressLength: 8, accountIndexLength: 4, checkSumLength: 3},
13
- {addressLength: 9, accountIndexLength: 4, checkSumLength: 4},
14
- {addressLength: 10, accountIndexLength: 8, checkSumLength: 1},
15
- {addressLength: 11, accountIndexLength: 8, checkSumLength: 2},
16
- {addressLength: 12, accountIndexLength: 8, checkSumLength: 3},
17
- {addressLength: 13, accountIndexLength: 8, checkSumLength: 4},
18
- {addressLength: 14, accountIndexLength: 8, checkSumLength: 5},
19
- {addressLength: 15, accountIndexLength: 8, checkSumLength: 6},
20
- {addressLength: 16, accountIndexLength: 8, checkSumLength: 7},
21
- {addressLength: 17, accountIndexLength: 8, checkSumLength: 8},
22
- {addressLength: 34, accountIndexLength: 32, checkSumLength: 2},
23
- ];
24
-
25
- function verifyChecksum(address: string) {
26
- try {
27
- const preImage = '53533538505245'
28
- const decoded = cryptoUtils.base58(address);
29
- const addressType = cryptoUtils.byteArray2hexStr(decoded.slice(0, 1));
30
- const addressAndChecksum = decoded.slice(1)
31
-
32
- // get the address format
33
- const addressFormat = addressFormats.find(af => af.addressLength === addressAndChecksum.length);
34
-
35
- if (!addressFormat) {
36
- throw new Error('Invalid address length');
37
- }
38
-
39
- const decodedAddress = cryptoUtils.byteArray2hexStr(addressAndChecksum.slice(0, addressFormat.accountIndexLength));
40
- const checksum = cryptoUtils.byteArray2hexStr(addressAndChecksum.slice(-addressFormat.checkSumLength));
41
-
42
- const calculatedHash = cryptoUtils
43
- .blake2b(preImage + addressType + decodedAddress, 64)
44
- .substr(0, addressFormat.checkSumLength * 2)
45
- .toUpperCase();
46
-
47
- return calculatedHash == checksum;
48
- } catch (err) {
49
- return false;
50
- }
51
- }
52
-
53
- export default {
54
- isValidAddress(address: Address) {
55
- return verifyChecksum(getAddress(address))
56
- },
57
- }
@@ -1,44 +0,0 @@
1
- import baseX from 'base-x'
2
-
3
- import cryptoUtils from '../crypto/utils.js'
4
- import {Address} from '../types.js'
5
- import {getAddress, getMemo} from '../helpers.js'
6
-
7
- const ALLOWED_CHARS = 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz';
8
-
9
- const codec = baseX(ALLOWED_CHARS);
10
- const regexp = new RegExp('^r[' + ALLOWED_CHARS + ']{27,35}$');
11
-
12
- export default {
13
- /**
14
- * ripple address validation
15
- */
16
- isValidAddress: function (address: Address) {
17
- const addr = getAddress(address)
18
- const memo = getMemo(address)
19
-
20
- const validAddress = regexp.test(addr) && this.verifyChecksum(addr);
21
-
22
- return validAddress && this.verifyMemo(memo)
23
- },
24
-
25
- isValidMemo(memo: string): boolean {
26
- return this.verifyMemo(memo)
27
- },
28
-
29
- verifyMemo(memo?: string): boolean {
30
- if (!memo) return true; // Optional
31
-
32
- const memoNumber = Number(memo);
33
- // A memo is a 32-bit unsigned integer.
34
- return /^[0-9]+$/.test(memo) && memoNumber >= 0 && memoNumber <= 4294967295;
35
- },
36
-
37
- verifyChecksum(address: string): boolean {
38
- const bytes = codec.decode(address);
39
- const computedChecksum = cryptoUtils.sha256Checksum(cryptoUtils.toHex(bytes.slice(0, -4)));
40
- const checksum = cryptoUtils.toHex(bytes.slice(-4));
41
-
42
- return computedChecksum === checksum
43
- }
44
- };
@@ -1,33 +0,0 @@
1
- import isEqual from 'lodash.isequal'
2
-
3
- import cryptoUtils from '../crypto/utils.js'
4
- import {Address} from '../types.js'
5
- import {getAddress} from '../helpers.js'
6
-
7
- function hexToBytes(hex: string) {
8
- const bytes = []
9
- for (let c = 0; c < hex.length; c += 2) {
10
- bytes.push(parseInt(hex.substr(c, 2), 16))
11
- }
12
- return bytes
13
- }
14
-
15
- function verifyChecksum(address: string) {
16
- const checksumBytes = address.slice(0, 32 * 2)
17
- const check = address.slice(32 * 2, 38 * 2)
18
- const blakeHash = cryptoUtils.blake2b(checksumBytes, 32).slice(0, 6 * 2)
19
- return !!isEqual(blakeHash, check)
20
- }
21
-
22
- export default {
23
- isValidAddress: function (address: Address) {
24
- const addr = getAddress(address)
25
- if (addr.length !== 76) {
26
- // Check if it has the basic requirements of an address
27
- return false
28
- }
29
-
30
- // Otherwise check each case
31
- return verifyChecksum(addr)
32
- },
33
- }
@@ -1,21 +0,0 @@
1
- import base58Validator from './base58_validator.js';
2
- import {Address} from '../types.js'
3
- import {getAddress} from '../helpers.js'
4
- import {Buffer} from 'buffer'
5
- import base58 from '../crypto/base58.js'
6
-
7
- export default {
8
- isValidAddress: function (address: Address) {
9
- const validBase58 = base58Validator.isValidAddress(getAddress(address), {
10
- maxLength: 44,
11
- minLength: 43,
12
- })
13
-
14
- if (!validBase58) {
15
- return false
16
- }
17
-
18
- // solana address must be 32 bytes
19
- return base58.decode(getAddress(address)).length === 32
20
- }
21
- };
@@ -1,36 +0,0 @@
1
- import base58 from '../crypto/base58.js'
2
- import cryptoUtils from '../crypto/utils.js'
3
- import {Address} from '../types.js'
4
- import {getAddress} from '../helpers.js'
5
-
6
- const prefix = new Uint8Array([6, 161, 159]);
7
-
8
- function decodeRaw(buffer: any) {
9
- let payload = buffer.slice(0, -4);
10
- let checksum = buffer.slice(-4);
11
- let newChecksum = cryptoUtils.hexStr2byteArray(
12
- cryptoUtils.sha256x2(cryptoUtils.byteArray2hexStr(payload))
13
- );
14
-
15
- if (checksum[0] ^ newChecksum[0] |
16
- checksum[1] ^ newChecksum[1] |
17
- checksum[2] ^ newChecksum[2] |
18
- checksum[3] ^ newChecksum[3])
19
- return;
20
- return payload;
21
- }
22
-
23
- export default {
24
- isValidAddress(address: Address) {
25
- try {
26
- let buffer = base58.decode(getAddress(address));
27
- let payload = decodeRaw(buffer);
28
- if (!payload)
29
- return false;
30
- payload.slice(prefix.length);
31
- return true;
32
- } catch (e) {
33
- return false;
34
- }
35
- }
36
- }
@@ -1,59 +0,0 @@
1
- import {Address} from '../types.js'
2
- import cryptoUtils from '../crypto/utils.js'
3
- import {getAddress} from '../helpers.js'
4
-
5
- function decodeBase58Address(base58String: string) {
6
- if (typeof (base58String) !== 'string') {
7
- return false;
8
- }
9
- if (base58String.length !== 34) {
10
- return false;
11
- }
12
-
13
- let address: number[]
14
- try {
15
- address = cryptoUtils.base58(base58String);
16
- } catch (e) {
17
- return false
18
- }
19
-
20
- const len = address.length;
21
- const offset = len - 4;
22
- const checkSum = address.slice(offset);
23
- address = address.slice(0, offset);
24
- const hash0 = cryptoUtils.sha256(cryptoUtils.byteArray2hexStr(address));
25
- const hash1 = cryptoUtils.hexStr2byteArray(cryptoUtils.sha256(hash0));
26
- const checkSum1 = hash1.slice(0, 4);
27
- if (checkSum[0] === checkSum1[0] && checkSum[1] === checkSum1[1] && checkSum[2]
28
- === checkSum1[2] && checkSum[3] === checkSum1[3]
29
- ) {
30
- return address;
31
- }
32
-
33
- return false;
34
- }
35
-
36
- interface TronValidatorOpts {
37
- addressTypes: string[],
38
- }
39
-
40
- const DefaultTronValidatorOpts: TronValidatorOpts = {
41
- addressTypes: ['65']
42
- }
43
-
44
- export default (opts?: TronValidatorOpts) => ({
45
- isValidAddress: function (address: Address) {
46
- const _opts = {...DefaultTronValidatorOpts, ...opts}
47
- const addr = decodeBase58Address(getAddress(address));
48
-
49
- if (!addr) {
50
- return false;
51
- }
52
-
53
- if (addr.length !== 21) {
54
- return false;
55
- }
56
-
57
- return _opts.addressTypes.includes(addr[0].toString());
58
- }
59
- });
@@ -1,54 +0,0 @@
1
- import baseX from 'base-x'
2
- import crc from 'crc'
3
-
4
- import cryptoUtils from '../crypto/utils.js'
5
- import {Address} from '../types.js'
6
- import {getAddress, getMemo} from '../helpers.js'
7
-
8
- const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
9
-
10
- const base32 = baseX(ALPHABET);
11
- const regexp = new RegExp('^[' + ALPHABET + ']{56}$');
12
- const ed25519PublicKeyVersionByte = (6 << 3);
13
-
14
- function swap16(number: number) {
15
- const lower = number & 0xFF;
16
- const upper = (number >> 8) & 0xFF;
17
- return (lower << 8) | upper;
18
- }
19
-
20
- export default {
21
- isValidAddress: function (address: Address) {
22
- const addr = getAddress(address)
23
- const memo = getMemo(address)
24
-
25
- const validAddress = regexp.test(addr) && this.verifyChecksum(addr);
26
-
27
- return validAddress && this.verifyMemo(memo)
28
- },
29
-
30
- isValidMemo(memo: string): boolean {
31
- return this.verifyMemo(memo)
32
- },
33
-
34
- verifyMemo(memo?: string): boolean {
35
- if (!memo) return true; // Optional
36
-
37
- // Ensure it's a valid UTF-8 string and does not exceed 28 bytes
38
- const encoder = new TextEncoder();
39
- return encoder.encode(memo).length <= 28;
40
- },
41
-
42
- verifyChecksum: function (address: string) {
43
- // based on https://github.com/stellar/js-stellar-base/blob/master/src/strkey.js#L126
44
- var bytes = base32.decode(address);
45
- if (bytes[0] !== ed25519PublicKeyVersionByte) {
46
- return false;
47
- }
48
-
49
- const computedChecksum = cryptoUtils.numberToHex(swap16(crc.crc16xmodem(bytes.slice(0, -2))), 4);
50
- const checksum = cryptoUtils.toHex(bytes.slice(-2));
51
-
52
- return computedChecksum === checksum
53
- }
54
- };
@@ -1,59 +0,0 @@
1
- import algorand from './algorand.json'
2
- import aptos from './aptos.json'
3
- import bch from './bch.json'
4
- import bchTestnet from './bch-testnet.json'
5
- import btc from './btc.json'
6
- import btcTestnet from './btc-testnet.json'
7
- import cardano from './cardano.json'
8
- import doge from './doge.json'
9
- import dogeTestnet from './doge-testnet.json'
10
- import eos from './eos.json'
11
- import evm from './evm.json'
12
- import hbar from './hbar.json'
13
- import ltc from './ltc.json'
14
- import ltcTestnet from './ltc-testnet.json'
15
- import monero from './monero.json'
16
- import moneroTestnet from './monero-testnet.json'
17
- import nem from './nem.json'
18
- import nano from './nano.json'
19
- import polkadot from './polkadot.json'
20
- import ripple from './ripple.json'
21
- import sia from './sia.json'
22
- import solana from './solana.json'
23
- import sui from './sui.json'
24
- import tezos from './tezos.json'
25
- import tron from './tron.json'
26
- import xlm from './xlm.json'
27
-
28
- export type TestAddress = string | { address: string, memo?: string } & { invalid?: boolean, invalidMemo?: boolean }
29
-
30
- const testAddresses: Record<string, TestAddress[]> = {
31
- aptos,
32
- algorand,
33
- bch,
34
- 'bch-testnet': bchTestnet,
35
- btc,
36
- 'btc-testnet': btcTestnet,
37
- cardano,
38
- doge,
39
- 'doge-testnet': dogeTestnet,
40
- eos,
41
- evm,
42
- hbar,
43
- ltc,
44
- 'ltc-testnet': ltcTestnet,
45
- monero,
46
- 'monero-testnet': moneroTestnet,
47
- nem,
48
- nano,
49
- polkadot,
50
- ripple,
51
- sia,
52
- sui,
53
- solana,
54
- tezos,
55
- tron,
56
- xlm,
57
- } as const;
58
-
59
- export default testAddresses
@@ -1,6 +0,0 @@
1
- [
2
- "GONISIUAYDOMHM7VURRAAAP5H6OAWRRBCPXEIOZO3QI7TZKR5GTAQ7WK7Y",
3
- "LCRDY3LYAANTVS3XRHEHWHGXRTKZYVTX55P5IA2AT5ZDJ4CWZFFZIKVHLI",
4
- "SP745JJR4KPRQEXJZHVIEN736LYTL2T2DFMG3OIIFJBV66K73PHNMDCZVM",
5
- "AKHSHWO2TUWE53RMVG6ZUBNAEX6MTYPT76TCIDCDWYUUTK6HCJTZS2HDQU"
6
- ]
@@ -1,6 +0,0 @@
1
- [
2
- "0xaabf25b0c115130a4ad88bfa08627c5a103b7851e90869c23fadaf0512dd5133",
3
- "0xdce6ab89a1d26c99491a70fd4a2536d065925114deee916a1ae7d35007f4dedf",
4
- "0xd05448f15a03f25b2816c4538b72bd54752ba7522d4831a4c9ea5a613becb47a",
5
- "0x39f521d22f611a4dec2f790fef2e4f8d1f96550509e85beccf8acec52c1a7219"
6
- ]
@@ -1,4 +0,0 @@
1
- [
2
- "mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef",
3
- "2MxKEf2su6FGAUfCEAHreGFQvEYrfYNHvL7"
4
- ]
@@ -1,7 +0,0 @@
1
- [
2
- "12KYrjTdVGjFMtaxERSk3gphreJ5US8aUP",
3
- "12QeMLzSrB8XH8FvEzPMVoRxVAzTr5XM2y",
4
- "1oNLrsHnBcR6dpaBpwz3LSwutbUNkNSjs",
5
- "3NJZLcZEEYBpxYEUGewU4knsQRn1WM5Fkt",
6
- "bitcoincash:qq4v32mtagxac29my6gwj6fd4tmqg8rysu23dax807"
7
- ]
@@ -1,13 +0,0 @@
1
- [
2
- "mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef",
3
- "GSa5espVLNseXEfKt46zEdS6jrPkmFghBU",
4
- "mptPo5AvLzJXi4T82vR6g82fT5uJ6HsQCu",
5
- "mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef",
6
- "2MxKEf2su6FGAUfCEAHreGFQvEYrfYNHvL7",
7
- "tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7",
8
- "GSa5espVLNseXEfKt46zEdS6jrPkmFghBU",
9
- "tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7",
10
- "tb1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesrxh6hy",
11
- "mxHzYDeCZD8qzvfVzTqPS65p23inGkRvXT",
12
- "2N3ATmqPqnHR243HiwtqpCFwSsNdTiCvmmv"
13
- ]
@@ -1,14 +0,0 @@
1
- [
2
- "12KYrjTdVGjFMtaxERSk3gphreJ5US8aUP",
3
- "12QeMLzSrB8XH8FvEzPMVoRxVAzTr5XM2y",
4
- "15uwigGExiNQxTNr1QSZYPXJMp9Px2YnVU",
5
- "3FyVFsEyyBPzHjD3qUEgX7Jsn4tcHNZFkn",
6
- "38mKdURe1zcQyrFqRLzR8PRao3iLGEPVsU",
7
- "BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4",
8
- "1oNLrsHnBcR6dpaBpwz3LSwutbUNkNSjs",
9
- "1HVDCg2KrPBH1Mg5SK9fGjAR9KVqyMMdBC",
10
- "1SQHtwR5oJRKLfiWQ2APsAd9miUc4k2ez",
11
- "116CGDLddrZhMrTwhCVJXtXQpxygTT1kHd",
12
- "3NJZLcZEEYBpxYEUGewU4knsQRn1WM5Fkt",
13
- "bc1q2t63ewm3mvh0ztmnmezxm7s0tefknenxlrlwrk"
14
- ]
@@ -1,8 +0,0 @@
1
- [
2
- "Ae2tdPwUPEYzs5BRbGcoS3DXvK8mwgggmESz4HqUwMyaS9eNksZGz1LMS9v",
3
- "Ae2tdPwUPEYxYNJw1He1esdZYvjmr4NtPzUsGTiqL9zd8ohjZYQcwu6kom7",
4
- "DdzFFzCqrhsfdzUZxvuBkhV8Lpm9p43p9ubh79GCTkxJikAjKh51qhtCFMqUniC5tv5ZExyvSmAte2Du2tGimavSo6qSgXbjiy8qZRTg",
5
- "Ae2tdPwUPEZKmwoy3AU3cXb5Chnasj6mvVNxV1H11997q3VW5ihbSfQwGpm",
6
- "4swhHtxKapQbj3TZEipgtp7NQzcRWDYqCxXYoPQWjGyHmhxS1w1TjUEszCQT1sQucGwmPQMYdv1FYs3d51KgoubviPBf",
7
- "addr1qxy3w62dupy9pzmpdfzxz4k240w5vawyagl5m9djqquyymrtm3grn7gpnjh7rwh2dy62hk8639lt6kzn32yxq960usnq9pexvt"
8
- ]
@@ -1,3 +0,0 @@
1
- [
2
- "2MxKEf2su6FGAUfCEAHreGFQvEYrfYNHvL7"
3
- ]
@@ -1,7 +0,0 @@
1
- [
2
- "DPpJVPpvPNP6i6tMj4rTycAGh8wReTqaSU",
3
- "DNzLUN6MyYVS5zf4Xc2yK69V3dXs6Mxia5",
4
- "DPS6iZj7roHquvwRYXNBua9QtKPzigUUhM",
5
- "A7JjzK9k9x5b2MkkQzqt91WZsuu7wTu6iS",
6
- "A5qAJPAc1Ym4A815HcvLKe6Bp5DJeRPJtF"
7
- ]
@@ -1,6 +0,0 @@
1
- [
2
- "bittrexacct1",
3
- "binancecleos",
4
- "123456789012",
5
- "12345678.012"
6
- ]
@@ -1,20 +0,0 @@
1
- [
2
- "0xE37c0D48d68da5c5b14E5c1a9f1CFE802776D9FF",
3
- "0xa00354276d2fC74ee91e37D085d35748613f4748",
4
- "0xAff4d6793F584a473348EbA058deb8caad77a288",
5
- "0xc6d9d2cd449a754c494264e1809c50e34d64562b",
6
- "0x52908400098527886E0F7030069857D2E4169EE7",
7
- "0x8617E340B3D01FA5F11F306F4090FD50E238070D",
8
- "0x27b1fdb04752bbc536007a920d24acb045561c26",
9
- "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed",
10
- "0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359",
11
- "0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB",
12
- "0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb",
13
- "0xE37c0D48d68da5c5b14E5c1a9f1CFE802776D9FF",
14
- "0xa00354276d2fC74ee91e37D085d35748613f4748",
15
- "0xAff4d6793F584a473348EbA058deb8caad77a288",
16
- "0xc6d9d2cd449a754c494264e1809c50e34d64562b",
17
- "0x52908400098527886E0F7030069857D2E4169EE7",
18
- "0x8617E340B3D01FA5F11F306F4090FD50E238070D",
19
- "0xde709f2102306220921060314715629080e2fb77"
20
- ]
@@ -1,11 +0,0 @@
1
- [
2
- "0.0.12345",
3
- "0.0.987654321",
4
- "0.1.54321",
5
- "1.0.123",
6
- "2.3.45678",
7
- "0.2.789",
8
- "0.2.789",
9
- "0.0.1",
10
- "10.5.987"
11
- ]
@@ -1,10 +0,0 @@
1
- [
2
- "mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef",
3
- "2MxKEf2su6FGAUfCEAHreGFQvEYrfYNHvL7",
4
- "2N5jUhwzndtTUXspDGJkAvP7WCCRLQkgMfX",
5
- "QW2SvwjaJU8LD6GSmtm1PHnBG2xPuxwZFy",
6
- "QjpzxpbLp5pCGsCczMbfh1uhC3P89QZavY",
7
- "tltc1qu78xur5xnq6fjy83amy0qcjfau8m367defyhms",
8
- "mipcBbFg9gMiCh81Kj8tqqdgoZub1ZJRfn",
9
- "nYNZ81BicMYUDt99dFsMdPo5JjfrMB6T3k"
10
- ]
@@ -1,8 +0,0 @@
1
- [
2
- "LVg2kJoFNg45Nbpy53h7Fe1wKyeXVRhMH9",
3
- "LTpYZG19YmfvY2bBDYtCKpunVRw7nVgRHW",
4
- "Lb6wDP2kHGyWC7vrZuZAgV7V4ECyDdH7a6",
5
- "ltc1qg42tkwuuxefutzxezdkdel39gfstuap288mfea",
6
- "ltc1qg42tkwuuxefutzxezdkdel39gfstuap288mfea",
7
- "LLUvRjeoNCa1gRuoVzFAzr3pWdu21JJESa"
8
- ]
@@ -1,5 +0,0 @@
1
- [
2
- "A2be3UvzMtkJtxRYgcCbQt2y7Rp2eLVGqNTWfZeankrWimSMM4y7uMP6B9oAZaHsXTj8KFSerkSkkVRuEuEca9QM8VhxCNU",
3
- "9uXRFi4PZMqhsnthBF6bGdfVnBSZtfKkR7Td8qPM7jUKZeTfR1tLhCoTLqYNE12xuiQg3aWGiLw83bWsqwTRLaM4Jk47xYM",
4
- "9tFTaQM39JXhULZsHauPHhjFrjcGSGXoijEPYoRgAky9Veck2mFp3EifQ2tKHmEHuuUoFfgYRNR2bVaborz5oi8JA8xkqjY"
5
- ]
@@ -1,7 +0,0 @@
1
- [
2
- "47zQ5LAivg6hNCgijXSEFVLX7mke1bgM6YGLFaANDoJbgXDymcAAZvvMNt2PmMpqEe5qRy2zyfMYXdwpmdyitiFh84xnPG2",
3
- "48bWuoDG75CXMDHbmPEvUF2hm1vLDic7ZJ7hqRkL65QR9p13AQAX4eEACXNk4YP115Q4KRVZnAvmMBHrcGfv9FvKPZnH6vH",
4
- "88WB4JKdQVhWfkc8cBT9EEJ6vejSAqKJHbV1dXBAXdpgQovtNDNRxfKCS7wB8rHQ5D5zH2Pd1YkyMNNQDie6ZfeZ311fPgn",
5
- "4Gd4DLiXzBmbVX2FZZ3Cvu6fUaWACup1qDowprUCje1kSP4FmbftiJMSfV8kWZXNqmVwj4m52xqtgFNUudVmsmGkGvkLcCibWfVUfUFVB7",
6
- "4J5sF94AzXgFgx8LuWc9dcWkJkGkD3cL3L2AuhX6QA9jFvSxxj6QhHqHXqM2b2Go7G8RyDzEbHxYd9G26XUUbuJChipEyBz9fENMU2Ua9b"
7
- ]