@rosen-bridge/address-codec 1.2.0 → 2.0.0-eae8c5f0
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.
- package/CHANGELOG.md +23 -0
- package/dist/const.d.ts +0 -40
- package/dist/const.d.ts.map +1 -1
- package/dist/const.js +1 -44
- package/dist/decoder.d.ts +1 -1
- package/dist/decoder.d.ts.map +1 -1
- package/dist/decoder.js +26 -32
- package/dist/encoder.d.ts +1 -1
- package/dist/encoder.d.ts.map +1 -1
- package/dist/encoder.js +26 -47
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -4
- package/dist/types.d.ts +0 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -6
- package/dist/validator.d.ts +2 -1
- package/dist/validator.d.ts.map +1 -1
- package/dist/validator.js +27 -61
- package/package.json +9 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# @rosen-bridge/address-codec
|
|
2
2
|
|
|
3
|
+
## 2.0.0-eae8c5f0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- The `validateAddress` no longer return anything (in case of invalid or unsupported address, it throws error)
|
|
8
|
+
- Change `RUNES_CHAIN` variable name to `BITCOIN_RUNES_CHAIN`
|
|
9
|
+
|
|
10
|
+
### Minor Changes
|
|
11
|
+
|
|
12
|
+
- Export 3 objects consists of the chain-specific implementation for the address encoder, decoder and validator
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Update dependencies
|
|
17
|
+
- @rosen-bridge/address-codec-bitcoin@0.1.0-eae8c5f0
|
|
18
|
+
- @rosen-bridge/address-codec-bitcoin-runes@0.1.0-eae8c5f0
|
|
19
|
+
- @rosen-bridge/address-codec-cardano@0.1.0-eae8c5f0
|
|
20
|
+
- @rosen-bridge/address-codec-doge@0.1.0-eae8c5f0
|
|
21
|
+
- @rosen-bridge/address-codec-ergo@0.1.0-eae8c5f0
|
|
22
|
+
- @rosen-bridge/address-codec-evm@0.1.0-eae8c5f0
|
|
23
|
+
- @rosen-bridge/address-codec-firo@0.1.0-eae8c5f0
|
|
24
|
+
- @rosen-bridge/address-codec-handshake@0.1.0-eae8c5f0
|
|
25
|
+
|
|
3
26
|
## 1.2.0
|
|
4
27
|
|
|
5
28
|
### Minor Changes
|
package/dist/const.d.ts
CHANGED
|
@@ -1,43 +1,3 @@
|
|
|
1
|
-
export declare const BITCOIN_CHAIN = "bitcoin";
|
|
2
|
-
export declare const RUNES_CHAIN = "bitcoin-runes";
|
|
3
|
-
export declare const CARDANO_CHAIN = "cardano";
|
|
4
|
-
export declare const ERGO_CHAIN = "ergo";
|
|
5
1
|
export declare const ETHEREUM_CHAIN = "ethereum";
|
|
6
2
|
export declare const BINANCE_CHAIN = "binance";
|
|
7
|
-
export declare const DOGE_CHAIN = "doge";
|
|
8
|
-
export declare const FIRO_CHAIN = "firo";
|
|
9
|
-
export declare const HANDSHAKE_CHAIN = "handshake";
|
|
10
|
-
export declare const DOGE_NETWORK: {
|
|
11
|
-
messagePrefix: string;
|
|
12
|
-
bech32: string;
|
|
13
|
-
bip32: {
|
|
14
|
-
public: number;
|
|
15
|
-
private: number;
|
|
16
|
-
};
|
|
17
|
-
pubKeyHash: number;
|
|
18
|
-
scriptHash: number;
|
|
19
|
-
wif: number;
|
|
20
|
-
};
|
|
21
|
-
export declare const FIRO_NETWORK: {
|
|
22
|
-
messagePrefix: string;
|
|
23
|
-
bech32: string;
|
|
24
|
-
bip32: {
|
|
25
|
-
public: number;
|
|
26
|
-
private: number;
|
|
27
|
-
};
|
|
28
|
-
pubKeyHash: number;
|
|
29
|
-
scriptHash: number;
|
|
30
|
-
wif: number;
|
|
31
|
-
};
|
|
32
|
-
export declare const HANDSHAKE_NETWORK: {
|
|
33
|
-
messagePrefix: string;
|
|
34
|
-
bech32: string;
|
|
35
|
-
bip32: {
|
|
36
|
-
public: number;
|
|
37
|
-
private: number;
|
|
38
|
-
};
|
|
39
|
-
pubKeyHash: number;
|
|
40
|
-
scriptHash: number;
|
|
41
|
-
wif: number;
|
|
42
|
-
};
|
|
43
3
|
//# sourceMappingURL=const.d.ts.map
|
package/dist/const.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../lib/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../lib/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,aAAa,CAAC;AACzC,eAAO,MAAM,aAAa,YAAY,CAAC"}
|
package/dist/const.js
CHANGED
|
@@ -1,46 +1,3 @@
|
|
|
1
|
-
export const BITCOIN_CHAIN = 'bitcoin';
|
|
2
|
-
export const RUNES_CHAIN = 'bitcoin-runes';
|
|
3
|
-
export const CARDANO_CHAIN = 'cardano';
|
|
4
|
-
export const ERGO_CHAIN = 'ergo';
|
|
5
1
|
export const ETHEREUM_CHAIN = 'ethereum';
|
|
6
2
|
export const BINANCE_CHAIN = 'binance';
|
|
7
|
-
|
|
8
|
-
export const FIRO_CHAIN = 'firo';
|
|
9
|
-
export const HANDSHAKE_CHAIN = 'handshake';
|
|
10
|
-
export const DOGE_NETWORK = {
|
|
11
|
-
// Doge network parameters
|
|
12
|
-
messagePrefix: '\x19Dogecoin Signed Message:\n',
|
|
13
|
-
bech32: 'dc',
|
|
14
|
-
bip32: {
|
|
15
|
-
public: 0x02facafd,
|
|
16
|
-
private: 0x02fac398,
|
|
17
|
-
},
|
|
18
|
-
pubKeyHash: 0x1e,
|
|
19
|
-
scriptHash: 0x16,
|
|
20
|
-
wif: 0x9e,
|
|
21
|
-
};
|
|
22
|
-
export const FIRO_NETWORK = {
|
|
23
|
-
// Firo network parameters
|
|
24
|
-
messagePrefix: '\x19Firo Signed Message:\n',
|
|
25
|
-
bech32: 'firo',
|
|
26
|
-
bip32: {
|
|
27
|
-
public: 0x0488b21e,
|
|
28
|
-
private: 0x0488ade4,
|
|
29
|
-
},
|
|
30
|
-
pubKeyHash: 0x52,
|
|
31
|
-
scriptHash: 0x07,
|
|
32
|
-
wif: 0xd2,
|
|
33
|
-
};
|
|
34
|
-
export const HANDSHAKE_NETWORK = {
|
|
35
|
-
// Handshake network parameters
|
|
36
|
-
messagePrefix: '\x18Handshake Signed Message:\n',
|
|
37
|
-
bech32: 'hs',
|
|
38
|
-
bip32: {
|
|
39
|
-
public: 0x0488b21e,
|
|
40
|
-
private: 0x0488ade4,
|
|
41
|
-
},
|
|
42
|
-
pubKeyHash: -1,
|
|
43
|
-
scriptHash: -1,
|
|
44
|
-
wif: -1,
|
|
45
|
-
};
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUNqQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUNqQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO0FBQ2pDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUM7QUFFM0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHO0lBQzFCLDBCQUEwQjtJQUMxQixhQUFhLEVBQUUsZ0NBQWdDO0lBQy9DLE1BQU0sRUFBRSxJQUFJO0lBQ1osS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLFVBQVU7UUFDbEIsT0FBTyxFQUFFLFVBQVU7S0FDcEI7SUFDRCxVQUFVLEVBQUUsSUFBSTtJQUNoQixVQUFVLEVBQUUsSUFBSTtJQUNoQixHQUFHLEVBQUUsSUFBSTtDQUNWLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsMEJBQTBCO0lBQzFCLGFBQWEsRUFBRSw0QkFBNEI7SUFDM0MsTUFBTSxFQUFFLE1BQU07SUFDZCxLQUFLLEVBQUU7UUFDTCxNQUFNLEVBQUUsVUFBVTtRQUNsQixPQUFPLEVBQUUsVUFBVTtLQUNwQjtJQUNELFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLEdBQUcsRUFBRSxJQUFJO0NBQ1YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLCtCQUErQjtJQUMvQixhQUFhLEVBQUUsaUNBQWlDO0lBQ2hELE1BQU0sRUFBRSxJQUFJO0lBQ1osS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLFVBQVU7UUFDbEIsT0FBTyxFQUFFLFVBQVU7S0FDcEI7SUFDRCxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2QsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNkLEdBQUcsRUFBRSxDQUFDLENBQUM7Q0FDUixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEJJVENPSU5fQ0hBSU4gPSAnYml0Y29pbic7XG5leHBvcnQgY29uc3QgUlVORVNfQ0hBSU4gPSAnYml0Y29pbi1ydW5lcyc7XG5leHBvcnQgY29uc3QgQ0FSREFOT19DSEFJTiA9ICdjYXJkYW5vJztcbmV4cG9ydCBjb25zdCBFUkdPX0NIQUlOID0gJ2VyZ28nO1xuZXhwb3J0IGNvbnN0IEVUSEVSRVVNX0NIQUlOID0gJ2V0aGVyZXVtJztcbmV4cG9ydCBjb25zdCBCSU5BTkNFX0NIQUlOID0gJ2JpbmFuY2UnO1xuZXhwb3J0IGNvbnN0IERPR0VfQ0hBSU4gPSAnZG9nZSc7XG5leHBvcnQgY29uc3QgRklST19DSEFJTiA9ICdmaXJvJztcbmV4cG9ydCBjb25zdCBIQU5EU0hBS0VfQ0hBSU4gPSAnaGFuZHNoYWtlJztcblxuZXhwb3J0IGNvbnN0IERPR0VfTkVUV09SSyA9IHtcbiAgLy8gRG9nZSBuZXR3b3JrIHBhcmFtZXRlcnNcbiAgbWVzc2FnZVByZWZpeDogJ1xceDE5RG9nZWNvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuJyxcbiAgYmVjaDMyOiAnZGMnLFxuICBiaXAzMjoge1xuICAgIHB1YmxpYzogMHgwMmZhY2FmZCxcbiAgICBwcml2YXRlOiAweDAyZmFjMzk4LFxuICB9LFxuICBwdWJLZXlIYXNoOiAweDFlLFxuICBzY3JpcHRIYXNoOiAweDE2LFxuICB3aWY6IDB4OWUsXG59O1xuXG5leHBvcnQgY29uc3QgRklST19ORVRXT1JLID0ge1xuICAvLyBGaXJvIG5ldHdvcmsgcGFyYW1ldGVyc1xuICBtZXNzYWdlUHJlZml4OiAnXFx4MTlGaXJvIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gIGJlY2gzMjogJ2Zpcm8nLFxuICBiaXAzMjoge1xuICAgIHB1YmxpYzogMHgwNDg4YjIxZSxcbiAgICBwcml2YXRlOiAweDA0ODhhZGU0LFxuICB9LFxuICBwdWJLZXlIYXNoOiAweDUyLFxuICBzY3JpcHRIYXNoOiAweDA3LFxuICB3aWY6IDB4ZDIsXG59O1xuXG5leHBvcnQgY29uc3QgSEFORFNIQUtFX05FVFdPUksgPSB7XG4gIC8vIEhhbmRzaGFrZSBuZXR3b3JrIHBhcmFtZXRlcnNcbiAgbWVzc2FnZVByZWZpeDogJ1xceDE4SGFuZHNoYWtlIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gIGJlY2gzMjogJ2hzJyxcbiAgYmlwMzI6IHtcbiAgICBwdWJsaWM6IDB4MDQ4OGIyMWUsXG4gICAgcHJpdmF0ZTogMHgwNDg4YWRlNCxcbiAgfSxcbiAgcHViS2V5SGFzaDogLTEsXG4gIHNjcmlwdEhhc2g6IC0xLFxuICB3aWY6IC0xLFxufTtcbiJdfQ==
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVUSEVSRVVNX0NIQUlOID0gJ2V0aGVyZXVtJztcbmV4cG9ydCBjb25zdCBCSU5BTkNFX0NIQUlOID0gJ2JpbmFuY2UnO1xuIl19
|
package/dist/decoder.d.ts
CHANGED
package/dist/decoder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../lib/decoder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../lib/decoder.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAUrE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,MAAM,EACb,gBAAgB,MAAM,KACrB,MAIF,CAAC"}
|
package/dist/decoder.js
CHANGED
|
@@ -1,39 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
import { BITCOIN_CHAIN, decodeBitcoinAddress, } from '@rosen-bridge/address-codec-bitcoin';
|
|
2
|
+
import { BITCOIN_RUNES_CHAIN, decodeBitcoinRunesAddress, } from '@rosen-bridge/address-codec-bitcoin-runes';
|
|
3
|
+
import { CARDANO_CHAIN, decodeCardanoAddress, } from '@rosen-bridge/address-codec-cardano';
|
|
4
|
+
import { DOGE_CHAIN, decodeDogeAddress, } from '@rosen-bridge/address-codec-doge';
|
|
5
|
+
import { ERGO_CHAIN, decodeErgoAddress, } from '@rosen-bridge/address-codec-ergo';
|
|
6
|
+
import { generateEvmAddressDecoder } from '@rosen-bridge/address-codec-evm';
|
|
7
|
+
import { FIRO_CHAIN, decodeFiroAddress, } from '@rosen-bridge/address-codec-firo';
|
|
8
|
+
import { HANDSHAKE_CHAIN, decodeHandshakeAddress, } from '@rosen-bridge/address-codec-handshake';
|
|
9
|
+
import { BINANCE_CHAIN, ETHEREUM_CHAIN } from './const';
|
|
10
|
+
import { UnsupportedChainError } from './types';
|
|
11
|
+
export const chainDecoders = {
|
|
12
|
+
[ERGO_CHAIN]: decodeErgoAddress,
|
|
13
|
+
[CARDANO_CHAIN]: decodeCardanoAddress,
|
|
14
|
+
[BITCOIN_CHAIN]: decodeBitcoinAddress,
|
|
15
|
+
[ETHEREUM_CHAIN]: generateEvmAddressDecoder(ETHEREUM_CHAIN),
|
|
16
|
+
[BINANCE_CHAIN]: generateEvmAddressDecoder(BINANCE_CHAIN),
|
|
17
|
+
[DOGE_CHAIN]: decodeDogeAddress,
|
|
18
|
+
[BITCOIN_RUNES_CHAIN]: decodeBitcoinRunesAddress,
|
|
19
|
+
[FIRO_CHAIN]: decodeFiroAddress,
|
|
20
|
+
[HANDSHAKE_CHAIN]: decodeHandshakeAddress,
|
|
21
|
+
};
|
|
6
22
|
/**
|
|
7
23
|
* decodes address of a chain
|
|
8
|
-
* throws error if encoded address length is more than 60 bytes
|
|
9
24
|
* @param chain
|
|
10
25
|
* @param encodedAddress
|
|
11
26
|
*/
|
|
12
27
|
export const decodeAddress = (chain, encodedAddress) => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return ergoLib.Address.from_public_key(Uint8Array.from(Buffer.from(encodedAddress, 'hex'))).to_base58(ergoLib.NetworkPrefix.Mainnet);
|
|
18
|
-
case CARDANO_CHAIN:
|
|
19
|
-
return cardanoLib.Address.from_bytes(Uint8Array.from(Buffer.from(encodedAddress, 'hex'))).to_bech32();
|
|
20
|
-
case RUNES_CHAIN:
|
|
21
|
-
case BITCOIN_CHAIN:
|
|
22
|
-
return bitcoinLib.address.fromOutputScript(Buffer.from(encodedAddress, 'hex'));
|
|
23
|
-
case BINANCE_CHAIN:
|
|
24
|
-
case ETHEREUM_CHAIN:
|
|
25
|
-
if (encodedAddress.length != 40) {
|
|
26
|
-
throw new UnsupportedAddressError(chain, encodedAddress);
|
|
27
|
-
}
|
|
28
|
-
return '0x' + encodedAddress;
|
|
29
|
-
case DOGE_CHAIN:
|
|
30
|
-
return bitcoinLib.address.fromOutputScript(Buffer.from(encodedAddress, 'hex'), DOGE_NETWORK);
|
|
31
|
-
case FIRO_CHAIN:
|
|
32
|
-
return bitcoinLib.address.fromOutputScript(Buffer.from(encodedAddress, 'hex'), FIRO_NETWORK);
|
|
33
|
-
case HANDSHAKE_CHAIN:
|
|
34
|
-
return bitcoinLib.address.fromOutputScript(Buffer.from(encodedAddress, 'hex'), HANDSHAKE_NETWORK);
|
|
35
|
-
default:
|
|
36
|
-
throw new UnsupportedChainError(chain);
|
|
37
|
-
}
|
|
28
|
+
const decoder = chainDecoders[chain];
|
|
29
|
+
if (decoder)
|
|
30
|
+
return decoder(encodedAddress);
|
|
31
|
+
throw new UnsupportedChainError(chain);
|
|
38
32
|
};
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9kZWNvZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEVBQ2Isb0JBQW9CLEdBQ3JCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUNMLG1CQUFtQixFQUNuQix5QkFBeUIsR0FDMUIsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLG9CQUFvQixHQUNyQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsaUJBQWlCLEdBQ2xCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUNMLFVBQVUsRUFDVixpQkFBaUIsR0FDbEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsVUFBVSxFQUNWLGlCQUFpQixHQUNsQixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysc0JBQXNCLEdBQ3ZCLE1BQU0sdUNBQXVDLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBZ0Q7SUFDeEUsQ0FBQyxVQUFVLENBQUMsRUFBRSxpQkFBaUI7SUFDL0IsQ0FBQyxhQUFhLENBQUMsRUFBRSxvQkFBb0I7SUFDckMsQ0FBQyxhQUFhLENBQUMsRUFBRSxvQkFBb0I7SUFDckMsQ0FBQyxjQUFjLENBQUMsRUFBRSx5QkFBeUIsQ0FBQyxjQUFjLENBQUM7SUFDM0QsQ0FBQyxhQUFhLENBQUMsRUFBRSx5QkFBeUIsQ0FBQyxhQUFhLENBQUM7SUFDekQsQ0FBQyxVQUFVLENBQUMsRUFBRSxpQkFBaUI7SUFDL0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLHlCQUF5QjtJQUNoRCxDQUFDLFVBQVUsQ0FBQyxFQUFFLGlCQUFpQjtJQUMvQixDQUFDLGVBQWUsQ0FBQyxFQUFFLHNCQUFzQjtDQUMxQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUMzQixLQUFhLEVBQ2IsY0FBc0IsRUFDZCxFQUFFO0lBQ1YsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLElBQUksT0FBTztRQUFFLE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCSVRDT0lOX0NIQUlOLFxuICBkZWNvZGVCaXRjb2luQWRkcmVzcyxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWJpdGNvaW4nO1xuaW1wb3J0IHtcbiAgQklUQ09JTl9SVU5FU19DSEFJTixcbiAgZGVjb2RlQml0Y29pblJ1bmVzQWRkcmVzcyxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWJpdGNvaW4tcnVuZXMnO1xuaW1wb3J0IHtcbiAgQ0FSREFOT19DSEFJTixcbiAgZGVjb2RlQ2FyZGFub0FkZHJlc3MsXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWRkcmVzcy1jb2RlYy1jYXJkYW5vJztcbmltcG9ydCB7XG4gIERPR0VfQ0hBSU4sXG4gIGRlY29kZURvZ2VBZGRyZXNzLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL2FkZHJlc3MtY29kZWMtZG9nZSc7XG5pbXBvcnQge1xuICBFUkdPX0NIQUlOLFxuICBkZWNvZGVFcmdvQWRkcmVzcyxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWVyZ28nO1xuaW1wb3J0IHsgZ2VuZXJhdGVFdm1BZGRyZXNzRGVjb2RlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWRkcmVzcy1jb2RlYy1ldm0nO1xuaW1wb3J0IHtcbiAgRklST19DSEFJTixcbiAgZGVjb2RlRmlyb0FkZHJlc3MsXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWRkcmVzcy1jb2RlYy1maXJvJztcbmltcG9ydCB7XG4gIEhBTkRTSEFLRV9DSEFJTixcbiAgZGVjb2RlSGFuZHNoYWtlQWRkcmVzcyxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWhhbmRzaGFrZSc7XG5cbmltcG9ydCB7IEJJTkFOQ0VfQ0hBSU4sIEVUSEVSRVVNX0NIQUlOIH0gZnJvbSAnLi9jb25zdCc7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZENoYWluRXJyb3IgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGNoYWluRGVjb2RlcnM6IFJlY29yZDxzdHJpbmcsIChhZGRyZXNzOiBzdHJpbmcpID0+IHN0cmluZz4gPSB7XG4gIFtFUkdPX0NIQUlOXTogZGVjb2RlRXJnb0FkZHJlc3MsXG4gIFtDQVJEQU5PX0NIQUlOXTogZGVjb2RlQ2FyZGFub0FkZHJlc3MsXG4gIFtCSVRDT0lOX0NIQUlOXTogZGVjb2RlQml0Y29pbkFkZHJlc3MsXG4gIFtFVEhFUkVVTV9DSEFJTl06IGdlbmVyYXRlRXZtQWRkcmVzc0RlY29kZXIoRVRIRVJFVU1fQ0hBSU4pLFxuICBbQklOQU5DRV9DSEFJTl06IGdlbmVyYXRlRXZtQWRkcmVzc0RlY29kZXIoQklOQU5DRV9DSEFJTiksXG4gIFtET0dFX0NIQUlOXTogZGVjb2RlRG9nZUFkZHJlc3MsXG4gIFtCSVRDT0lOX1JVTkVTX0NIQUlOXTogZGVjb2RlQml0Y29pblJ1bmVzQWRkcmVzcyxcbiAgW0ZJUk9fQ0hBSU5dOiBkZWNvZGVGaXJvQWRkcmVzcyxcbiAgW0hBTkRTSEFLRV9DSEFJTl06IGRlY29kZUhhbmRzaGFrZUFkZHJlc3MsXG59O1xuXG4vKipcbiAqIGRlY29kZXMgYWRkcmVzcyBvZiBhIGNoYWluXG4gKiBAcGFyYW0gY2hhaW5cbiAqIEBwYXJhbSBlbmNvZGVkQWRkcmVzc1xuICovXG5leHBvcnQgY29uc3QgZGVjb2RlQWRkcmVzcyA9IChcbiAgY2hhaW46IHN0cmluZyxcbiAgZW5jb2RlZEFkZHJlc3M6IHN0cmluZyxcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGRlY29kZXIgPSBjaGFpbkRlY29kZXJzW2NoYWluXTtcbiAgaWYgKGRlY29kZXIpIHJldHVybiBkZWNvZGVyKGVuY29kZWRBZGRyZXNzKTtcbiAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkQ2hhaW5FcnJvcihjaGFpbik7XG59O1xuIl19
|
package/dist/encoder.d.ts
CHANGED
package/dist/encoder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../lib/encoder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../lib/encoder.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAUrE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,SAAS,MAAM,KAAG,MAI9D,CAAC"}
|
package/dist/encoder.js
CHANGED
|
@@ -1,54 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
import { BITCOIN_CHAIN, encodeBitcoinAddress, } from '@rosen-bridge/address-codec-bitcoin';
|
|
2
|
+
import { BITCOIN_RUNES_CHAIN, encodeBitcoinRunesAddress, } from '@rosen-bridge/address-codec-bitcoin-runes';
|
|
3
|
+
import { CARDANO_CHAIN, encodeCardanoAddress, } from '@rosen-bridge/address-codec-cardano';
|
|
4
|
+
import { DOGE_CHAIN, encodeDogeAddress, } from '@rosen-bridge/address-codec-doge';
|
|
5
|
+
import { ERGO_CHAIN, encodeErgoAddress, } from '@rosen-bridge/address-codec-ergo';
|
|
6
|
+
import { generateEvmAddressEncoder } from '@rosen-bridge/address-codec-evm';
|
|
7
|
+
import { FIRO_CHAIN, encodeFiroAddress, } from '@rosen-bridge/address-codec-firo';
|
|
8
|
+
import { HANDSHAKE_CHAIN, encodeHandshakeAddress, } from '@rosen-bridge/address-codec-handshake';
|
|
9
|
+
import { BINANCE_CHAIN, ETHEREUM_CHAIN } from './const';
|
|
10
|
+
import { UnsupportedChainError } from './types';
|
|
11
|
+
export const chainEncoders = {
|
|
12
|
+
[ERGO_CHAIN]: encodeErgoAddress,
|
|
13
|
+
[CARDANO_CHAIN]: encodeCardanoAddress,
|
|
14
|
+
[BITCOIN_CHAIN]: encodeBitcoinAddress,
|
|
15
|
+
[ETHEREUM_CHAIN]: generateEvmAddressEncoder(ETHEREUM_CHAIN),
|
|
16
|
+
[BINANCE_CHAIN]: generateEvmAddressEncoder(BINANCE_CHAIN),
|
|
17
|
+
[DOGE_CHAIN]: encodeDogeAddress,
|
|
18
|
+
[BITCOIN_RUNES_CHAIN]: encodeBitcoinRunesAddress,
|
|
19
|
+
[FIRO_CHAIN]: encodeFiroAddress,
|
|
20
|
+
[HANDSHAKE_CHAIN]: encodeHandshakeAddress,
|
|
21
|
+
};
|
|
6
22
|
/**
|
|
7
23
|
* encodes address of a chain to hex string
|
|
8
|
-
* throws error if encoded address length is more than 60 bytes
|
|
9
24
|
* @param chain
|
|
10
25
|
* @param address
|
|
11
26
|
*/
|
|
12
27
|
export const encodeAddress = (chain, address) => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
break;
|
|
18
|
-
case CARDANO_CHAIN:
|
|
19
|
-
encoded = Buffer.from(cardanoLib.Address.from_bech32(address).to_bytes()).toString('hex');
|
|
20
|
-
break;
|
|
21
|
-
case RUNES_CHAIN:
|
|
22
|
-
case BITCOIN_CHAIN:
|
|
23
|
-
encoded = bitcoinLib.address.toOutputScript(address).toString('hex');
|
|
24
|
-
break;
|
|
25
|
-
case BINANCE_CHAIN:
|
|
26
|
-
case ETHEREUM_CHAIN:
|
|
27
|
-
if (address.length != 42 || address.substring(0, 2) != '0x') {
|
|
28
|
-
throw new UnsupportedAddressError(chain, address);
|
|
29
|
-
}
|
|
30
|
-
encoded = address.substring(2);
|
|
31
|
-
break;
|
|
32
|
-
case DOGE_CHAIN:
|
|
33
|
-
encoded = bitcoinLib.address
|
|
34
|
-
.toOutputScript(address, DOGE_NETWORK)
|
|
35
|
-
.toString('hex');
|
|
36
|
-
break;
|
|
37
|
-
case FIRO_CHAIN:
|
|
38
|
-
encoded = bitcoinLib.address
|
|
39
|
-
.toOutputScript(address, FIRO_NETWORK)
|
|
40
|
-
.toString('hex');
|
|
41
|
-
break;
|
|
42
|
-
case HANDSHAKE_CHAIN:
|
|
43
|
-
encoded = bitcoinLib.address
|
|
44
|
-
.toOutputScript(address, HANDSHAKE_NETWORK)
|
|
45
|
-
.toString('hex');
|
|
46
|
-
break;
|
|
47
|
-
default:
|
|
48
|
-
throw new UnsupportedChainError(chain);
|
|
49
|
-
}
|
|
50
|
-
if (encoded.length > 60 * 2)
|
|
51
|
-
throw new UnsupportedAddressError(chain, address);
|
|
52
|
-
return encoded;
|
|
28
|
+
const encoder = chainEncoders[chain];
|
|
29
|
+
if (encoder)
|
|
30
|
+
return encoder(address);
|
|
31
|
+
throw new UnsupportedChainError(chain);
|
|
53
32
|
};
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9lbmNvZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEVBQ2Isb0JBQW9CLEdBQ3JCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUNMLG1CQUFtQixFQUNuQix5QkFBeUIsR0FDMUIsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLG9CQUFvQixHQUNyQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsaUJBQWlCLEdBQ2xCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUNMLFVBQVUsRUFDVixpQkFBaUIsR0FDbEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsVUFBVSxFQUNWLGlCQUFpQixHQUNsQixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysc0JBQXNCLEdBQ3ZCLE1BQU0sdUNBQXVDLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBZ0Q7SUFDeEUsQ0FBQyxVQUFVLENBQUMsRUFBRSxpQkFBaUI7SUFDL0IsQ0FBQyxhQUFhLENBQUMsRUFBRSxvQkFBb0I7SUFDckMsQ0FBQyxhQUFhLENBQUMsRUFBRSxvQkFBb0I7SUFDckMsQ0FBQyxjQUFjLENBQUMsRUFBRSx5QkFBeUIsQ0FBQyxjQUFjLENBQUM7SUFDM0QsQ0FBQyxhQUFhLENBQUMsRUFBRSx5QkFBeUIsQ0FBQyxhQUFhLENBQUM7SUFDekQsQ0FBQyxVQUFVLENBQUMsRUFBRSxpQkFBaUI7SUFDL0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLHlCQUF5QjtJQUNoRCxDQUFDLFVBQVUsQ0FBQyxFQUFFLGlCQUFpQjtJQUMvQixDQUFDLGVBQWUsQ0FBQyxFQUFFLHNCQUFzQjtDQUMxQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWEsRUFBRSxPQUFlLEVBQVUsRUFBRTtJQUN0RSxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsSUFBSSxPQUFPO1FBQUUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsTUFBTSxJQUFJLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJJVENPSU5fQ0hBSU4sXG4gIGVuY29kZUJpdGNvaW5BZGRyZXNzLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL2FkZHJlc3MtY29kZWMtYml0Y29pbic7XG5pbXBvcnQge1xuICBCSVRDT0lOX1JVTkVTX0NIQUlOLFxuICBlbmNvZGVCaXRjb2luUnVuZXNBZGRyZXNzLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL2FkZHJlc3MtY29kZWMtYml0Y29pbi1ydW5lcyc7XG5pbXBvcnQge1xuICBDQVJEQU5PX0NIQUlOLFxuICBlbmNvZGVDYXJkYW5vQWRkcmVzcyxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWNhcmRhbm8nO1xuaW1wb3J0IHtcbiAgRE9HRV9DSEFJTixcbiAgZW5jb2RlRG9nZUFkZHJlc3MsXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWRkcmVzcy1jb2RlYy1kb2dlJztcbmltcG9ydCB7XG4gIEVSR09fQ0hBSU4sXG4gIGVuY29kZUVyZ29BZGRyZXNzLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL2FkZHJlc3MtY29kZWMtZXJnbyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUV2bUFkZHJlc3NFbmNvZGVyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWV2bSc7XG5pbXBvcnQge1xuICBGSVJPX0NIQUlOLFxuICBlbmNvZGVGaXJvQWRkcmVzcyxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWZpcm8nO1xuaW1wb3J0IHtcbiAgSEFORFNIQUtFX0NIQUlOLFxuICBlbmNvZGVIYW5kc2hha2VBZGRyZXNzLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL2FkZHJlc3MtY29kZWMtaGFuZHNoYWtlJztcblxuaW1wb3J0IHsgQklOQU5DRV9DSEFJTiwgRVRIRVJFVU1fQ0hBSU4gfSBmcm9tICcuL2NvbnN0JztcbmltcG9ydCB7IFVuc3VwcG9ydGVkQ2hhaW5FcnJvciB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgY2hhaW5FbmNvZGVyczogUmVjb3JkPHN0cmluZywgKGFkZHJlc3M6IHN0cmluZykgPT4gc3RyaW5nPiA9IHtcbiAgW0VSR09fQ0hBSU5dOiBlbmNvZGVFcmdvQWRkcmVzcyxcbiAgW0NBUkRBTk9fQ0hBSU5dOiBlbmNvZGVDYXJkYW5vQWRkcmVzcyxcbiAgW0JJVENPSU5fQ0hBSU5dOiBlbmNvZGVCaXRjb2luQWRkcmVzcyxcbiAgW0VUSEVSRVVNX0NIQUlOXTogZ2VuZXJhdGVFdm1BZGRyZXNzRW5jb2RlcihFVEhFUkVVTV9DSEFJTiksXG4gIFtCSU5BTkNFX0NIQUlOXTogZ2VuZXJhdGVFdm1BZGRyZXNzRW5jb2RlcihCSU5BTkNFX0NIQUlOKSxcbiAgW0RPR0VfQ0hBSU5dOiBlbmNvZGVEb2dlQWRkcmVzcyxcbiAgW0JJVENPSU5fUlVORVNfQ0hBSU5dOiBlbmNvZGVCaXRjb2luUnVuZXNBZGRyZXNzLFxuICBbRklST19DSEFJTl06IGVuY29kZUZpcm9BZGRyZXNzLFxuICBbSEFORFNIQUtFX0NIQUlOXTogZW5jb2RlSGFuZHNoYWtlQWRkcmVzcyxcbn07XG5cbi8qKlxuICogZW5jb2RlcyBhZGRyZXNzIG9mIGEgY2hhaW4gdG8gaGV4IHN0cmluZ1xuICogQHBhcmFtIGNoYWluXG4gKiBAcGFyYW0gYWRkcmVzc1xuICovXG5leHBvcnQgY29uc3QgZW5jb2RlQWRkcmVzcyA9IChjaGFpbjogc3RyaW5nLCBhZGRyZXNzOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBlbmNvZGVyID0gY2hhaW5FbmNvZGVyc1tjaGFpbl07XG4gIGlmIChlbmNvZGVyKSByZXR1cm4gZW5jb2RlcihhZGRyZXNzKTtcbiAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkQ2hhaW5FcnJvcihjaGFpbik7XG59O1xuIl19
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import { initEccLib } from 'bitcoinjs-lib';
|
|
2
|
-
import ecc from '@bitcoinerlab/secp256k1';
|
|
3
|
-
initEccLib(ecc);
|
|
4
1
|
export * from './encoder';
|
|
5
2
|
export * from './decoder';
|
|
6
3
|
export * from './types';
|
|
7
4
|
export * from './validator';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VuY29kZXInO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0b3InO1xuIl19
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"AAAA,qBAAa,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"AAAA,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,KAAK,EAAE,MAAM;CAK1B"}
|
package/dist/types.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
export class UnsupportedAddressError extends Error {
|
|
2
|
-
constructor(chain, address) {
|
|
3
|
-
super(`UnsupportedAddressError: Address [${address}] is not supported in current implementation of [${chain}] chain`);
|
|
4
|
-
}
|
|
5
|
-
}
|
|
6
1
|
export class UnsupportedChainError extends Error {
|
|
7
2
|
constructor(chain) {
|
|
8
3
|
super(`UnsupportedChainError: Address encoding does not support [${chain}] chain currently`);
|
|
9
4
|
}
|
|
10
5
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHFCQUFzQixTQUFRLEtBQUs7SUFDOUMsWUFBWSxLQUFhO1FBQ3ZCLEtBQUssQ0FDSCw2REFBNkQsS0FBSyxtQkFBbUIsQ0FDdEYsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBVbnN1cHBvcnRlZENoYWluRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGNoYWluOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBVbnN1cHBvcnRlZENoYWluRXJyb3I6IEFkZHJlc3MgZW5jb2RpbmcgZG9lcyBub3Qgc3VwcG9ydCBbJHtjaGFpbn1dIGNoYWluIGN1cnJlbnRseWAsXG4gICAgKTtcbiAgfVxufVxuIl19
|
package/dist/validator.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
export declare const chainValidators: Record<string, (address: string) => void>;
|
|
1
2
|
/**
|
|
2
3
|
* validates address of a chain
|
|
3
4
|
* @param chain
|
|
4
5
|
* @param address
|
|
5
6
|
*/
|
|
6
|
-
export declare const validateAddress: (chain: string, address: string) =>
|
|
7
|
+
export declare const validateAddress: (chain: string, address: string) => void;
|
|
7
8
|
//# sourceMappingURL=validator.d.ts.map
|
package/dist/validator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../lib/validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../lib/validator.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAUrE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,SAAS,MAAM,KAAG,IAIhE,CAAC"}
|
package/dist/validator.js
CHANGED
|
@@ -1,68 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
1
|
+
import { BITCOIN_CHAIN, validateBitcoinAddress, } from '@rosen-bridge/address-codec-bitcoin';
|
|
2
|
+
import { BITCOIN_RUNES_CHAIN, validateBitcoinRunesAddress, } from '@rosen-bridge/address-codec-bitcoin-runes';
|
|
3
|
+
import { CARDANO_CHAIN, validateCardanoAddress, } from '@rosen-bridge/address-codec-cardano';
|
|
4
|
+
import { DOGE_CHAIN, validateDogeAddress, } from '@rosen-bridge/address-codec-doge';
|
|
5
|
+
import { ERGO_CHAIN, validateErgoAddress, } from '@rosen-bridge/address-codec-ergo';
|
|
6
|
+
import { generateEvmAddressValidator } from '@rosen-bridge/address-codec-evm';
|
|
7
|
+
import { FIRO_CHAIN, validateFiroAddress, } from '@rosen-bridge/address-codec-firo';
|
|
8
|
+
import { HANDSHAKE_CHAIN, validateHandshakeAddress, } from '@rosen-bridge/address-codec-handshake';
|
|
9
|
+
import { BINANCE_CHAIN, ETHEREUM_CHAIN } from './const';
|
|
10
|
+
import { UnsupportedChainError } from './types';
|
|
11
|
+
export const chainValidators = {
|
|
12
|
+
[ERGO_CHAIN]: validateErgoAddress,
|
|
13
|
+
[CARDANO_CHAIN]: validateCardanoAddress,
|
|
14
|
+
[BITCOIN_CHAIN]: validateBitcoinAddress,
|
|
15
|
+
[ETHEREUM_CHAIN]: generateEvmAddressValidator(ETHEREUM_CHAIN),
|
|
16
|
+
[BINANCE_CHAIN]: generateEvmAddressValidator(BINANCE_CHAIN),
|
|
17
|
+
[DOGE_CHAIN]: validateDogeAddress,
|
|
18
|
+
[BITCOIN_RUNES_CHAIN]: validateBitcoinRunesAddress,
|
|
19
|
+
[FIRO_CHAIN]: validateFiroAddress,
|
|
20
|
+
[HANDSHAKE_CHAIN]: validateHandshakeAddress,
|
|
21
|
+
};
|
|
7
22
|
/**
|
|
8
23
|
* validates address of a chain
|
|
9
24
|
* @param chain
|
|
10
25
|
* @param address
|
|
11
26
|
*/
|
|
12
27
|
export const validateAddress = (chain, address) => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
cardanoLib.Address.from_bech32(address);
|
|
19
|
-
return true;
|
|
20
|
-
case BITCOIN_CHAIN:
|
|
21
|
-
bitcoinLib.address.fromBech32(address);
|
|
22
|
-
if (address.slice(0, 4) != 'bc1q')
|
|
23
|
-
throw new UnsupportedAddressError(chain, address);
|
|
24
|
-
return true;
|
|
25
|
-
case BINANCE_CHAIN:
|
|
26
|
-
case ETHEREUM_CHAIN:
|
|
27
|
-
if (address.toLowerCase() != address || !ethereumLib.isAddress(address))
|
|
28
|
-
throw new UnsupportedAddressError(chain, address);
|
|
29
|
-
return true;
|
|
30
|
-
case DOGE_CHAIN:
|
|
31
|
-
try {
|
|
32
|
-
bitcoinLib.address.toOutputScript(address, DOGE_NETWORK);
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
throw new UnsupportedAddressError(chain, address);
|
|
36
|
-
}
|
|
37
|
-
return true;
|
|
38
|
-
case RUNES_CHAIN:
|
|
39
|
-
try {
|
|
40
|
-
bitcoinLib.address.toOutputScript(address);
|
|
41
|
-
if (address.slice(0, 4) != 'bc1p')
|
|
42
|
-
throw new UnsupportedAddressError(chain, address);
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
throw new UnsupportedAddressError(chain, address);
|
|
46
|
-
}
|
|
47
|
-
return true;
|
|
48
|
-
case FIRO_CHAIN:
|
|
49
|
-
try {
|
|
50
|
-
bitcoinLib.address.toOutputScript(address, FIRO_NETWORK);
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
throw new UnsupportedAddressError(chain, address);
|
|
54
|
-
}
|
|
55
|
-
return true;
|
|
56
|
-
case HANDSHAKE_CHAIN:
|
|
57
|
-
try {
|
|
58
|
-
bitcoinLib.address.toOutputScript(address, HANDSHAKE_NETWORK);
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
throw new UnsupportedAddressError(chain, address);
|
|
62
|
-
}
|
|
63
|
-
return true;
|
|
64
|
-
default:
|
|
65
|
-
throw new UnsupportedChainError(chain);
|
|
66
|
-
}
|
|
28
|
+
const validator = chainValidators[chain];
|
|
29
|
+
if (validator)
|
|
30
|
+
validator(address);
|
|
31
|
+
else
|
|
32
|
+
throw new UnsupportedChainError(chain);
|
|
67
33
|
};
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLHNCQUFzQixHQUN2QixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsMkJBQTJCLEdBQzVCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUNMLGFBQWEsRUFDYixzQkFBc0IsR0FDdkIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLG1CQUFtQixHQUNwQixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsbUJBQW1CLEdBQ3BCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUNMLFVBQVUsRUFDVixtQkFBbUIsR0FDcEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLHdCQUF3QixHQUN6QixNQUFNLHVDQUF1QyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVoRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQThDO0lBQ3hFLENBQUMsVUFBVSxDQUFDLEVBQUUsbUJBQW1CO0lBQ2pDLENBQUMsYUFBYSxDQUFDLEVBQUUsc0JBQXNCO0lBQ3ZDLENBQUMsYUFBYSxDQUFDLEVBQUUsc0JBQXNCO0lBQ3ZDLENBQUMsY0FBYyxDQUFDLEVBQUUsMkJBQTJCLENBQUMsY0FBYyxDQUFDO0lBQzdELENBQUMsYUFBYSxDQUFDLEVBQUUsMkJBQTJCLENBQUMsYUFBYSxDQUFDO0lBQzNELENBQUMsVUFBVSxDQUFDLEVBQUUsbUJBQW1CO0lBQ2pDLENBQUMsbUJBQW1CLENBQUMsRUFBRSwyQkFBMkI7SUFDbEQsQ0FBQyxVQUFVLENBQUMsRUFBRSxtQkFBbUI7SUFDakMsQ0FBQyxlQUFlLENBQUMsRUFBRSx3QkFBd0I7Q0FDNUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxLQUFhLEVBQUUsT0FBZSxFQUFRLEVBQUU7SUFDdEUsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLElBQUksU0FBUztRQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7UUFDN0IsTUFBTSxJQUFJLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJJVENPSU5fQ0hBSU4sXG4gIHZhbGlkYXRlQml0Y29pbkFkZHJlc3MsXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWRkcmVzcy1jb2RlYy1iaXRjb2luJztcbmltcG9ydCB7XG4gIEJJVENPSU5fUlVORVNfQ0hBSU4sXG4gIHZhbGlkYXRlQml0Y29pblJ1bmVzQWRkcmVzcyxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWJpdGNvaW4tcnVuZXMnO1xuaW1wb3J0IHtcbiAgQ0FSREFOT19DSEFJTixcbiAgdmFsaWRhdGVDYXJkYW5vQWRkcmVzcyxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWNhcmRhbm8nO1xuaW1wb3J0IHtcbiAgRE9HRV9DSEFJTixcbiAgdmFsaWRhdGVEb2dlQWRkcmVzcyxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWRvZ2UnO1xuaW1wb3J0IHtcbiAgRVJHT19DSEFJTixcbiAgdmFsaWRhdGVFcmdvQWRkcmVzcyxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWVyZ28nO1xuaW1wb3J0IHsgZ2VuZXJhdGVFdm1BZGRyZXNzVmFsaWRhdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWV2bSc7XG5pbXBvcnQge1xuICBGSVJPX0NIQUlOLFxuICB2YWxpZGF0ZUZpcm9BZGRyZXNzLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL2FkZHJlc3MtY29kZWMtZmlybyc7XG5pbXBvcnQge1xuICBIQU5EU0hBS0VfQ0hBSU4sXG4gIHZhbGlkYXRlSGFuZHNoYWtlQWRkcmVzcyxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjLWhhbmRzaGFrZSc7XG5cbmltcG9ydCB7IEJJTkFOQ0VfQ0hBSU4sIEVUSEVSRVVNX0NIQUlOIH0gZnJvbSAnLi9jb25zdCc7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZENoYWluRXJyb3IgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGNoYWluVmFsaWRhdG9yczogUmVjb3JkPHN0cmluZywgKGFkZHJlc3M6IHN0cmluZykgPT4gdm9pZD4gPSB7XG4gIFtFUkdPX0NIQUlOXTogdmFsaWRhdGVFcmdvQWRkcmVzcyxcbiAgW0NBUkRBTk9fQ0hBSU5dOiB2YWxpZGF0ZUNhcmRhbm9BZGRyZXNzLFxuICBbQklUQ09JTl9DSEFJTl06IHZhbGlkYXRlQml0Y29pbkFkZHJlc3MsXG4gIFtFVEhFUkVVTV9DSEFJTl06IGdlbmVyYXRlRXZtQWRkcmVzc1ZhbGlkYXRvcihFVEhFUkVVTV9DSEFJTiksXG4gIFtCSU5BTkNFX0NIQUlOXTogZ2VuZXJhdGVFdm1BZGRyZXNzVmFsaWRhdG9yKEJJTkFOQ0VfQ0hBSU4pLFxuICBbRE9HRV9DSEFJTl06IHZhbGlkYXRlRG9nZUFkZHJlc3MsXG4gIFtCSVRDT0lOX1JVTkVTX0NIQUlOXTogdmFsaWRhdGVCaXRjb2luUnVuZXNBZGRyZXNzLFxuICBbRklST19DSEFJTl06IHZhbGlkYXRlRmlyb0FkZHJlc3MsXG4gIFtIQU5EU0hBS0VfQ0hBSU5dOiB2YWxpZGF0ZUhhbmRzaGFrZUFkZHJlc3MsXG59O1xuXG4vKipcbiAqIHZhbGlkYXRlcyBhZGRyZXNzIG9mIGEgY2hhaW5cbiAqIEBwYXJhbSBjaGFpblxuICogQHBhcmFtIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlQWRkcmVzcyA9IChjaGFpbjogc3RyaW5nLCBhZGRyZXNzOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgY29uc3QgdmFsaWRhdG9yID0gY2hhaW5WYWxpZGF0b3JzW2NoYWluXTtcbiAgaWYgKHZhbGlkYXRvcikgdmFsaWRhdG9yKGFkZHJlc3MpO1xuICBlbHNlIHRocm93IG5ldyBVbnN1cHBvcnRlZENoYWluRXJyb3IoY2hhaW4pO1xufTtcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rosen-bridge/address-codec",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-eae8c5f0",
|
|
4
4
|
"description": "A Typescript package for encoding and decoding of addresses in Rosen bridge supported chains",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,17 +26,15 @@
|
|
|
26
26
|
"test": "NODE_OPTIONS='--import tsx' vitest",
|
|
27
27
|
"type-check": "tsc --noEmit"
|
|
28
28
|
},
|
|
29
|
-
"devDependencies": {
|
|
30
|
-
"@vitest/coverage-istanbul": "^3.1.4",
|
|
31
|
-
"tsx": "^4.20.5",
|
|
32
|
-
"vitest": "^3.1.4"
|
|
33
|
-
},
|
|
34
29
|
"dependencies": {
|
|
35
|
-
"@
|
|
36
|
-
"@
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
30
|
+
"@rosen-bridge/address-codec-bitcoin": "0.1.0-eae8c5f0",
|
|
31
|
+
"@rosen-bridge/address-codec-bitcoin-runes": "0.1.0-eae8c5f0",
|
|
32
|
+
"@rosen-bridge/address-codec-cardano": "0.1.0-eae8c5f0",
|
|
33
|
+
"@rosen-bridge/address-codec-doge": "0.1.0-eae8c5f0",
|
|
34
|
+
"@rosen-bridge/address-codec-ergo": "0.1.0-eae8c5f0",
|
|
35
|
+
"@rosen-bridge/address-codec-evm": "0.1.0-eae8c5f0",
|
|
36
|
+
"@rosen-bridge/address-codec-firo": "0.1.0-eae8c5f0",
|
|
37
|
+
"@rosen-bridge/address-codec-handshake": "0.1.0-eae8c5f0"
|
|
40
38
|
},
|
|
41
39
|
"engines": {
|
|
42
40
|
"node": ">=22.18.0",
|