1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.getNetwork = void 0;
|
4 | var logger_1 = require("@ethersproject/logger");
|
5 | var _version_1 = require("./_version");
|
6 | var logger = new logger_1.Logger(_version_1.version);
|
7 | ;
|
8 | function isRenetworkable(value) {
|
9 | return (value && typeof (value.renetwork) === "function");
|
10 | }
|
11 | function ethDefaultProvider(network) {
|
12 | var func = function (providers, options) {
|
13 | if (options == null) {
|
14 | options = {};
|
15 | }
|
16 | var providerList = [];
|
17 | if (providers.InfuraProvider && options.infura !== "-") {
|
18 | try {
|
19 | providerList.push(new providers.InfuraProvider(network, options.infura));
|
20 | }
|
21 | catch (error) { }
|
22 | }
|
23 | if (providers.EtherscanProvider && options.etherscan !== "-") {
|
24 | try {
|
25 | providerList.push(new providers.EtherscanProvider(network, options.etherscan));
|
26 | }
|
27 | catch (error) { }
|
28 | }
|
29 | if (providers.AlchemyProvider && options.alchemy !== "-") {
|
30 | try {
|
31 | providerList.push(new providers.AlchemyProvider(network, options.alchemy));
|
32 | }
|
33 | catch (error) { }
|
34 | }
|
35 | if (providers.PocketProvider && options.pocket !== "-") {
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | var skip = ["goerli", "ropsten", "rinkeby"];
|
41 | try {
|
42 | var provider = new providers.PocketProvider(network, options.pocket);
|
43 | if (provider.network && skip.indexOf(provider.network.name) === -1) {
|
44 | providerList.push(provider);
|
45 | }
|
46 | }
|
47 | catch (error) { }
|
48 | }
|
49 | if (providers.CloudflareProvider && options.cloudflare !== "-") {
|
50 | try {
|
51 | providerList.push(new providers.CloudflareProvider(network));
|
52 | }
|
53 | catch (error) { }
|
54 | }
|
55 | if (providers.AnkrProvider && options.ankr !== "-") {
|
56 | try {
|
57 | providerList.push(new providers.AnkrProvider(network, options.ankr));
|
58 | }
|
59 | catch (error) { }
|
60 | }
|
61 | if (providerList.length === 0) {
|
62 | return null;
|
63 | }
|
64 | if (providers.FallbackProvider) {
|
65 | var quorum = 1;
|
66 | if (options.quorum != null) {
|
67 | quorum = options.quorum;
|
68 | }
|
69 | else if (network === "homestead") {
|
70 | quorum = 2;
|
71 | }
|
72 | return new providers.FallbackProvider(providerList, quorum);
|
73 | }
|
74 | return providerList[0];
|
75 | };
|
76 | func.renetwork = function (network) {
|
77 | return ethDefaultProvider(network);
|
78 | };
|
79 | return func;
|
80 | }
|
81 | function etcDefaultProvider(url, network) {
|
82 | var func = function (providers, options) {
|
83 | if (providers.JsonRpcProvider) {
|
84 | return new providers.JsonRpcProvider(url, network);
|
85 | }
|
86 | return null;
|
87 | };
|
88 | func.renetwork = function (network) {
|
89 | return etcDefaultProvider(url, network);
|
90 | };
|
91 | return func;
|
92 | }
|
93 | var homestead = {
|
94 | chainId: 1,
|
95 | ensAddress: "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
|
96 | name: "homestead",
|
97 | _defaultProvider: ethDefaultProvider("homestead")
|
98 | };
|
99 | var ropsten = {
|
100 | chainId: 3,
|
101 | ensAddress: "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
|
102 | name: "ropsten",
|
103 | _defaultProvider: ethDefaultProvider("ropsten")
|
104 | };
|
105 | var classicMordor = {
|
106 | chainId: 63,
|
107 | name: "classicMordor",
|
108 | _defaultProvider: etcDefaultProvider("https://www.ethercluster.com/mordor", "classicMordor")
|
109 | };
|
110 |
|
111 | var networks = {
|
112 | unspecified: { chainId: 0, name: "unspecified" },
|
113 | homestead: homestead,
|
114 | mainnet: homestead,
|
115 | morden: { chainId: 2, name: "morden" },
|
116 | ropsten: ropsten,
|
117 | testnet: ropsten,
|
118 | rinkeby: {
|
119 | chainId: 4,
|
120 | ensAddress: "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
|
121 | name: "rinkeby",
|
122 | _defaultProvider: ethDefaultProvider("rinkeby")
|
123 | },
|
124 | kovan: {
|
125 | chainId: 42,
|
126 | name: "kovan",
|
127 | _defaultProvider: ethDefaultProvider("kovan")
|
128 | },
|
129 | goerli: {
|
130 | chainId: 5,
|
131 | ensAddress: "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
|
132 | name: "goerli",
|
133 | _defaultProvider: ethDefaultProvider("goerli")
|
134 | },
|
135 | kintsugi: { chainId: 1337702, name: "kintsugi" },
|
136 |
|
137 | classic: {
|
138 | chainId: 61,
|
139 | name: "classic",
|
140 | _defaultProvider: etcDefaultProvider("https:/\/www.ethercluster.com/etc", "classic")
|
141 | },
|
142 | classicMorden: { chainId: 62, name: "classicMorden" },
|
143 | classicMordor: classicMordor,
|
144 | classicTestnet: classicMordor,
|
145 | classicKotti: {
|
146 | chainId: 6,
|
147 | name: "classicKotti",
|
148 | _defaultProvider: etcDefaultProvider("https:/\/www.ethercluster.com/kotti", "classicKotti")
|
149 | },
|
150 | xdai: { chainId: 100, name: "xdai" },
|
151 | matic: { chainId: 137, name: "matic" },
|
152 | maticmum: { chainId: 80001, name: "maticmum" },
|
153 | optimism: { chainId: 10, name: "optimism" },
|
154 | "optimism-kovan": { chainId: 69, name: "optimism-kovan" },
|
155 | "optimism-goerli": { chainId: 420, name: "optimism-goerli" },
|
156 | arbitrum: { chainId: 42161, name: "arbitrum" },
|
157 | "arbitrum-rinkeby": { chainId: 421611, name: "arbitrum-rinkeby" },
|
158 | bnb: { chainId: 56, name: "bnb" },
|
159 | bnbt: { chainId: 97, name: "bnbt" },
|
160 | };
|
161 |
|
162 |
|
163 |
|
164 |
|
165 |
|
166 |
|
167 | function getNetwork(network) {
|
168 |
|
169 | if (network == null) {
|
170 | return null;
|
171 | }
|
172 | if (typeof (network) === "number") {
|
173 | for (var name_1 in networks) {
|
174 | var standard_1 = networks[name_1];
|
175 | if (standard_1.chainId === network) {
|
176 | return {
|
177 | name: standard_1.name,
|
178 | chainId: standard_1.chainId,
|
179 | ensAddress: (standard_1.ensAddress || null),
|
180 | _defaultProvider: (standard_1._defaultProvider || null)
|
181 | };
|
182 | }
|
183 | }
|
184 | return {
|
185 | chainId: network,
|
186 | name: "unknown"
|
187 | };
|
188 | }
|
189 | if (typeof (network) === "string") {
|
190 | var standard_2 = networks[network];
|
191 | if (standard_2 == null) {
|
192 | return null;
|
193 | }
|
194 | return {
|
195 | name: standard_2.name,
|
196 | chainId: standard_2.chainId,
|
197 | ensAddress: standard_2.ensAddress,
|
198 | _defaultProvider: (standard_2._defaultProvider || null)
|
199 | };
|
200 | }
|
201 | var standard = networks[network.name];
|
202 |
|
203 | if (!standard) {
|
204 | if (typeof (network.chainId) !== "number") {
|
205 | logger.throwArgumentError("invalid network chainId", "network", network);
|
206 | }
|
207 | return network;
|
208 | }
|
209 |
|
210 | if (network.chainId !== 0 && network.chainId !== standard.chainId) {
|
211 | logger.throwArgumentError("network chainId mismatch", "network", network);
|
212 | }
|
213 |
|
214 |
|
215 | var defaultProvider = network._defaultProvider || null;
|
216 | if (defaultProvider == null && standard._defaultProvider) {
|
217 | if (isRenetworkable(standard._defaultProvider)) {
|
218 | defaultProvider = standard._defaultProvider.renetwork(network);
|
219 | }
|
220 | else {
|
221 | defaultProvider = standard._defaultProvider;
|
222 | }
|
223 | }
|
224 |
|
225 | return {
|
226 | name: network.name,
|
227 | chainId: standard.chainId,
|
228 | ensAddress: (network.ensAddress || standard.ensAddress || null),
|
229 | _defaultProvider: defaultProvider
|
230 | };
|
231 | }
|
232 | exports.getNetwork = getNetwork;
|
233 |
|
\ | No newline at end of file |