UNPKG

8.21 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.getNetwork = void 0;
4var logger_1 = require("@ethersproject/logger");
5var _version_1 = require("./_version");
6var logger = new logger_1.Logger(_version_1.version);
7;
8function isRenetworkable(value) {
9 return (value && typeof (value.renetwork) === "function");
10}
11function 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 // These networks are currently faulty on Pocket as their
37 // network does not handle the Berlin hardfork, which is
38 // live on these ones.
39 // @TODO: This goes away once Pocket has upgraded their nodes
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}
81function 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}
93var homestead = {
94 chainId: 1,
95 ensAddress: "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
96 name: "homestead",
97 _defaultProvider: ethDefaultProvider("homestead")
98};
99var ropsten = {
100 chainId: 3,
101 ensAddress: "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
102 name: "ropsten",
103 _defaultProvider: ethDefaultProvider("ropsten")
104};
105var classicMordor = {
106 chainId: 63,
107 name: "classicMordor",
108 _defaultProvider: etcDefaultProvider("https://www.ethercluster.com/mordor", "classicMordor")
109};
110// See: https://chainlist.org
111var 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 // ETC (See: #351)
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 * getNetwork
163 *
164 * Converts a named common networks or chain ID (network ID) to a Network
165 * and verifies a network is a valid Network..
166 */
167function getNetwork(network) {
168 // No network (null)
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 // Not a standard network; check that it is a valid network in general
203 if (!standard) {
204 if (typeof (network.chainId) !== "number") {
205 logger.throwArgumentError("invalid network chainId", "network", network);
206 }
207 return network;
208 }
209 // Make sure the chainId matches the expected network chainId (or is 0; disable EIP-155)
210 if (network.chainId !== 0 && network.chainId !== standard.chainId) {
211 logger.throwArgumentError("network chainId mismatch", "network", network);
212 }
213 // @TODO: In the next major version add an attach function to a defaultProvider
214 // class and move the _defaultProvider internal to this file (extend Network)
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 // Standard Network (allow overriding the ENS address)
225 return {
226 name: network.name,
227 chainId: standard.chainId,
228 ensAddress: (network.ensAddress || standard.ensAddress || null),
229 _defaultProvider: defaultProvider
230 };
231}
232exports.getNetwork = getNetwork;
233//# sourceMappingURL=index.js.map
\No newline at end of file