@1inch/solidity-utils 3.5.5 → 3.5.6
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.
|
@@ -10,15 +10,16 @@ export declare function getNetwork(): string;
|
|
|
10
10
|
export declare class Networks {
|
|
11
11
|
networks: NetworksUserConfig;
|
|
12
12
|
etherscan: Etherscan;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
_parseRpcEnv(envRpc: string): {
|
|
14
|
+
url: string;
|
|
15
|
+
authKeyHttpHeader?: string;
|
|
16
|
+
};
|
|
17
|
+
constructor(useHardhat?: boolean, forkingNetworkName?: string, saveHardhatDeployments?: boolean);
|
|
18
|
+
register(name: string, chainId: number, rpc?: string, privateKey?: string, etherscanNetworkName?: string, etherscanKey?: string, hardfork?: string): void;
|
|
16
19
|
registerCustom(name: string, chainId: number, url?: string, privateKey?: string, etherscanKey?: string, apiURL?: string, browserURL?: string, hardfork?: string): void;
|
|
17
|
-
registerZksync(): void;
|
|
20
|
+
registerZksync(name: string, chainId: number, rpc: string, ethNetwork: string, privateKey?: string, verifyUrl?: string, hardfork?: string): void;
|
|
18
21
|
registerAll(): {
|
|
19
22
|
networks: NetworksUserConfig;
|
|
20
23
|
etherscan: Etherscan;
|
|
21
24
|
};
|
|
22
|
-
unregister(name: string): void;
|
|
23
|
-
unregisterBatch(names: string[]): void;
|
|
24
25
|
}
|
|
@@ -9,13 +9,17 @@ function getNetwork() {
|
|
|
9
9
|
}
|
|
10
10
|
exports.getNetwork = getNetwork;
|
|
11
11
|
class Networks {
|
|
12
|
-
|
|
12
|
+
_parseRpcEnv(envRpc) {
|
|
13
|
+
const [url, authKeyHttpHeader, overflow] = envRpc.split('|');
|
|
14
|
+
if (overflow || url === '') {
|
|
15
|
+
throw new Error(`Invalid RPC PARAM: ${envRpc}. It should be in the format: <RPC_URL> or <RPC_URL>|<AUTH_KEY_HTTP_HEADER>`);
|
|
16
|
+
}
|
|
17
|
+
return { url, authKeyHttpHeader };
|
|
18
|
+
}
|
|
19
|
+
constructor(useHardhat = true, forkingNetworkName, saveHardhatDeployments = false) {
|
|
13
20
|
this.networks = {};
|
|
14
21
|
this.etherscan = { apiKey: {}, customChains: [] };
|
|
15
22
|
dotenv_1.default.config();
|
|
16
|
-
this.updateHardhatNetwork(useHardhat, forkingNetworkName, needAuthKeyHttpHeader, saveHardhatDeployments);
|
|
17
|
-
}
|
|
18
|
-
updateHardhatNetwork(useHardhat, forkingNetworkName, needAuthKeyHttpHeader = false, saveHardhatDeployments = false) {
|
|
19
23
|
if (useHardhat || forkingNetworkName) {
|
|
20
24
|
this.networks.hardhat = {
|
|
21
25
|
chainId: Number(process.env.FORK_CHAIN_ID) || 31337,
|
|
@@ -25,18 +29,19 @@ class Networks {
|
|
|
25
29
|
};
|
|
26
30
|
}
|
|
27
31
|
if (forkingNetworkName) {
|
|
32
|
+
const { url, authKeyHttpHeader } = this._parseRpcEnv(process.env[`${forkingNetworkName.toUpperCase()}_RPC_URL`] || '');
|
|
28
33
|
this.networks.hardhat.forking = {
|
|
29
|
-
url
|
|
30
|
-
httpHeaders:
|
|
31
|
-
? { 'auth-key': process.env.RPC_AUTH_HEADER || '' }
|
|
32
|
-
: undefined,
|
|
34
|
+
url,
|
|
35
|
+
httpHeaders: authKeyHttpHeader ? { 'auth-key': authKeyHttpHeader } : undefined,
|
|
33
36
|
};
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
|
-
register(name, chainId,
|
|
37
|
-
if (
|
|
39
|
+
register(name, chainId, rpc, privateKey, etherscanNetworkName, etherscanKey, hardfork = 'paris') {
|
|
40
|
+
if (rpc && privateKey && etherscanNetworkName && etherscanKey) {
|
|
41
|
+
const { url, authKeyHttpHeader } = this._parseRpcEnv(rpc);
|
|
38
42
|
this.networks[name] = {
|
|
39
43
|
url,
|
|
44
|
+
httpHeaders: authKeyHttpHeader ? { 'auth-key': authKeyHttpHeader } : undefined,
|
|
40
45
|
chainId,
|
|
41
46
|
accounts: [privateKey],
|
|
42
47
|
hardfork,
|
|
@@ -50,70 +55,50 @@ class Networks {
|
|
|
50
55
|
}
|
|
51
56
|
registerCustom(name, chainId, url, privateKey, etherscanKey, apiURL = '', browserURL = '', hardfork = 'paris') {
|
|
52
57
|
if (url && privateKey && etherscanKey) {
|
|
53
|
-
this.register(name, chainId,
|
|
58
|
+
this.register(name, chainId, url, privateKey, name, etherscanKey, hardfork);
|
|
54
59
|
this.etherscan.customChains.push({ network: name, chainId, urls: { apiURL, browserURL } });
|
|
55
60
|
}
|
|
56
61
|
}
|
|
57
|
-
registerZksync() {
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
chainId: 324,
|
|
64
|
-
verifyURL: 'https://zksync2-mainnet-explorer.zksync.io/contract_verification',
|
|
65
|
-
accounts: [process.env.ZKSYNC_PRIVATE_KEY],
|
|
66
|
-
hardfork: 'paris',
|
|
67
|
-
};
|
|
68
|
-
this.networks.zksyncFork = {
|
|
69
|
-
url: process.env.ZKSYNC_RPC_URL || '', // you should use zksync fork node: https://github.com/matter-labs/era-test-node
|
|
70
|
-
ethNetwork: 'mainnet',
|
|
71
|
-
zksync: true,
|
|
72
|
-
chainId: 260,
|
|
73
|
-
hardfork: 'paris',
|
|
74
|
-
};
|
|
75
|
-
this.networks.zksyncLocal = {
|
|
76
|
-
url: process.env.ZKSYNC_RPC_URL || 'http://localhost:3050',
|
|
77
|
-
ethNetwork: process.env.ZKSYNC_ETH_NETWORK || 'http://localhost:8545',
|
|
78
|
-
zksync: true,
|
|
79
|
-
chainId: 270,
|
|
80
|
-
hardfork: 'paris',
|
|
81
|
-
};
|
|
82
|
-
this.networks.zksyncTest = {
|
|
83
|
-
url: process.env.ZKSYNC_RPC_URL || 'https://testnet.era.zksync.dev',
|
|
84
|
-
ethNetwork: 'goerli',
|
|
62
|
+
registerZksync(name, chainId, rpc, ethNetwork, privateKey, verifyUrl, hardfork = 'paris') {
|
|
63
|
+
if (privateKey) {
|
|
64
|
+
const { url, authKeyHttpHeader } = this._parseRpcEnv(rpc);
|
|
65
|
+
this.networks[name] = {
|
|
66
|
+
url,
|
|
67
|
+
httpHeaders: authKeyHttpHeader ? { 'auth-key': authKeyHttpHeader } : undefined,
|
|
85
68
|
zksync: true,
|
|
86
|
-
chainId
|
|
87
|
-
|
|
69
|
+
chainId,
|
|
70
|
+
accounts: [privateKey],
|
|
71
|
+
hardfork,
|
|
72
|
+
verifyUrl,
|
|
73
|
+
ethNetwork,
|
|
88
74
|
};
|
|
89
|
-
console.log(
|
|
75
|
+
console.log(`Network '${name}' registered`);
|
|
90
76
|
}
|
|
91
77
|
else {
|
|
92
|
-
console.log(
|
|
78
|
+
console.log(`Network '${name}' not registered`);
|
|
93
79
|
}
|
|
94
80
|
}
|
|
95
81
|
registerAll() {
|
|
96
|
-
|
|
97
|
-
this.register('
|
|
98
|
-
this.register('
|
|
99
|
-
this.register('
|
|
100
|
-
this.register('
|
|
101
|
-
this.register('
|
|
102
|
-
this.register('
|
|
103
|
-
this.register('
|
|
104
|
-
this.register('
|
|
105
|
-
this.register('
|
|
106
|
-
this.register('
|
|
107
|
-
this.
|
|
108
|
-
this.
|
|
82
|
+
const privateKey = process.env.PRIVATE_KEY;
|
|
83
|
+
this.register('mainnet', 1, process.env.MAINNET_RPC_URL, process.env.MAINNET_PRIVATE_KEY || privateKey, 'mainnet', process.env.MAINNET_ETHERSCAN_KEY, 'shanghai');
|
|
84
|
+
this.register('bsc', 56, process.env.BSC_RPC_URL, process.env.BSC_PRIVATE_KEY || privateKey, 'bsc', process.env.BSC_ETHERSCAN_KEY);
|
|
85
|
+
this.register('kovan', 42, process.env.KOVAN_RPC_URL, process.env.KOVAN_PRIVATE_KEY || privateKey, 'kovan', process.env.KOVAN_ETHERSCAN_KEY);
|
|
86
|
+
this.register('optimistic', 10, process.env.OPTIMISTIC_RPC_URL, process.env.OPTIMISTIC_PRIVATE_KEY || privateKey, 'optimisticEthereum', process.env.OPTIMISTIC_ETHERSCAN_KEY);
|
|
87
|
+
this.register('matic', 137, process.env.MATIC_RPC_URL, process.env.MATIC_PRIVATE_KEY || privateKey, 'polygon', process.env.MATIC_ETHERSCAN_KEY);
|
|
88
|
+
this.register('arbitrum', 42161, process.env.ARBITRUM_RPC_URL, process.env.ARBITRUM_PRIVATE_KEY || privateKey, 'arbitrumOne', process.env.ARBITRUM_ETHERSCAN_KEY);
|
|
89
|
+
this.register('xdai', 100, process.env.XDAI_RPC_URL, process.env.XDAI_PRIVATE_KEY || privateKey, 'xdai', process.env.XDAI_ETHERSCAN_KEY);
|
|
90
|
+
this.register('avax', 43114, process.env.AVAX_RPC_URL, process.env.AVAX_PRIVATE_KEY || privateKey, 'avalanche', process.env.AVAX_ETHERSCAN_KEY);
|
|
91
|
+
this.register('fantom', 250, process.env.FANTOM_RPC_URL, process.env.FANTOM_PRIVATE_KEY || privateKey, 'opera', process.env.FANTOM_ETHERSCAN_KEY);
|
|
92
|
+
this.register('aurora', 1313161554, process.env.AURORA_RPC_URL, process.env.AURORA_PRIVATE_KEY || privateKey, 'aurora', process.env.AURORA_ETHERSCAN_KEY);
|
|
93
|
+
this.register('base', 8453, process.env.BASE_RPC_URL, process.env.BASE_PRIVATE_KEY || privateKey, 'base', process.env.BASE_ETHERSCAN_KEY);
|
|
94
|
+
this.registerCustom('klaytn', 8217, process.env.KLAYTN_RPC_URL, process.env.KLAYTN_PRIVATE_KEY || privateKey, process.env.KLAYTN_ETHERSCAN_KEY, 'https://scope.klaytn.com/', 'https://scope.klaytn.com/'); // eslint-disable-line max-len
|
|
95
|
+
this.registerZksync('zksync', 324, process.env.ZKSYNC_RPC_URL || 'https://mainnet.era.zksync.io', 'mainnet', process.env.ZKSYNC_PRIVATE_KEY || privateKey, process.env.ZKSYNC_VERIFY_URL || 'https://zksync2-mainnet-explorer.zksync.io/contract_verification'); // eslint-disable-line max-len
|
|
96
|
+
// For 'zksyncFork' network you should use zksync fork node: https://github.com/matter-labs/era-test-node
|
|
97
|
+
this.registerZksync('zksyncFork', 260, process.env.ZKSYNC_FORK_RPC_URL || '', 'mainnet', process.env.ZKSYNC_FORK_PRIVATE_KEY || privateKey);
|
|
98
|
+
this.registerZksync('zksyncLocal', 270, process.env.ZKSYNC_LOCAL_RPC_URL || 'http://localhost:3050', process.env.ZKSYNC_LOCAL_ETH_NETWORK || 'http://localhost:8545', process.env.ZKSYNC_PRIVATE_KEY || privateKey); // eslint-disable-line max-len
|
|
99
|
+
this.registerZksync('zksyncTest', 280, process.env.ZKSYNC_TEST_RPC_URL || 'https://testnet.era.zksync.dev', 'goerli', process.env.ZKSYNC_TEST_PRIVATE_KEY || privateKey, process.env.ZKSYNC_TEST_VERIFY_URL); // eslint-disable-line max-len
|
|
109
100
|
return { networks: this.networks, etherscan: this.etherscan };
|
|
110
101
|
}
|
|
111
|
-
unregister(name) {
|
|
112
|
-
delete this.networks[name];
|
|
113
|
-
}
|
|
114
|
-
unregisterBatch(names) {
|
|
115
|
-
names.forEach((name) => this.unregister(name));
|
|
116
|
-
}
|
|
117
102
|
}
|
|
118
103
|
exports.Networks = Networks;
|
|
119
104
|
//# sourceMappingURL=networks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networks.js","sourceRoot":"","sources":["../../hardhat-setup/networks.ts"],"names":[],"mappings":";;;;AAAA,4DAA4B;AAM5B,SAAgB,UAAU;IACtB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC;IACvE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAHD,gCAGC;AAED,MAAa,QAAQ;IAIjB,YAAY,
|
|
1
|
+
{"version":3,"file":"networks.js","sourceRoot":"","sources":["../../hardhat-setup/networks.ts"],"names":[],"mappings":"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"}
|