@sentio/cli 2.7.6-rc.1 → 2.8.0-rc.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.
- package/lib/abi.d.ts +2 -1
- package/lib/abi.js +21 -22
- package/lib/abi.js.map +1 -1
- package/lib/abi.test.js.map +1 -1
- package/lib/chain.d.ts +194 -93
- package/lib/chain.js +112 -96
- package/lib/chain.js.map +1 -1
- package/lib/commands/run-add.js +7 -2
- package/lib/commands/run-add.js.map +1 -1
- package/lib/config.d.ts +2 -1
- package/lib/config.js.map +1 -1
- package/package.json +1 -1
- package/src/abi.ts +22 -23
- package/src/chain.ts +113 -96
- package/src/commands/run-add.ts +8 -3
- package/src/config.ts +3 -1
package/lib/abi.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { ChainId } from './chain.js';
|
|
1
2
|
export declare const ETH_API_URL_MAP: Record<string, string>;
|
|
2
|
-
export declare function getABI(chain:
|
|
3
|
+
export declare function getABI(chain: ChainId, address: string, name: string | undefined): Promise<{
|
|
3
4
|
name?: string;
|
|
4
5
|
abi: object | string;
|
|
5
6
|
}>;
|
package/lib/abi.js
CHANGED
|
@@ -1,39 +1,38 @@
|
|
|
1
1
|
import { AptosClient } from 'aptos-sdk';
|
|
2
2
|
import { JsonRpcProvider, Connection } from '@mysten/sui.js';
|
|
3
|
-
import { CHAIN_IDS } from './chain.js';
|
|
4
3
|
import chalk from 'chalk';
|
|
5
4
|
import process from 'process';
|
|
6
5
|
import path from 'path';
|
|
7
6
|
import fs from 'fs-extra';
|
|
8
7
|
import fetch from 'node-fetch';
|
|
8
|
+
import { AptosChainId, EthChainId, SuiChainId } from './chain.js';
|
|
9
9
|
export const ETH_API_URL_MAP = {};
|
|
10
|
-
ETH_API_URL_MAP[
|
|
11
|
-
ETH_API_URL_MAP[
|
|
12
|
-
ETH_API_URL_MAP[
|
|
13
|
-
ETH_API_URL_MAP[
|
|
14
|
-
ETH_API_URL_MAP[
|
|
15
|
-
ETH_API_URL_MAP[
|
|
10
|
+
ETH_API_URL_MAP[EthChainId.ETHEREUM] = 'https://api.etherscan.io';
|
|
11
|
+
ETH_API_URL_MAP[EthChainId.GOERLI] = 'https://api-goerli.etherscan.io';
|
|
12
|
+
ETH_API_URL_MAP[EthChainId.BINANCE] = 'https://api.bscscan.com';
|
|
13
|
+
ETH_API_URL_MAP[EthChainId.POLYGON] = 'https://api.polygonscan.com';
|
|
14
|
+
ETH_API_URL_MAP[EthChainId.ARBITRUM] = 'https://api.arbiscan.io';
|
|
15
|
+
ETH_API_URL_MAP[EthChainId.OPTIMISM] = 'https://api-optimistic.etherscan.io';
|
|
16
16
|
// ETH_API_URL_MAP[CHAIN_IDS.BASE_GOERLI] = 'https://api-goerli.basescan.org' // didn't see any verified contract
|
|
17
|
-
ETH_API_URL_MAP[
|
|
18
|
-
ETH_API_URL_MAP[
|
|
19
|
-
ETH_API_URL_MAP[
|
|
20
|
-
ETH_API_URL_MAP[
|
|
17
|
+
ETH_API_URL_MAP[EthChainId.AVALANCHE] = 'https://api.snowtrace.io';
|
|
18
|
+
ETH_API_URL_MAP[EthChainId.CRONOS] = 'https://api.cronoscan.com';
|
|
19
|
+
ETH_API_URL_MAP[EthChainId.MOONBEAM] = 'https://api-moonbeam.moonscan.io';
|
|
20
|
+
ETH_API_URL_MAP[EthChainId.FANTOM] = 'https://api.ftmscan.com';
|
|
21
21
|
export async function getABI(chain, address, name) {
|
|
22
22
|
let ethApi;
|
|
23
23
|
let aptosClient;
|
|
24
24
|
let suiClient;
|
|
25
25
|
switch (chain) {
|
|
26
|
-
case
|
|
26
|
+
case AptosChainId.APTOS_MAINNET:
|
|
27
27
|
aptosClient = new AptosClient('https://mainnet.aptoslabs.com/');
|
|
28
28
|
break;
|
|
29
|
-
case
|
|
29
|
+
case AptosChainId.APTOS_TESTNET:
|
|
30
30
|
aptosClient = new AptosClient('https://testnet.aptoslabs.com/');
|
|
31
31
|
break;
|
|
32
|
-
case
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
case CHAIN_IDS.SUI_TESTNET:
|
|
32
|
+
case SuiChainId.SUI_MAINNET:
|
|
33
|
+
suiClient = new JsonRpcProvider(new Connection({ fullnode: 'https://fullnode.mainnet.sui.io/' }));
|
|
34
|
+
break;
|
|
35
|
+
case SuiChainId.SUI_TESTNET:
|
|
37
36
|
suiClient = new JsonRpcProvider(new Connection({ fullnode: 'https://fullnode.testnet.sui.io/' }));
|
|
38
37
|
break;
|
|
39
38
|
default:
|
|
@@ -105,16 +104,16 @@ export async function getABI(chain, address, name) {
|
|
|
105
104
|
export function getABIFilePath(chain, name) {
|
|
106
105
|
let subpath;
|
|
107
106
|
switch (chain) {
|
|
108
|
-
case
|
|
107
|
+
case AptosChainId.APTOS_MAINNET:
|
|
109
108
|
subpath = 'aptos';
|
|
110
109
|
break;
|
|
111
|
-
case
|
|
110
|
+
case AptosChainId.APTOS_TESTNET:
|
|
112
111
|
subpath = 'aptos/testnet';
|
|
113
112
|
break;
|
|
114
|
-
case
|
|
113
|
+
case SuiChainId.SUI_MAINNET:
|
|
115
114
|
subpath = 'sui';
|
|
116
115
|
break;
|
|
117
|
-
case
|
|
116
|
+
case SuiChainId.SUI_TESTNET:
|
|
118
117
|
subpath = 'sui/testnet';
|
|
119
118
|
break;
|
|
120
119
|
default:
|
package/lib/abi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abi.js","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"abi.js","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"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","sourcesContent":["import { AptosClient } from 'aptos-sdk'\nimport { JsonRpcProvider, Connection } from '@mysten/sui.js'\nimport chalk from 'chalk'\nimport process from 'process'\nimport path from 'path'\nimport fs from 'fs-extra'\nimport fetch from 'node-fetch'\nimport { AptosChainId, ChainId, EthChainId, SuiChainId } from './chain.js'\n\nexport const ETH_API_URL_MAP: Record<string, string> = {}\n\nETH_API_URL_MAP[EthChainId.ETHEREUM] = 'https://api.etherscan.io'\nETH_API_URL_MAP[EthChainId.GOERLI] = 'https://api-goerli.etherscan.io'\nETH_API_URL_MAP[EthChainId.BINANCE] = 'https://api.bscscan.com'\nETH_API_URL_MAP[EthChainId.POLYGON] = 'https://api.polygonscan.com'\nETH_API_URL_MAP[EthChainId.ARBITRUM] = 'https://api.arbiscan.io'\nETH_API_URL_MAP[EthChainId.OPTIMISM] = 'https://api-optimistic.etherscan.io'\n// ETH_API_URL_MAP[CHAIN_IDS.BASE_GOERLI] = 'https://api-goerli.basescan.org' // didn't see any verified contract\n\nETH_API_URL_MAP[EthChainId.AVALANCHE] = 'https://api.snowtrace.io'\nETH_API_URL_MAP[EthChainId.CRONOS] = 'https://api.cronoscan.com'\nETH_API_URL_MAP[EthChainId.MOONBEAM] = 'https://api-moonbeam.moonscan.io'\nETH_API_URL_MAP[EthChainId.FANTOM] = 'https://api.ftmscan.com'\n\nexport async function getABI(\n chain: ChainId,\n address: string,\n name: string | undefined\n): Promise<{ name?: string; abi: object | string }> {\n let ethApi\n let aptosClient: AptosClient | undefined\n let suiClient: JsonRpcProvider | undefined\n\n switch (chain) {\n case AptosChainId.APTOS_MAINNET:\n aptosClient = new AptosClient('https://mainnet.aptoslabs.com/')\n break\n case AptosChainId.APTOS_TESTNET:\n aptosClient = new AptosClient('https://testnet.aptoslabs.com/')\n break\n case SuiChainId.SUI_MAINNET:\n suiClient = new JsonRpcProvider(new Connection({ fullnode: 'https://fullnode.mainnet.sui.io/' }))\n break\n case SuiChainId.SUI_TESTNET:\n suiClient = new JsonRpcProvider(new Connection({ fullnode: 'https://fullnode.testnet.sui.io/' }))\n break\n default:\n ethApi = ETH_API_URL_MAP[chain]\n if (!ethApi) {\n console.error(chalk.red(`chain ${chain} not supported for direct add, please download the ABI manually`))\n process.exit(1)\n }\n }\n\n const baseErrMsg = chalk.red(\n `Failed to automatic download contract ${address} from ${chain}, please manually download abi and put it into abis/eth directory`\n )\n\n if (aptosClient) {\n try {\n return {\n abi: await aptosClient.getAccountModules(address),\n name,\n }\n } catch (e) {\n console.error(baseErrMsg, e)\n process.exit(1)\n }\n }\n if (suiClient) {\n try {\n return {\n abi: await suiClient.getNormalizedMoveModulesByPackage({ package: address }),\n name,\n }\n } catch (e) {\n console.error(baseErrMsg, e)\n process.exit(1)\n }\n }\n\n try {\n const apiKey = process.env['ETHERSCAN_API_KEY_' + chain]\n if (apiKey) {\n ethApi = `${ethApi}/api?apikey=${apiKey}&`\n } else {\n ethApi = `${ethApi}/api?`\n }\n\n let resp = (await (await fetch(`${ethApi}module=contract&action=getabi&address=${address}`)).json()) as any\n if (resp.status !== '1') {\n throw Error(resp.message)\n }\n const abi = resp.result\n\n if (!name) {\n await new Promise((resolve) => setTimeout(resolve, 5000))\n resp = (await (await fetch(`${ethApi}module=contract&action=getsourcecode&address=${address}`)).json()) as any\n if (resp.status !== '1') {\n throw Error(resp.message)\n }\n const contractName = resp.result[0].ContractName\n if (contractName) {\n name = contractName\n }\n }\n return {\n name,\n abi,\n }\n } catch (e) {\n console.error(baseErrMsg, e)\n process.exit(1)\n }\n}\n\nexport function getABIFilePath(chain: string, name: string): string {\n let subpath\n switch (chain) {\n case AptosChainId.APTOS_MAINNET:\n subpath = 'aptos'\n break\n case AptosChainId.APTOS_TESTNET:\n subpath = 'aptos/testnet'\n break\n case SuiChainId.SUI_MAINNET:\n subpath = 'sui'\n break\n case SuiChainId.SUI_TESTNET:\n subpath = 'sui/testnet'\n break\n default:\n subpath = 'eth'\n }\n\n return path.join('abis', subpath, name + '.json')\n}\n\nexport function writeABIFile(obj: string | object, output: string) {\n if (typeof obj === 'string') {\n obj = JSON.parse(obj)\n }\n const data = JSON.stringify(obj, null, 2)\n fs.mkdirSync(path.dirname(output), { recursive: true })\n fs.writeFileSync(output, data)\n console.log(chalk.green('ABI has been downloaded to', output))\n}\n"]}
|
package/lib/abi.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abi.test.js","sourceRoot":"","sources":["../src/abi.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"abi.test.js","sourceRoot":"","sources":["../src/abi.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEpC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE;QAClB,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QACjC,OAAM;KACP;IACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAEvB,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACxB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAA;QACpG,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QAC1B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAA;QACtG,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACrB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAA;QACrG,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACxB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAA;QACpG,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACzB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAA;QACrG,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACxB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,4CAA4C,EAAE,SAAS,CAAC,CAAA;QACpG,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QAC1B,MAAM,GAAG,GAAG,MAAM,MAAM,CACtB,UAAU,CAAC,WAAW,EACtB,oEAAoE,EACpE,SAAS,CACV,CAAA;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { getABI } from './abi.js'\nimport { EthChainId, SuiChainId } from './chain.js'\nimport { expect } from 'chai'\nimport { jest } from '@jest/globals'\n\ndescribe('Test ABI get', () => {\n if (process.env.CI) {\n test.todo(`don't run test in ci`)\n return\n }\n jest.setTimeout(100000)\n\n test('cronos', async () => {\n const abi = await getABI(EthChainId.CRONOS, '0xc21223249CA28397B4B6541dfFaEcC539BfF0c59', undefined)\n expect(abi.abi !== undefined).eq(true)\n })\n\n test('optimism', async () => {\n const abi = await getABI(EthChainId.OPTIMISM, '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', undefined)\n expect(abi.abi !== undefined).eq(true)\n })\n\n test('bsc', async () => {\n const abi = await getABI(EthChainId.BINANCE, '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', undefined)\n expect(abi.abi !== undefined).eq(true)\n })\n\n test('goerli', async () => {\n const abi = await getABI(EthChainId.GOERLI, '0xd864C4a1B739B7e0bb9e2ae495583Eb5Da0d37F5', undefined)\n expect(abi.abi !== undefined).eq(true)\n })\n\n test('polygon', async () => {\n const abi = await getABI(EthChainId.POLYGON, '0x7FFB3d637014488b63fb9858E279385685AFc1e2', undefined)\n expect(abi.abi !== undefined).eq(true)\n })\n\n test('fantom', async () => {\n const abi = await getABI(EthChainId.FANTOM, '0x04068DA6C83AFCFA0e13ba15A6696662335D5B75', undefined)\n expect(abi.abi !== undefined).eq(true)\n })\n\n test('sui_test', async () => {\n const abi = await getABI(\n SuiChainId.SUI_TESTNET,\n '0xebaa2ad3eacc230f309cd933958cc52684df0a41ae7ac214d186b80f830867d2',\n undefined\n )\n expect(abi.abi !== undefined).eq(true)\n })\n})\n"]}
|
package/lib/chain.d.ts
CHANGED
|
@@ -1,96 +1,197 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
KARDIA
|
|
3
|
-
ETHEREUM
|
|
4
|
-
EXPANSE
|
|
5
|
-
ROPSTEN
|
|
6
|
-
RINKEBY
|
|
7
|
-
GOERLI
|
|
8
|
-
KOTTI
|
|
9
|
-
UBIQ
|
|
10
|
-
OPTIMISM
|
|
11
|
-
SONGBIRD
|
|
12
|
-
ELASTOS
|
|
13
|
-
CRONOS
|
|
14
|
-
RSK
|
|
15
|
-
TELOS
|
|
16
|
-
XDC
|
|
17
|
-
CSC
|
|
18
|
-
ZYX
|
|
19
|
-
BINANCE
|
|
20
|
-
SYSCOIN
|
|
21
|
-
GOCHAIN
|
|
22
|
-
ETHCLASSIC
|
|
23
|
-
MORDOR
|
|
24
|
-
OKEXCHAIN
|
|
25
|
-
HOO
|
|
26
|
-
METER
|
|
27
|
-
TOMOCHAIN
|
|
28
|
-
BINANCE_TEST
|
|
29
|
-
XDAI
|
|
30
|
-
VELAS
|
|
31
|
-
THUNDERCORE
|
|
32
|
-
FUSE
|
|
33
|
-
HECO
|
|
34
|
-
POLYGON
|
|
35
|
-
XDAIARB
|
|
36
|
-
ASTOR
|
|
37
|
-
ENERGYWEB
|
|
38
|
-
FANTOM
|
|
39
|
-
HPB
|
|
40
|
-
BOBA
|
|
41
|
-
KUCOIN
|
|
42
|
-
ZKSYNC_ERA
|
|
43
|
-
SHIDEN
|
|
44
|
-
THETA
|
|
45
|
-
SX
|
|
46
|
-
CANDLE
|
|
47
|
-
ASTAR
|
|
48
|
-
CALLISTO
|
|
49
|
-
WANCHAIN
|
|
50
|
-
POLYGON_ZKEVM
|
|
51
|
-
METIS
|
|
52
|
-
OMCHAIN
|
|
53
|
-
MOONBEAM
|
|
54
|
-
MOONRIVER
|
|
55
|
-
MOONBASE
|
|
56
|
-
DEV
|
|
57
|
-
RONIN
|
|
58
|
-
KAVA
|
|
59
|
-
EZCHAIN
|
|
60
|
-
PHI
|
|
61
|
-
IOTEX
|
|
62
|
-
XLC
|
|
63
|
-
NAHMII
|
|
64
|
-
NMACTEST
|
|
65
|
-
KLAYTN
|
|
66
|
-
EVMOS
|
|
67
|
-
BASE_GOERLI
|
|
68
|
-
SMARTBCH
|
|
69
|
-
CRYSTALEUM
|
|
70
|
-
FUSION
|
|
71
|
-
ARBITRUM
|
|
72
|
-
CELO
|
|
73
|
-
OASIS
|
|
74
|
-
AVALANCHE
|
|
75
|
-
GODWOKEN
|
|
76
|
-
AKROMA
|
|
77
|
-
POLIS
|
|
78
|
-
ARBITRUM_GOERLI
|
|
79
|
-
SEPOLIA
|
|
80
|
-
AURORA
|
|
81
|
-
HARMONY
|
|
82
|
-
PALM
|
|
83
|
-
CURIO
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
1
|
+
export declare enum EthChainId {
|
|
2
|
+
KARDIA = "0",
|
|
3
|
+
ETHEREUM = "1",
|
|
4
|
+
EXPANSE = "2",
|
|
5
|
+
ROPSTEN = "3",
|
|
6
|
+
RINKEBY = "4",
|
|
7
|
+
GOERLI = "5",
|
|
8
|
+
KOTTI = "6",
|
|
9
|
+
UBIQ = "8",
|
|
10
|
+
OPTIMISM = "10",
|
|
11
|
+
SONGBIRD = "19",
|
|
12
|
+
ELASTOS = "20",
|
|
13
|
+
CRONOS = "25",
|
|
14
|
+
RSK = "30",
|
|
15
|
+
TELOS = "40",
|
|
16
|
+
XDC = "50",
|
|
17
|
+
CSC = "52",
|
|
18
|
+
ZYX = "55",
|
|
19
|
+
BINANCE = "56",
|
|
20
|
+
SYSCOIN = "57",
|
|
21
|
+
GOCHAIN = "60",
|
|
22
|
+
ETHCLASSIC = "61",
|
|
23
|
+
MORDOR = "63",
|
|
24
|
+
OKEXCHAIN = "66",
|
|
25
|
+
HOO = "70",
|
|
26
|
+
METER = "82",
|
|
27
|
+
TOMOCHAIN = "88",
|
|
28
|
+
BINANCE_TEST = "97",
|
|
29
|
+
XDAI = "100",
|
|
30
|
+
VELAS = "106",
|
|
31
|
+
THUNDERCORE = "108",
|
|
32
|
+
FUSE = "122",
|
|
33
|
+
HECO = "128",
|
|
34
|
+
POLYGON = "137",
|
|
35
|
+
XDAIARB = "200",
|
|
36
|
+
ASTOR = "212",
|
|
37
|
+
ENERGYWEB = "246",
|
|
38
|
+
FANTOM = "250",
|
|
39
|
+
HPB = "269",
|
|
40
|
+
BOBA = "288",
|
|
41
|
+
KUCOIN = "321",
|
|
42
|
+
ZKSYNC_ERA = "324",
|
|
43
|
+
SHIDEN = "336",
|
|
44
|
+
THETA = "361",
|
|
45
|
+
SX = "416",
|
|
46
|
+
CANDLE = "534",
|
|
47
|
+
ASTAR = "592",
|
|
48
|
+
CALLISTO = "820",
|
|
49
|
+
WANCHAIN = "888",
|
|
50
|
+
POLYGON_ZKEVM = "1101",
|
|
51
|
+
METIS = "1088",
|
|
52
|
+
OMCHAIN = "1246",
|
|
53
|
+
MOONBEAM = "1284",
|
|
54
|
+
MOONRIVER = "1285",
|
|
55
|
+
MOONBASE = "1287",
|
|
56
|
+
DEV = "2018",
|
|
57
|
+
RONIN = "2020",
|
|
58
|
+
KAVA = "2222",
|
|
59
|
+
EZCHAIN = "2612",
|
|
60
|
+
PHI = "4181",
|
|
61
|
+
IOTEX = "4689",
|
|
62
|
+
XLC = "5050",
|
|
63
|
+
NAHMII = "5551",
|
|
64
|
+
NMACTEST = "7777",
|
|
65
|
+
KLAYTN = "8217",
|
|
66
|
+
EVMOS = "9001",
|
|
67
|
+
BASE_GOERLI = "84531",
|
|
68
|
+
SMARTBCH = "10000",
|
|
69
|
+
CRYSTALEUM = "103090",
|
|
70
|
+
FUSION = "32659",
|
|
71
|
+
ARBITRUM = "42161",
|
|
72
|
+
CELO = "42220",
|
|
73
|
+
OASIS = "42262",
|
|
74
|
+
AVALANCHE = "43114",
|
|
75
|
+
GODWOKEN = "71402",
|
|
76
|
+
AKROMA = "200625",
|
|
77
|
+
POLIS = "333999",
|
|
78
|
+
ARBITRUM_GOERLI = "421613",
|
|
79
|
+
SEPOLIA = "11155111",
|
|
80
|
+
AURORA = "1313161554",
|
|
81
|
+
HARMONY = "1666600000",
|
|
82
|
+
PALM = "11297108109",
|
|
83
|
+
CURIO = "836542336838601"
|
|
84
|
+
}
|
|
85
|
+
export declare enum AptosChainId {
|
|
86
|
+
APTOS_MAINNET = "aptos_mainnet",
|
|
87
|
+
APTOS_TESTNET = "aptos_testnet",
|
|
88
|
+
APTOS_DEVNET = "aptos_devnet"
|
|
89
|
+
}
|
|
90
|
+
export declare enum SuiChainId {
|
|
91
|
+
SUI_MAINNET = "sui_mainnet",
|
|
92
|
+
SUI_TESTNET = "sui_testnet",
|
|
93
|
+
SUI_DEVNET = "sui_devnet"
|
|
94
|
+
}
|
|
95
|
+
export declare enum SolanaChainId {
|
|
96
|
+
SOLANA_MAINNET = "sol_mainnet",
|
|
97
|
+
SOLANA_DEVNET = "sol_devnet",
|
|
98
|
+
SOLANA_TESTNET = "sol_testnet",
|
|
99
|
+
SOLANA_PYTH = "sol_pyth"
|
|
100
|
+
}
|
|
101
|
+
export type ChainId = EthChainId | AptosChainId | SuiChainId | SolanaChainId;
|
|
102
|
+
export declare const ChainId: {
|
|
103
|
+
SOLANA_MAINNET: SolanaChainId.SOLANA_MAINNET;
|
|
104
|
+
SOLANA_DEVNET: SolanaChainId.SOLANA_DEVNET;
|
|
105
|
+
SOLANA_TESTNET: SolanaChainId.SOLANA_TESTNET;
|
|
106
|
+
SOLANA_PYTH: SolanaChainId.SOLANA_PYTH;
|
|
107
|
+
SUI_MAINNET: SuiChainId.SUI_MAINNET;
|
|
108
|
+
SUI_TESTNET: SuiChainId.SUI_TESTNET;
|
|
109
|
+
SUI_DEVNET: SuiChainId.SUI_DEVNET;
|
|
110
|
+
APTOS_MAINNET: AptosChainId.APTOS_MAINNET;
|
|
111
|
+
APTOS_TESTNET: AptosChainId.APTOS_TESTNET;
|
|
112
|
+
APTOS_DEVNET: AptosChainId.APTOS_DEVNET;
|
|
113
|
+
KARDIA: EthChainId.KARDIA;
|
|
114
|
+
ETHEREUM: EthChainId.ETHEREUM;
|
|
115
|
+
EXPANSE: EthChainId.EXPANSE;
|
|
116
|
+
ROPSTEN: EthChainId.ROPSTEN;
|
|
117
|
+
RINKEBY: EthChainId.RINKEBY;
|
|
118
|
+
GOERLI: EthChainId.GOERLI;
|
|
119
|
+
KOTTI: EthChainId.KOTTI;
|
|
120
|
+
UBIQ: EthChainId.UBIQ;
|
|
121
|
+
OPTIMISM: EthChainId.OPTIMISM;
|
|
122
|
+
SONGBIRD: EthChainId.SONGBIRD;
|
|
123
|
+
ELASTOS: EthChainId.ELASTOS;
|
|
124
|
+
CRONOS: EthChainId.CRONOS;
|
|
125
|
+
RSK: EthChainId.RSK;
|
|
126
|
+
TELOS: EthChainId.TELOS;
|
|
127
|
+
XDC: EthChainId.XDC;
|
|
128
|
+
CSC: EthChainId.CSC;
|
|
129
|
+
ZYX: EthChainId.ZYX;
|
|
130
|
+
BINANCE: EthChainId.BINANCE;
|
|
131
|
+
SYSCOIN: EthChainId.SYSCOIN;
|
|
132
|
+
GOCHAIN: EthChainId.GOCHAIN;
|
|
133
|
+
ETHCLASSIC: EthChainId.ETHCLASSIC;
|
|
134
|
+
MORDOR: EthChainId.MORDOR;
|
|
135
|
+
OKEXCHAIN: EthChainId.OKEXCHAIN;
|
|
136
|
+
HOO: EthChainId.HOO;
|
|
137
|
+
METER: EthChainId.METER;
|
|
138
|
+
TOMOCHAIN: EthChainId.TOMOCHAIN;
|
|
139
|
+
BINANCE_TEST: EthChainId.BINANCE_TEST;
|
|
140
|
+
XDAI: EthChainId.XDAI;
|
|
141
|
+
VELAS: EthChainId.VELAS;
|
|
142
|
+
THUNDERCORE: EthChainId.THUNDERCORE;
|
|
143
|
+
FUSE: EthChainId.FUSE;
|
|
144
|
+
HECO: EthChainId.HECO;
|
|
145
|
+
POLYGON: EthChainId.POLYGON;
|
|
146
|
+
XDAIARB: EthChainId.XDAIARB;
|
|
147
|
+
ASTOR: EthChainId.ASTOR;
|
|
148
|
+
ENERGYWEB: EthChainId.ENERGYWEB;
|
|
149
|
+
FANTOM: EthChainId.FANTOM;
|
|
150
|
+
HPB: EthChainId.HPB;
|
|
151
|
+
BOBA: EthChainId.BOBA;
|
|
152
|
+
KUCOIN: EthChainId.KUCOIN;
|
|
153
|
+
ZKSYNC_ERA: EthChainId.ZKSYNC_ERA;
|
|
154
|
+
SHIDEN: EthChainId.SHIDEN;
|
|
155
|
+
THETA: EthChainId.THETA;
|
|
156
|
+
SX: EthChainId.SX;
|
|
157
|
+
CANDLE: EthChainId.CANDLE;
|
|
158
|
+
ASTAR: EthChainId.ASTAR;
|
|
159
|
+
CALLISTO: EthChainId.CALLISTO;
|
|
160
|
+
WANCHAIN: EthChainId.WANCHAIN;
|
|
161
|
+
POLYGON_ZKEVM: EthChainId.POLYGON_ZKEVM;
|
|
162
|
+
METIS: EthChainId.METIS;
|
|
163
|
+
OMCHAIN: EthChainId.OMCHAIN;
|
|
164
|
+
MOONBEAM: EthChainId.MOONBEAM;
|
|
165
|
+
MOONRIVER: EthChainId.MOONRIVER;
|
|
166
|
+
MOONBASE: EthChainId.MOONBASE;
|
|
167
|
+
DEV: EthChainId.DEV;
|
|
168
|
+
RONIN: EthChainId.RONIN;
|
|
169
|
+
KAVA: EthChainId.KAVA;
|
|
170
|
+
EZCHAIN: EthChainId.EZCHAIN;
|
|
171
|
+
PHI: EthChainId.PHI;
|
|
172
|
+
IOTEX: EthChainId.IOTEX;
|
|
173
|
+
XLC: EthChainId.XLC;
|
|
174
|
+
NAHMII: EthChainId.NAHMII;
|
|
175
|
+
NMACTEST: EthChainId.NMACTEST;
|
|
176
|
+
KLAYTN: EthChainId.KLAYTN;
|
|
177
|
+
EVMOS: EthChainId.EVMOS;
|
|
178
|
+
BASE_GOERLI: EthChainId.BASE_GOERLI;
|
|
179
|
+
SMARTBCH: EthChainId.SMARTBCH;
|
|
180
|
+
CRYSTALEUM: EthChainId.CRYSTALEUM;
|
|
181
|
+
FUSION: EthChainId.FUSION;
|
|
182
|
+
ARBITRUM: EthChainId.ARBITRUM;
|
|
183
|
+
CELO: EthChainId.CELO;
|
|
184
|
+
OASIS: EthChainId.OASIS;
|
|
185
|
+
AVALANCHE: EthChainId.AVALANCHE;
|
|
186
|
+
GODWOKEN: EthChainId.GODWOKEN;
|
|
187
|
+
AKROMA: EthChainId.AKROMA;
|
|
188
|
+
POLIS: EthChainId.POLIS;
|
|
189
|
+
ARBITRUM_GOERLI: EthChainId.ARBITRUM_GOERLI;
|
|
190
|
+
SEPOLIA: EthChainId.SEPOLIA;
|
|
191
|
+
AURORA: EthChainId.AURORA;
|
|
192
|
+
HARMONY: EthChainId.HARMONY;
|
|
193
|
+
PALM: EthChainId.PALM;
|
|
194
|
+
CURIO: EthChainId.CURIO;
|
|
94
195
|
};
|
|
95
196
|
export declare const CHAIN_MAP: Record<string, string>;
|
|
96
197
|
export declare function getChainName(chainId: string | number | null | undefined): string;
|
package/lib/chain.js
CHANGED
|
@@ -1,105 +1,121 @@
|
|
|
1
1
|
// copy from https://github.com/DefiLlama/chainlist/blob/main/constants/chainIds.js
|
|
2
2
|
// and https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
3
|
+
export var EthChainId;
|
|
4
|
+
(function (EthChainId) {
|
|
5
|
+
EthChainId["KARDIA"] = "0";
|
|
6
|
+
EthChainId["ETHEREUM"] = "1";
|
|
7
|
+
EthChainId["EXPANSE"] = "2";
|
|
8
|
+
EthChainId["ROPSTEN"] = "3";
|
|
9
|
+
EthChainId["RINKEBY"] = "4";
|
|
10
|
+
EthChainId["GOERLI"] = "5";
|
|
11
|
+
EthChainId["KOTTI"] = "6";
|
|
12
|
+
EthChainId["UBIQ"] = "8";
|
|
13
|
+
EthChainId["OPTIMISM"] = "10";
|
|
14
|
+
EthChainId["SONGBIRD"] = "19";
|
|
15
|
+
EthChainId["ELASTOS"] = "20";
|
|
16
|
+
EthChainId["CRONOS"] = "25";
|
|
17
|
+
EthChainId["RSK"] = "30";
|
|
18
|
+
EthChainId["TELOS"] = "40";
|
|
19
|
+
EthChainId["XDC"] = "50";
|
|
20
|
+
EthChainId["CSC"] = "52";
|
|
21
|
+
EthChainId["ZYX"] = "55";
|
|
22
|
+
EthChainId["BINANCE"] = "56";
|
|
23
|
+
EthChainId["SYSCOIN"] = "57";
|
|
24
|
+
EthChainId["GOCHAIN"] = "60";
|
|
25
|
+
EthChainId["ETHCLASSIC"] = "61";
|
|
26
|
+
EthChainId["MORDOR"] = "63";
|
|
27
|
+
EthChainId["OKEXCHAIN"] = "66";
|
|
28
|
+
EthChainId["HOO"] = "70";
|
|
29
|
+
EthChainId["METER"] = "82";
|
|
30
|
+
EthChainId["TOMOCHAIN"] = "88";
|
|
31
|
+
EthChainId["BINANCE_TEST"] = "97";
|
|
32
|
+
EthChainId["XDAI"] = "100";
|
|
33
|
+
EthChainId["VELAS"] = "106";
|
|
34
|
+
EthChainId["THUNDERCORE"] = "108";
|
|
35
|
+
EthChainId["FUSE"] = "122";
|
|
36
|
+
EthChainId["HECO"] = "128";
|
|
37
|
+
EthChainId["POLYGON"] = "137";
|
|
38
|
+
EthChainId["XDAIARB"] = "200";
|
|
39
|
+
EthChainId["ASTOR"] = "212";
|
|
40
|
+
EthChainId["ENERGYWEB"] = "246";
|
|
41
|
+
EthChainId["FANTOM"] = "250";
|
|
42
|
+
EthChainId["HPB"] = "269";
|
|
43
|
+
EthChainId["BOBA"] = "288";
|
|
44
|
+
EthChainId["KUCOIN"] = "321";
|
|
45
|
+
EthChainId["ZKSYNC_ERA"] = "324";
|
|
46
|
+
EthChainId["SHIDEN"] = "336";
|
|
47
|
+
EthChainId["THETA"] = "361";
|
|
48
|
+
EthChainId["SX"] = "416";
|
|
49
|
+
EthChainId["CANDLE"] = "534";
|
|
50
|
+
EthChainId["ASTAR"] = "592";
|
|
51
|
+
EthChainId["CALLISTO"] = "820";
|
|
52
|
+
EthChainId["WANCHAIN"] = "888";
|
|
53
|
+
EthChainId["POLYGON_ZKEVM"] = "1101";
|
|
54
|
+
EthChainId["METIS"] = "1088";
|
|
55
|
+
EthChainId["OMCHAIN"] = "1246";
|
|
56
|
+
EthChainId["MOONBEAM"] = "1284";
|
|
57
|
+
EthChainId["MOONRIVER"] = "1285";
|
|
58
|
+
EthChainId["MOONBASE"] = "1287";
|
|
59
|
+
EthChainId["DEV"] = "2018";
|
|
60
|
+
EthChainId["RONIN"] = "2020";
|
|
61
|
+
EthChainId["KAVA"] = "2222";
|
|
62
|
+
EthChainId["EZCHAIN"] = "2612";
|
|
63
|
+
EthChainId["PHI"] = "4181";
|
|
64
|
+
EthChainId["IOTEX"] = "4689";
|
|
65
|
+
EthChainId["XLC"] = "5050";
|
|
66
|
+
EthChainId["NAHMII"] = "5551";
|
|
67
|
+
EthChainId["NMACTEST"] = "7777";
|
|
68
|
+
EthChainId["KLAYTN"] = "8217";
|
|
69
|
+
EthChainId["EVMOS"] = "9001";
|
|
70
|
+
EthChainId["BASE_GOERLI"] = "84531";
|
|
71
|
+
EthChainId["SMARTBCH"] = "10000";
|
|
72
|
+
EthChainId["CRYSTALEUM"] = "103090";
|
|
73
|
+
EthChainId["FUSION"] = "32659";
|
|
74
|
+
EthChainId["ARBITRUM"] = "42161";
|
|
75
|
+
EthChainId["CELO"] = "42220";
|
|
76
|
+
EthChainId["OASIS"] = "42262";
|
|
77
|
+
EthChainId["AVALANCHE"] = "43114";
|
|
78
|
+
EthChainId["GODWOKEN"] = "71402";
|
|
79
|
+
EthChainId["AKROMA"] = "200625";
|
|
80
|
+
EthChainId["POLIS"] = "333999";
|
|
81
|
+
EthChainId["ARBITRUM_GOERLI"] = "421613";
|
|
82
|
+
EthChainId["SEPOLIA"] = "11155111";
|
|
83
|
+
EthChainId["AURORA"] = "1313161554";
|
|
84
|
+
EthChainId["HARMONY"] = "1666600000";
|
|
85
|
+
EthChainId["PALM"] = "11297108109";
|
|
86
|
+
EthChainId["CURIO"] = "836542336838601";
|
|
87
|
+
})(EthChainId || (EthChainId = {}));
|
|
88
|
+
export var AptosChainId;
|
|
89
|
+
(function (AptosChainId) {
|
|
90
|
+
AptosChainId["APTOS_MAINNET"] = "aptos_mainnet";
|
|
91
|
+
AptosChainId["APTOS_TESTNET"] = "aptos_testnet";
|
|
92
|
+
AptosChainId["APTOS_DEVNET"] = "aptos_devnet";
|
|
93
|
+
})(AptosChainId || (AptosChainId = {}));
|
|
94
|
+
export var SuiChainId;
|
|
95
|
+
(function (SuiChainId) {
|
|
96
|
+
SuiChainId["SUI_MAINNET"] = "sui_mainnet";
|
|
97
|
+
SuiChainId["SUI_TESTNET"] = "sui_testnet";
|
|
98
|
+
SuiChainId["SUI_DEVNET"] = "sui_devnet";
|
|
99
|
+
})(SuiChainId || (SuiChainId = {}));
|
|
100
|
+
export var SolanaChainId;
|
|
101
|
+
(function (SolanaChainId) {
|
|
102
|
+
SolanaChainId["SOLANA_MAINNET"] = "sol_mainnet";
|
|
103
|
+
SolanaChainId["SOLANA_DEVNET"] = "sol_devnet";
|
|
104
|
+
SolanaChainId["SOLANA_TESTNET"] = "sol_testnet";
|
|
105
|
+
SolanaChainId["SOLANA_PYTH"] = "sol_pyth";
|
|
106
|
+
})(SolanaChainId || (SolanaChainId = {}));
|
|
107
|
+
export const ChainId = {
|
|
108
|
+
...EthChainId,
|
|
109
|
+
...AptosChainId,
|
|
110
|
+
...SuiChainId,
|
|
111
|
+
...SolanaChainId,
|
|
96
112
|
};
|
|
97
113
|
export const CHAIN_MAP = {};
|
|
98
|
-
for (const [key, value] of Object.entries(
|
|
99
|
-
if (value ===
|
|
114
|
+
for (const [key, value] of Object.entries(ChainId)) {
|
|
115
|
+
if (value === ChainId.POLYGON_ZKEVM) {
|
|
100
116
|
CHAIN_MAP[value] = 'Polygon zkEVM';
|
|
101
117
|
}
|
|
102
|
-
else if (value ===
|
|
118
|
+
else if (value === ChainId.ZKSYNC_ERA) {
|
|
103
119
|
CHAIN_MAP[value] = 'zkSync Era';
|
|
104
120
|
}
|
|
105
121
|
else {
|
package/lib/chain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"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","sourcesContent":["// copy from https://github.com/DefiLlama/chainlist/blob/main/constants/chainIds.js\n// and https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/\n\nexport const CHAIN_IDS = {\n KARDIA: '0',\n ETHEREUM: '1',\n EXPANSE: '2',\n ROPSTEN: '3',\n RINKEBY: '4',\n GOERLI: '5',\n KOTTI: '6',\n UBIQ: '8',\n OPTIMISM: '10',\n SONGBIRD: '19',\n ELASTOS: '20',\n CRONOS: '25',\n RSK: '30',\n TELOS: '40',\n XDC: '50',\n CSC: '52',\n ZYX: '55',\n BINANCE: '56',\n SYSCOIN: '57',\n GOCHAIN: '60',\n ETHCLASSIC: '61',\n MORDOR: '63',\n OKEXCHAIN: '66',\n HOO: '70',\n METER: '82',\n TOMOCHAIN: '88',\n BINANCE_TEST: '97',\n XDAI: '100',\n VELAS: '106',\n THUNDERCORE: '108',\n FUSE: '122',\n HECO: '128',\n POLYGON: '137',\n XDAIARB: '200',\n ASTOR: '212',\n ENERGYWEB: '246',\n FANTOM: '250',\n HPB: '269',\n BOBA: '288',\n KUCOIN: '321',\n ZKSYNC_ERA: '324',\n SHIDEN: '336',\n THETA: '361',\n SX: '416',\n CANDLE: '534',\n ASTAR: '592',\n CALLISTO: '820',\n WANCHAIN: '888',\n POLYGON_ZKEVM: '1101',\n METIS: '1088',\n OMCHAIN: '1246',\n MOONBEAM: '1284',\n MOONRIVER: '1285',\n MOONBASE: '1287',\n DEV: '2018',\n RONIN: '2020',\n KAVA: '2222',\n EZCHAIN: '2612',\n PHI: '4181',\n IOTEX: '4689',\n XLC: '5050',\n NAHMII: '5551',\n NMACTEST: '7777',\n KLAYTN: '8217',\n EVMOS: '9001',\n BASE_GOERLI: '84531',\n SMARTBCH: '10000',\n CRYSTALEUM: '103090',\n FUSION: '32659',\n ARBITRUM: '42161',\n CELO: '42220',\n OASIS: '42262',\n AVALANCHE: '43114',\n GODWOKEN: '71402',\n AKROMA: '200625',\n POLIS: '333999',\n ARBITRUM_GOERLI: '421613',\n SEPOLIA: '11155111',\n AURORA: '1313161554',\n HARMONY: '1666600000',\n PALM: '11297108109',\n CURIO: '836542336838601',\n SOLANA_MAINNET: 'sol_mainnet',\n SOLANA_DEVNET: 'sol_devnet',\n SOLANA_TESTNET: 'sol_testnet',\n SOLANA_PYTH: 'sol_pyth',\n SUI_MAINNET: 'sui_mainnet',\n SUI_TESTNET: 'sui_testnet',\n SUI_DEVNET: 'sui_devnet',\n APTOS_MAINNET: 'aptos_mainnet',\n APTOS_TESTNET: 'aptos_testnet',\n APTOS_DEVNET: 'aptos_devnet',\n}\n\nexport const CHAIN_MAP: Record<string, string> = {}\n\nfor (const [key, value] of Object.entries(CHAIN_IDS)) {\n if (value === CHAIN_IDS.POLYGON_ZKEVM) {\n CHAIN_MAP[value] = 'Polygon zkEVM'\n } else if (value === CHAIN_IDS.ZKSYNC_ERA) {\n CHAIN_MAP[value] = 'zkSync Era'\n } else {\n const parts = key.split('_')\n CHAIN_MAP[value] = parts\n .map((part, index) => {\n return part[0] + part.slice(1).toLowerCase()\n })\n .join(' ')\n }\n}\n\nexport function getChainName(chainId: string | number | null | undefined): string {\n if (typeof chainId === 'number') {\n chainId = chainId.toString()\n }\n if (chainId) {\n const name = CHAIN_MAP[chainId]\n if (name) {\n return name\n }\n }\n return chainId || ''\n}\n\nexport function getChainType(chainId?: string | number): string {\n const id = String(chainId).toLowerCase()\n if (id.startsWith('sol')) {\n return 'solana'\n }\n if (id.startsWith('sui')) {\n return 'sui'\n }\n if (id.startsWith('apt')) {\n return 'aptos'\n }\n return 'EVM'\n}\n\nexport function getChainScanUrl(\n chainId?: string | number,\n hash?: string,\n subtype?: 'block' | 'address' | 'transaction'\n): string | undefined {\n const chainName = getChainName(chainId)\n if (chainName === 'Ethereum') {\n if (subtype === 'block') {\n return `https://etherscan.io/block/${hash}`\n } else if (subtype === 'address') {\n return `https://etherscan.io/address/${hash}`\n } else {\n return `https://etherscan.io/tx/${hash}`\n }\n }\n if (chainName === 'Polygon') {\n if (subtype === 'block') {\n return `https://polygonscan.com/block/${hash}`\n } else if (subtype === 'address') {\n return `https://polygonscan.com/address/${hash}`\n } else {\n return `https://polygonscan.com/tx/${hash}`\n }\n }\n if (chainName.startsWith('Aptos ')) {\n if (subtype === 'block') {\n return `https://explorer.aptos.io/block/${hash}`\n } else if (subtype === 'address') {\n return `https://explorer.aptos.io/account/${hash}`\n } else {\n return `https://explorer.aptos.io/txn/${hash}`\n }\n }\n if (chainName.startsWith('Solana ')) {\n if (subtype === 'block') {\n return `https://explorer.solana.com/block/${hash}`\n } else if (subtype === 'address') {\n return `https://explorer.solana.com/address/${hash}`\n } else {\n return `https://explorer.solana.io/tx/${hash}`\n }\n }\n if (chainName.startsWith('Sui ')) {\n if (subtype === 'block') {\n return `https://explorer.sui.io/block/${hash}`\n } else if (subtype === 'address') {\n return `https://explorer.sui.io/address/${hash}`\n } else {\n return `https://explorer.sui.io/transaction/${hash}`\n }\n }\n return undefined\n}\n\nexport function chainInitialLabel(chainType: string) {\n switch (chainType) {\n case 'aptos':\n return 'Initial start version'\n case 'sui':\n return 'Initial start checkpoint'\n default:\n return 'Initial start block number'\n }\n}\n\nexport function chainBlockLabel(chainType: string) {\n switch (chainType) {\n case 'aptos':\n return 'Version'\n case 'sui':\n return 'Checkpoint'\n default:\n return 'Block number'\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"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","sourcesContent":["// copy from https://github.com/DefiLlama/chainlist/blob/main/constants/chainIds.js\n// and https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/\n\nexport enum EthChainId {\n KARDIA = '0',\n ETHEREUM = '1',\n EXPANSE = '2',\n ROPSTEN = '3',\n RINKEBY = '4',\n GOERLI = '5',\n KOTTI = '6',\n UBIQ = '8',\n OPTIMISM = '10',\n SONGBIRD = '19',\n ELASTOS = '20',\n CRONOS = '25',\n RSK = '30',\n TELOS = '40',\n XDC = '50',\n CSC = '52',\n ZYX = '55',\n BINANCE = '56',\n SYSCOIN = '57',\n GOCHAIN = '60',\n ETHCLASSIC = '61',\n MORDOR = '63',\n OKEXCHAIN = '66',\n HOO = '70',\n METER = '82',\n TOMOCHAIN = '88',\n BINANCE_TEST = '97',\n XDAI = '100',\n VELAS = '106',\n THUNDERCORE = '108',\n FUSE = '122',\n HECO = '128',\n POLYGON = '137',\n XDAIARB = '200',\n ASTOR = '212',\n ENERGYWEB = '246',\n FANTOM = '250',\n HPB = '269',\n BOBA = '288',\n KUCOIN = '321',\n ZKSYNC_ERA = '324',\n SHIDEN = '336',\n THETA = '361',\n SX = '416',\n CANDLE = '534',\n ASTAR = '592',\n CALLISTO = '820',\n WANCHAIN = '888',\n POLYGON_ZKEVM = '1101',\n METIS = '1088',\n OMCHAIN = '1246',\n MOONBEAM = '1284',\n MOONRIVER = '1285',\n MOONBASE = '1287',\n DEV = '2018',\n RONIN = '2020',\n KAVA = '2222',\n EZCHAIN = '2612',\n PHI = '4181',\n IOTEX = '4689',\n XLC = '5050',\n NAHMII = '5551',\n NMACTEST = '7777',\n KLAYTN = '8217',\n EVMOS = '9001',\n BASE_GOERLI = '84531',\n SMARTBCH = '10000',\n CRYSTALEUM = '103090',\n FUSION = '32659',\n ARBITRUM = '42161',\n CELO = '42220',\n OASIS = '42262',\n AVALANCHE = '43114',\n GODWOKEN = '71402',\n AKROMA = '200625',\n POLIS = '333999',\n ARBITRUM_GOERLI = '421613',\n SEPOLIA = '11155111',\n AURORA = '1313161554',\n HARMONY = '1666600000',\n PALM = '11297108109',\n CURIO = '836542336838601',\n}\n\nexport enum AptosChainId {\n APTOS_MAINNET = 'aptos_mainnet',\n APTOS_TESTNET = 'aptos_testnet',\n APTOS_DEVNET = 'aptos_devnet',\n}\n\nexport enum SuiChainId {\n SUI_MAINNET = 'sui_mainnet',\n SUI_TESTNET = 'sui_testnet',\n SUI_DEVNET = 'sui_devnet',\n}\n\nexport enum SolanaChainId {\n SOLANA_MAINNET = 'sol_mainnet',\n SOLANA_DEVNET = 'sol_devnet',\n SOLANA_TESTNET = 'sol_testnet',\n SOLANA_PYTH = 'sol_pyth',\n}\n\nexport type ChainId = EthChainId | AptosChainId | SuiChainId | SolanaChainId\nexport const ChainId = {\n ...EthChainId,\n ...AptosChainId,\n ...SuiChainId,\n ...SolanaChainId,\n}\n\nexport const CHAIN_MAP: Record<string, string> = {}\n\nfor (const [key, value] of Object.entries(ChainId)) {\n if (value === ChainId.POLYGON_ZKEVM) {\n CHAIN_MAP[value] = 'Polygon zkEVM'\n } else if (value === ChainId.ZKSYNC_ERA) {\n CHAIN_MAP[value] = 'zkSync Era'\n } else {\n const parts = key.split('_')\n CHAIN_MAP[value] = parts\n .map((part, index) => {\n return part[0] + part.slice(1).toLowerCase()\n })\n .join(' ')\n }\n}\n\nexport function getChainName(chainId: string | number | null | undefined): string {\n if (typeof chainId === 'number') {\n chainId = chainId.toString()\n }\n if (chainId) {\n const name = CHAIN_MAP[chainId]\n if (name) {\n return name\n }\n }\n return chainId || ''\n}\n\nexport function getChainType(chainId?: string | number): string {\n const id = String(chainId).toLowerCase()\n if (id.startsWith('sol')) {\n return 'solana'\n }\n if (id.startsWith('sui')) {\n return 'sui'\n }\n if (id.startsWith('apt')) {\n return 'aptos'\n }\n return 'EVM'\n}\n\nexport function getChainScanUrl(\n chainId?: string | number,\n hash?: string,\n subtype?: 'block' | 'address' | 'transaction'\n): string | undefined {\n const chainName = getChainName(chainId)\n if (chainName === 'Ethereum') {\n if (subtype === 'block') {\n return `https://etherscan.io/block/${hash}`\n } else if (subtype === 'address') {\n return `https://etherscan.io/address/${hash}`\n } else {\n return `https://etherscan.io/tx/${hash}`\n }\n }\n if (chainName === 'Polygon') {\n if (subtype === 'block') {\n return `https://polygonscan.com/block/${hash}`\n } else if (subtype === 'address') {\n return `https://polygonscan.com/address/${hash}`\n } else {\n return `https://polygonscan.com/tx/${hash}`\n }\n }\n if (chainName.startsWith('Aptos ')) {\n if (subtype === 'block') {\n return `https://explorer.aptos.io/block/${hash}`\n } else if (subtype === 'address') {\n return `https://explorer.aptos.io/account/${hash}`\n } else {\n return `https://explorer.aptos.io/txn/${hash}`\n }\n }\n if (chainName.startsWith('Solana ')) {\n if (subtype === 'block') {\n return `https://explorer.solana.com/block/${hash}`\n } else if (subtype === 'address') {\n return `https://explorer.solana.com/address/${hash}`\n } else {\n return `https://explorer.solana.io/tx/${hash}`\n }\n }\n if (chainName.startsWith('Sui ')) {\n if (subtype === 'block') {\n return `https://explorer.sui.io/block/${hash}`\n } else if (subtype === 'address') {\n return `https://explorer.sui.io/address/${hash}`\n } else {\n return `https://explorer.sui.io/transaction/${hash}`\n }\n }\n return undefined\n}\n\nexport function chainInitialLabel(chainType: string) {\n switch (chainType) {\n case 'aptos':\n return 'Initial start version'\n case 'sui':\n return 'Initial start checkpoint'\n default:\n return 'Initial start block number'\n }\n}\n\nexport function chainBlockLabel(chainType: string) {\n switch (chainType) {\n case 'aptos':\n return 'Version'\n case 'sui':\n return 'Checkpoint'\n default:\n return 'Block number'\n }\n}\n"]}
|
package/lib/commands/run-add.js
CHANGED
|
@@ -6,9 +6,14 @@ import { codegen } from './build.js';
|
|
|
6
6
|
import * as process from 'process';
|
|
7
7
|
import yaml from 'yaml';
|
|
8
8
|
import { getABIFilePath, getABI, writeABIFile, ETH_API_URL_MAP } from '../abi.js';
|
|
9
|
-
import {
|
|
9
|
+
import { AptosChainId, getChainName, SuiChainId } from '../chain.js';
|
|
10
10
|
export async function runAdd(argv) {
|
|
11
|
-
const supportedChain = [
|
|
11
|
+
const supportedChain = [
|
|
12
|
+
AptosChainId.APTOS_MAINNET,
|
|
13
|
+
AptosChainId.APTOS_TESTNET,
|
|
14
|
+
SuiChainId.SUI_TESTNET,
|
|
15
|
+
SuiChainId.SUI_MAINNET,
|
|
16
|
+
];
|
|
12
17
|
supportedChain.push(...Object.keys(ETH_API_URL_MAP));
|
|
13
18
|
const supprtedChainMessage = [
|
|
14
19
|
'',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-add.js","sourceRoot":"","sources":["../../src/commands/run-add.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AACjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"run-add.js","sourceRoot":"","sources":["../../src/commands/run-add.ts"],"names":[],"mappings":"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","sourcesContent":["import commandLineArgs from 'command-line-args'\nimport commandLineUsage from 'command-line-usage'\nimport fs from 'fs-extra'\nimport chalk from 'chalk'\n\nimport { codegen } from './build.js'\n\nimport * as process from 'process'\nimport yaml from 'yaml'\nimport { getABIFilePath, getABI, writeABIFile, ETH_API_URL_MAP } from '../abi.js'\nimport { AptosChainId, ChainId, getChainName, SuiChainId } from '../chain.js'\n\nexport async function runAdd(argv: string[]) {\n const supportedChain: string[] = [\n AptosChainId.APTOS_MAINNET,\n AptosChainId.APTOS_TESTNET,\n SuiChainId.SUI_TESTNET,\n SuiChainId.SUI_MAINNET,\n ]\n supportedChain.push(...Object.keys(ETH_API_URL_MAP))\n const supprtedChainMessage = [\n '',\n ...supportedChain.map(\n (chainId, idx) => ` ${getChainName(chainId)}:\\t${chainId}${idx === supportedChain.length - 1 ? '' : '\\n'}`\n ),\n ]\n\n const optionDefinitions = [\n {\n name: 'help',\n alias: 'h',\n type: Boolean,\n description: 'Display this usage guide.',\n },\n {\n name: 'chain',\n alias: 'c',\n type: String,\n defaultValue: '1',\n description: 'Chain id, current support (chain name: id)s are:\\n' + supprtedChainMessage,\n },\n {\n name: 'address',\n defaultOption: true,\n description: 'Address of the contract',\n type: String,\n },\n {\n name: 'name',\n alias: 'n',\n description: 'File name for the downloaded contract, if empty, use address as file name',\n type: String,\n },\n ]\n\n const options = commandLineArgs(optionDefinitions, { argv, partial: true })\n const usage = commandLineUsage([\n {\n header: \"Add contract's ABI to the project\",\n content: 'sentio add [--chain <chain> --name <name>] <address>',\n },\n {\n header: 'Options',\n optionList: optionDefinitions,\n },\n ])\n\n if (options.help || !options.address) {\n console.log(usage)\n } else {\n const chain = options['chain'].toLowerCase() as ChainId\n const address: string = options.address\n if (!address.startsWith('0x')) {\n console.error(chalk.red('Address must start with 0x'))\n console.log(usage)\n process.exit(1)\n }\n\n const abiRes = await getABI(chain, address, options.name)\n const filename = abiRes.name || address\n\n writeABIFile(abiRes.abi, getABIFilePath(chain, filename))\n\n // Write contract info to sentio.yaml\n const yamlDocument: yaml.Document = yaml.parseDocument(fs.readFileSync('sentio.yaml', 'utf8'))\n let contracts = yamlDocument.get('contracts') as yaml.YAMLSeq\n if (!contracts) {\n contracts = new yaml.YAMLSeq()\n yamlDocument.set('contracts', contracts)\n }\n\n let hasContract = false\n for (const item of contracts.items as yaml.YAMLMap[]) {\n if (item.get('chain') === chain && item.get('address') === address) {\n hasContract = true\n }\n }\n\n if (!hasContract) {\n const newContract = new yaml.YAMLMap()\n newContract.set('chain', chain)\n newContract.set('address', address)\n if (address !== filename) {\n newContract.set('name', filename)\n }\n contracts.add(newContract)\n fs.writeFileSync('sentio.yaml', yamlDocument.toString(), 'utf8')\n }\n\n // Run gen\n await codegen(false)\n }\n}\n"]}
|
package/lib/config.d.ts
CHANGED
package/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAA+B;IAC1C,KAAK,EAAE,wBAAwB;IAC/B,IAAI,EAAE,yBAAyB;IAC/B,OAAO,EAAE,4BAA4B;IACrC,IAAI,EAAE,wBAAwB;CAC/B,CAAA;AAgBD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,EAAE;QACrC,IAAI,GAAG,MAAM,CAAA;KACd;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IAMxC,IAAI,MAAM,GAAG,EAAE,EACb,QAAQ,GAAG,EAAE,EACb,QAAQ,GAAG,EAAE,EACb,WAAW,GAAG,EAAE,CAAA;IAClB,QAAQ,IAAI,EAAE;QACZ,KAAK,OAAO,CAAC,OAAO,CAAC;YACnB,MAAM,GAAG,iCAAiC,CAAA;YAC1C,QAAQ,GAAG,kCAAkC,CAAA;YAC7C,QAAQ,GAAG,0BAA0B,CAAA;YACrC,WAAW,GAAG,qCAAqC,CAAA;YACnD,MAAK;QACP,KAAK,OAAO,CAAC,MAAM,CAAC;YAClB,MAAM,GAAG,yBAAyB,CAAA;YAClC,QAAQ,GAAG,kCAAkC,CAAA;YAC7C,QAAQ,GAAG,+BAA+B,CAAA;YAC1C,WAAW,GAAG,qCAAqC,CAAA;YACnD,MAAK;QACP,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QACrB,KAAK,OAAO,CAAC,SAAS,CAAC;YACrB,MAAM,GAAG,8BAA8B,CAAA;YACvC,QAAQ,GAAG,kCAAkC,CAAA;YAC7C,QAAQ,GAAG,gCAAgC,CAAA;YAC3C,WAAW,GAAG,sCAAsC,CAAA;YACpD,MAAK;QACP;YACE,MAAK;KACR;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAyB;IACpD,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAyB,EAAE,KAAyB,EAAE,IAAwB;IAChH,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,CAAA;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtB,KAAK,GAAG,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAC7C,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;SACpC;QACD,IAAI,IAAI,EAAE;YACR,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACtB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC1B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;aAC1B;iBAAM;gBACL,IAAI,GAAG,IAAI,CAAA;aACZ;SACF;QACD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;KACxD;AACH,CAAC;AAED,4BAA4B;AAC5B,kBAAkB;AAClB,qBAAqB;AACrB,IAAI;AACJ,EAAE;AACF,wCAAwC;AACxC,2BAA2B;AAC3B,iCAAiC","sourcesContent":["import { ChainId } from './chain.js'\n\nconst HostMap: { [host: string]: string } = {\n local: 'http://localhost:10000',\n test: 'https://test.sentio.xyz',\n staging: 'https://staging.sentio.xyz',\n prod: 'https://app.sentio.xyz',\n}\n\nexport interface YamlContractConfig {\n address: string\n chain: ChainId\n name: string\n}\n\nexport interface YamlProjectConfig {\n project: string\n host: string\n build: boolean\n contracts?: YamlContractConfig[]\n debug: boolean\n}\n\nexport function getFinalizedHost(host: string): string {\n if (host === undefined || host === '') {\n host = 'prod'\n }\n return HostMap[host] ?? host\n}\n\nexport function getAuthConfig(host: string): {\n domain: string\n clientId: string\n audience: string\n redirectUri: string\n} {\n let domain = '',\n clientId = '',\n audience = '',\n redirectUri = ''\n switch (host) {\n case HostMap['local']:\n domain = 'https://sentio-dev.us.auth0.com'\n clientId = 'JREam3EysMTM49eFbAjNK02OCykpmda3'\n audience = 'http://localhost:8080/v1'\n redirectUri = 'http://localhost:10000/redirect/sdk'\n break\n case HostMap['prod']:\n domain = 'https://auth.sentio.xyz'\n clientId = '66oqMrep54LVI9ckH97cw8C4GBA1cpKW'\n audience = 'https://app.sentio.xyz/api/v1'\n redirectUri = 'https://app.sentio.xyz/redirect/sdk'\n break\n case HostMap['test']:\n case HostMap['staging']:\n domain = 'https://auth.test.sentio.xyz'\n clientId = '6SH2S1qJ2yYqyYGCQOcEnGsYgoyONTxM'\n audience = 'https://test.sentio.xyz/api/v1'\n redirectUri = 'https://test.sentio.xyz/redirect/sdk'\n break\n default:\n break\n }\n return { domain, clientId, audience, redirectUri }\n}\n\nexport function finalizeHost(config: YamlProjectConfig) {\n config.host = getFinalizedHost(config.host)\n}\n\nexport function FinalizeProjectName(config: YamlProjectConfig, owner: string | undefined, slug: string | undefined) {\n if (owner || slug) {\n let name = config.project\n if (name.includes('/')) {\n owner = owner || config.project.split('/')[0]\n name = config.project.split('/')[1]\n }\n if (slug) {\n if (slug.includes('/')) {\n owner = slug.split('/')[0]\n name = slug.split('/')[1]\n } else {\n name = slug\n }\n }\n config.project = owner ? [owner, name].join('/') : name\n }\n}\n\n// export interface Target {\n// chain: string\n// abisDir?: string\n// }\n//\n// // Supported target chain, lower case\n// export const EVM = 'evm'\n// export const SOLANA = 'solana'\n"]}
|
package/package.json
CHANGED
package/src/abi.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import { AptosClient } from 'aptos-sdk'
|
|
2
2
|
import { JsonRpcProvider, Connection } from '@mysten/sui.js'
|
|
3
|
-
import { CHAIN_IDS } from './chain.js'
|
|
4
3
|
import chalk from 'chalk'
|
|
5
4
|
import process from 'process'
|
|
6
5
|
import path from 'path'
|
|
7
6
|
import fs from 'fs-extra'
|
|
8
7
|
import fetch from 'node-fetch'
|
|
8
|
+
import { AptosChainId, ChainId, EthChainId, SuiChainId } from './chain.js'
|
|
9
9
|
|
|
10
10
|
export const ETH_API_URL_MAP: Record<string, string> = {}
|
|
11
11
|
|
|
12
|
-
ETH_API_URL_MAP[
|
|
13
|
-
ETH_API_URL_MAP[
|
|
14
|
-
ETH_API_URL_MAP[
|
|
15
|
-
ETH_API_URL_MAP[
|
|
16
|
-
ETH_API_URL_MAP[
|
|
17
|
-
ETH_API_URL_MAP[
|
|
12
|
+
ETH_API_URL_MAP[EthChainId.ETHEREUM] = 'https://api.etherscan.io'
|
|
13
|
+
ETH_API_URL_MAP[EthChainId.GOERLI] = 'https://api-goerli.etherscan.io'
|
|
14
|
+
ETH_API_URL_MAP[EthChainId.BINANCE] = 'https://api.bscscan.com'
|
|
15
|
+
ETH_API_URL_MAP[EthChainId.POLYGON] = 'https://api.polygonscan.com'
|
|
16
|
+
ETH_API_URL_MAP[EthChainId.ARBITRUM] = 'https://api.arbiscan.io'
|
|
17
|
+
ETH_API_URL_MAP[EthChainId.OPTIMISM] = 'https://api-optimistic.etherscan.io'
|
|
18
18
|
// ETH_API_URL_MAP[CHAIN_IDS.BASE_GOERLI] = 'https://api-goerli.basescan.org' // didn't see any verified contract
|
|
19
19
|
|
|
20
|
-
ETH_API_URL_MAP[
|
|
21
|
-
ETH_API_URL_MAP[
|
|
22
|
-
ETH_API_URL_MAP[
|
|
23
|
-
ETH_API_URL_MAP[
|
|
20
|
+
ETH_API_URL_MAP[EthChainId.AVALANCHE] = 'https://api.snowtrace.io'
|
|
21
|
+
ETH_API_URL_MAP[EthChainId.CRONOS] = 'https://api.cronoscan.com'
|
|
22
|
+
ETH_API_URL_MAP[EthChainId.MOONBEAM] = 'https://api-moonbeam.moonscan.io'
|
|
23
|
+
ETH_API_URL_MAP[EthChainId.FANTOM] = 'https://api.ftmscan.com'
|
|
24
24
|
|
|
25
25
|
export async function getABI(
|
|
26
|
-
chain:
|
|
26
|
+
chain: ChainId,
|
|
27
27
|
address: string,
|
|
28
28
|
name: string | undefined
|
|
29
29
|
): Promise<{ name?: string; abi: object | string }> {
|
|
@@ -32,17 +32,16 @@ export async function getABI(
|
|
|
32
32
|
let suiClient: JsonRpcProvider | undefined
|
|
33
33
|
|
|
34
34
|
switch (chain) {
|
|
35
|
-
case
|
|
35
|
+
case AptosChainId.APTOS_MAINNET:
|
|
36
36
|
aptosClient = new AptosClient('https://mainnet.aptoslabs.com/')
|
|
37
37
|
break
|
|
38
|
-
case
|
|
38
|
+
case AptosChainId.APTOS_TESTNET:
|
|
39
39
|
aptosClient = new AptosClient('https://testnet.aptoslabs.com/')
|
|
40
40
|
break
|
|
41
|
-
case
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
case CHAIN_IDS.SUI_TESTNET:
|
|
41
|
+
case SuiChainId.SUI_MAINNET:
|
|
42
|
+
suiClient = new JsonRpcProvider(new Connection({ fullnode: 'https://fullnode.mainnet.sui.io/' }))
|
|
43
|
+
break
|
|
44
|
+
case SuiChainId.SUI_TESTNET:
|
|
46
45
|
suiClient = new JsonRpcProvider(new Connection({ fullnode: 'https://fullnode.testnet.sui.io/' }))
|
|
47
46
|
break
|
|
48
47
|
default:
|
|
@@ -118,16 +117,16 @@ export async function getABI(
|
|
|
118
117
|
export function getABIFilePath(chain: string, name: string): string {
|
|
119
118
|
let subpath
|
|
120
119
|
switch (chain) {
|
|
121
|
-
case
|
|
120
|
+
case AptosChainId.APTOS_MAINNET:
|
|
122
121
|
subpath = 'aptos'
|
|
123
122
|
break
|
|
124
|
-
case
|
|
123
|
+
case AptosChainId.APTOS_TESTNET:
|
|
125
124
|
subpath = 'aptos/testnet'
|
|
126
125
|
break
|
|
127
|
-
case
|
|
126
|
+
case SuiChainId.SUI_MAINNET:
|
|
128
127
|
subpath = 'sui'
|
|
129
128
|
break
|
|
130
|
-
case
|
|
129
|
+
case SuiChainId.SUI_TESTNET:
|
|
131
130
|
subpath = 'sui/testnet'
|
|
132
131
|
break
|
|
133
132
|
default:
|
package/src/chain.ts
CHANGED
|
@@ -1,107 +1,124 @@
|
|
|
1
1
|
// copy from https://github.com/DefiLlama/chainlist/blob/main/constants/chainIds.js
|
|
2
2
|
// and https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/
|
|
3
3
|
|
|
4
|
-
export
|
|
5
|
-
KARDIA
|
|
6
|
-
ETHEREUM
|
|
7
|
-
EXPANSE
|
|
8
|
-
ROPSTEN
|
|
9
|
-
RINKEBY
|
|
10
|
-
GOERLI
|
|
11
|
-
KOTTI
|
|
12
|
-
UBIQ
|
|
13
|
-
OPTIMISM
|
|
14
|
-
SONGBIRD
|
|
15
|
-
ELASTOS
|
|
16
|
-
CRONOS
|
|
17
|
-
RSK
|
|
18
|
-
TELOS
|
|
19
|
-
XDC
|
|
20
|
-
CSC
|
|
21
|
-
ZYX
|
|
22
|
-
BINANCE
|
|
23
|
-
SYSCOIN
|
|
24
|
-
GOCHAIN
|
|
25
|
-
ETHCLASSIC
|
|
26
|
-
MORDOR
|
|
27
|
-
OKEXCHAIN
|
|
28
|
-
HOO
|
|
29
|
-
METER
|
|
30
|
-
TOMOCHAIN
|
|
31
|
-
BINANCE_TEST
|
|
32
|
-
XDAI
|
|
33
|
-
VELAS
|
|
34
|
-
THUNDERCORE
|
|
35
|
-
FUSE
|
|
36
|
-
HECO
|
|
37
|
-
POLYGON
|
|
38
|
-
XDAIARB
|
|
39
|
-
ASTOR
|
|
40
|
-
ENERGYWEB
|
|
41
|
-
FANTOM
|
|
42
|
-
HPB
|
|
43
|
-
BOBA
|
|
44
|
-
KUCOIN
|
|
45
|
-
ZKSYNC_ERA
|
|
46
|
-
SHIDEN
|
|
47
|
-
THETA
|
|
48
|
-
SX
|
|
49
|
-
CANDLE
|
|
50
|
-
ASTAR
|
|
51
|
-
CALLISTO
|
|
52
|
-
WANCHAIN
|
|
53
|
-
POLYGON_ZKEVM
|
|
54
|
-
METIS
|
|
55
|
-
OMCHAIN
|
|
56
|
-
MOONBEAM
|
|
57
|
-
MOONRIVER
|
|
58
|
-
MOONBASE
|
|
59
|
-
DEV
|
|
60
|
-
RONIN
|
|
61
|
-
KAVA
|
|
62
|
-
EZCHAIN
|
|
63
|
-
PHI
|
|
64
|
-
IOTEX
|
|
65
|
-
XLC
|
|
66
|
-
NAHMII
|
|
67
|
-
NMACTEST
|
|
68
|
-
KLAYTN
|
|
69
|
-
EVMOS
|
|
70
|
-
BASE_GOERLI
|
|
71
|
-
SMARTBCH
|
|
72
|
-
CRYSTALEUM
|
|
73
|
-
FUSION
|
|
74
|
-
ARBITRUM
|
|
75
|
-
CELO
|
|
76
|
-
OASIS
|
|
77
|
-
AVALANCHE
|
|
78
|
-
GODWOKEN
|
|
79
|
-
AKROMA
|
|
80
|
-
POLIS
|
|
81
|
-
ARBITRUM_GOERLI
|
|
82
|
-
SEPOLIA
|
|
83
|
-
AURORA
|
|
84
|
-
HARMONY
|
|
85
|
-
PALM
|
|
86
|
-
CURIO
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
4
|
+
export enum EthChainId {
|
|
5
|
+
KARDIA = '0',
|
|
6
|
+
ETHEREUM = '1',
|
|
7
|
+
EXPANSE = '2',
|
|
8
|
+
ROPSTEN = '3',
|
|
9
|
+
RINKEBY = '4',
|
|
10
|
+
GOERLI = '5',
|
|
11
|
+
KOTTI = '6',
|
|
12
|
+
UBIQ = '8',
|
|
13
|
+
OPTIMISM = '10',
|
|
14
|
+
SONGBIRD = '19',
|
|
15
|
+
ELASTOS = '20',
|
|
16
|
+
CRONOS = '25',
|
|
17
|
+
RSK = '30',
|
|
18
|
+
TELOS = '40',
|
|
19
|
+
XDC = '50',
|
|
20
|
+
CSC = '52',
|
|
21
|
+
ZYX = '55',
|
|
22
|
+
BINANCE = '56',
|
|
23
|
+
SYSCOIN = '57',
|
|
24
|
+
GOCHAIN = '60',
|
|
25
|
+
ETHCLASSIC = '61',
|
|
26
|
+
MORDOR = '63',
|
|
27
|
+
OKEXCHAIN = '66',
|
|
28
|
+
HOO = '70',
|
|
29
|
+
METER = '82',
|
|
30
|
+
TOMOCHAIN = '88',
|
|
31
|
+
BINANCE_TEST = '97',
|
|
32
|
+
XDAI = '100',
|
|
33
|
+
VELAS = '106',
|
|
34
|
+
THUNDERCORE = '108',
|
|
35
|
+
FUSE = '122',
|
|
36
|
+
HECO = '128',
|
|
37
|
+
POLYGON = '137',
|
|
38
|
+
XDAIARB = '200',
|
|
39
|
+
ASTOR = '212',
|
|
40
|
+
ENERGYWEB = '246',
|
|
41
|
+
FANTOM = '250',
|
|
42
|
+
HPB = '269',
|
|
43
|
+
BOBA = '288',
|
|
44
|
+
KUCOIN = '321',
|
|
45
|
+
ZKSYNC_ERA = '324',
|
|
46
|
+
SHIDEN = '336',
|
|
47
|
+
THETA = '361',
|
|
48
|
+
SX = '416',
|
|
49
|
+
CANDLE = '534',
|
|
50
|
+
ASTAR = '592',
|
|
51
|
+
CALLISTO = '820',
|
|
52
|
+
WANCHAIN = '888',
|
|
53
|
+
POLYGON_ZKEVM = '1101',
|
|
54
|
+
METIS = '1088',
|
|
55
|
+
OMCHAIN = '1246',
|
|
56
|
+
MOONBEAM = '1284',
|
|
57
|
+
MOONRIVER = '1285',
|
|
58
|
+
MOONBASE = '1287',
|
|
59
|
+
DEV = '2018',
|
|
60
|
+
RONIN = '2020',
|
|
61
|
+
KAVA = '2222',
|
|
62
|
+
EZCHAIN = '2612',
|
|
63
|
+
PHI = '4181',
|
|
64
|
+
IOTEX = '4689',
|
|
65
|
+
XLC = '5050',
|
|
66
|
+
NAHMII = '5551',
|
|
67
|
+
NMACTEST = '7777',
|
|
68
|
+
KLAYTN = '8217',
|
|
69
|
+
EVMOS = '9001',
|
|
70
|
+
BASE_GOERLI = '84531',
|
|
71
|
+
SMARTBCH = '10000',
|
|
72
|
+
CRYSTALEUM = '103090',
|
|
73
|
+
FUSION = '32659',
|
|
74
|
+
ARBITRUM = '42161',
|
|
75
|
+
CELO = '42220',
|
|
76
|
+
OASIS = '42262',
|
|
77
|
+
AVALANCHE = '43114',
|
|
78
|
+
GODWOKEN = '71402',
|
|
79
|
+
AKROMA = '200625',
|
|
80
|
+
POLIS = '333999',
|
|
81
|
+
ARBITRUM_GOERLI = '421613',
|
|
82
|
+
SEPOLIA = '11155111',
|
|
83
|
+
AURORA = '1313161554',
|
|
84
|
+
HARMONY = '1666600000',
|
|
85
|
+
PALM = '11297108109',
|
|
86
|
+
CURIO = '836542336838601',
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export enum AptosChainId {
|
|
90
|
+
APTOS_MAINNET = 'aptos_mainnet',
|
|
91
|
+
APTOS_TESTNET = 'aptos_testnet',
|
|
92
|
+
APTOS_DEVNET = 'aptos_devnet',
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export enum SuiChainId {
|
|
96
|
+
SUI_MAINNET = 'sui_mainnet',
|
|
97
|
+
SUI_TESTNET = 'sui_testnet',
|
|
98
|
+
SUI_DEVNET = 'sui_devnet',
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export enum SolanaChainId {
|
|
102
|
+
SOLANA_MAINNET = 'sol_mainnet',
|
|
103
|
+
SOLANA_DEVNET = 'sol_devnet',
|
|
104
|
+
SOLANA_TESTNET = 'sol_testnet',
|
|
105
|
+
SOLANA_PYTH = 'sol_pyth',
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export type ChainId = EthChainId | AptosChainId | SuiChainId | SolanaChainId
|
|
109
|
+
export const ChainId = {
|
|
110
|
+
...EthChainId,
|
|
111
|
+
...AptosChainId,
|
|
112
|
+
...SuiChainId,
|
|
113
|
+
...SolanaChainId,
|
|
97
114
|
}
|
|
98
115
|
|
|
99
116
|
export const CHAIN_MAP: Record<string, string> = {}
|
|
100
117
|
|
|
101
|
-
for (const [key, value] of Object.entries(
|
|
102
|
-
if (value ===
|
|
118
|
+
for (const [key, value] of Object.entries(ChainId)) {
|
|
119
|
+
if (value === ChainId.POLYGON_ZKEVM) {
|
|
103
120
|
CHAIN_MAP[value] = 'Polygon zkEVM'
|
|
104
|
-
} else if (value ===
|
|
121
|
+
} else if (value === ChainId.ZKSYNC_ERA) {
|
|
105
122
|
CHAIN_MAP[value] = 'zkSync Era'
|
|
106
123
|
} else {
|
|
107
124
|
const parts = key.split('_')
|
package/src/commands/run-add.ts
CHANGED
|
@@ -8,10 +8,15 @@ import { codegen } from './build.js'
|
|
|
8
8
|
import * as process from 'process'
|
|
9
9
|
import yaml from 'yaml'
|
|
10
10
|
import { getABIFilePath, getABI, writeABIFile, ETH_API_URL_MAP } from '../abi.js'
|
|
11
|
-
import {
|
|
11
|
+
import { AptosChainId, ChainId, getChainName, SuiChainId } from '../chain.js'
|
|
12
12
|
|
|
13
13
|
export async function runAdd(argv: string[]) {
|
|
14
|
-
const supportedChain: string[] = [
|
|
14
|
+
const supportedChain: string[] = [
|
|
15
|
+
AptosChainId.APTOS_MAINNET,
|
|
16
|
+
AptosChainId.APTOS_TESTNET,
|
|
17
|
+
SuiChainId.SUI_TESTNET,
|
|
18
|
+
SuiChainId.SUI_MAINNET,
|
|
19
|
+
]
|
|
15
20
|
supportedChain.push(...Object.keys(ETH_API_URL_MAP))
|
|
16
21
|
const supprtedChainMessage = [
|
|
17
22
|
'',
|
|
@@ -63,7 +68,7 @@ export async function runAdd(argv: string[]) {
|
|
|
63
68
|
if (options.help || !options.address) {
|
|
64
69
|
console.log(usage)
|
|
65
70
|
} else {
|
|
66
|
-
const chain
|
|
71
|
+
const chain = options['chain'].toLowerCase() as ChainId
|
|
67
72
|
const address: string = options.address
|
|
68
73
|
if (!address.startsWith('0x')) {
|
|
69
74
|
console.error(chalk.red('Address must start with 0x'))
|
package/src/config.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { ChainId } from './chain.js'
|
|
2
|
+
|
|
1
3
|
const HostMap: { [host: string]: string } = {
|
|
2
4
|
local: 'http://localhost:10000',
|
|
3
5
|
test: 'https://test.sentio.xyz',
|
|
@@ -7,7 +9,7 @@ const HostMap: { [host: string]: string } = {
|
|
|
7
9
|
|
|
8
10
|
export interface YamlContractConfig {
|
|
9
11
|
address: string
|
|
10
|
-
chain:
|
|
12
|
+
chain: ChainId
|
|
11
13
|
name: string
|
|
12
14
|
}
|
|
13
15
|
|