Skip to content

Commit f7c813d

Browse files
committed
Added modern networks, updated third-party backend URLs and added QuickNode (#3935, #4010).
1 parent f05c847 commit f7c813d

File tree

6 files changed

+132
-1
lines changed

6 files changed

+132
-1
lines changed

packages/networks/src.ts/index.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ function ethDefaultProvider(network: string | Network): Renetworkable {
7474
} catch(error) { }
7575
}
7676

77+
if (providers.QuickNodeProvider && options.quicknode !== "-") {
78+
try {
79+
providerList.push(new providers.QuickNodeProvider(network, options.quicknode));
80+
} catch(error) { }
81+
}
82+
7783
if (providerList.length === 0) { return null; }
7884

7985
if (providers.FallbackProvider) {
@@ -172,6 +178,11 @@ const networks: { [name: string]: Network } = {
172178
_defaultProvider: ethDefaultProvider("sepolia")
173179
},
174180

181+
holesky: {
182+
chainId: 17000,
183+
name: "holesky",
184+
_defaultProvider: ethDefaultProvider("holesky")
185+
},
175186

176187
// ETC (See: #351)
177188
classic: {
@@ -198,7 +209,11 @@ const networks: { [name: string]: Network } = {
198209
name: "matic",
199210
_defaultProvider: ethDefaultProvider("matic")
200211
},
201-
maticmum: { chainId: 80001, name: "maticmum" },
212+
maticmum: {
213+
chainId: 80001,
214+
name: "maticmum",
215+
_defaultProvider: ethDefaultProvider("maticmum")
216+
},
202217

203218
optimism: {
204219
chainId: 10,
@@ -207,10 +222,12 @@ const networks: { [name: string]: Network } = {
207222
},
208223
"optimism-kovan": { chainId: 69, name: "optimism-kovan" },
209224
"optimism-goerli": { chainId: 420, name: "optimism-goerli" },
225+
"optimism-sepolia": { chainId: 11155420, name: "optimism-sepolia" },
210226

211227
arbitrum: { chainId: 42161, name: "arbitrum" },
212228
"arbitrum-rinkeby": { chainId: 421611, name: "arbitrum-rinkeby" },
213229
"arbitrum-goerli": { chainId: 421613, name: "arbitrum-goerli" },
230+
"arbitrum-sepolia": { chainId: 421614, name: "arbitrum-sepolia" },
214231

215232
bnb: { chainId: 56, name: "bnb" },
216233
bnbt: { chainId: 97, name: "bnbt" },

packages/providers/src.ts/alchemy-provider.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ export class AlchemyProvider extends UrlJsonRpcProvider {
6161
case "goerli":
6262
host = "eth-goerli.g.alchemy.com/v2/";
6363
break;
64+
case "sepolia":
65+
host = "eth-sepolia.g.alchemy.com/v2/";
66+
break;
6467
case "matic":
6568
host = "polygon-mainnet.g.alchemy.com/v2/";
6669
break;
@@ -73,12 +76,18 @@ export class AlchemyProvider extends UrlJsonRpcProvider {
7376
case "arbitrum-goerli":
7477
host = "arb-goerli.g.alchemy.com/v2/";
7578
break;
79+
case "arbitrum-sepolia":
80+
host = "arb-sepolia.g.alchemy.com/v2/";
81+
break;
7682
case "optimism":
7783
host = "opt-mainnet.g.alchemy.com/v2/";
7884
break;
7985
case "optimism-goerli":
8086
host = "opt-goerli.g.alchemy.com/v2/"
8187
break;
88+
case "optimism-sepolia":
89+
host = "opt-sepolia.g.alchemy.com/v2/"
90+
break;
8291
default:
8392
logger.throwArgumentError("unsupported network", "network", arguments[0]);
8493
}

packages/providers/src.ts/ankr-provider.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,20 @@ function getHost(name: string): string {
2323
return "rpc.ankr.com/eth_rinkeby/";
2424
case "goerli":
2525
return "rpc.ankr.com/eth_goerli/";
26+
case "sepolia":
27+
return "rpc.ankr.com/eth_sepolia/";
2628

2729
case "matic":
2830
return "rpc.ankr.com/polygon/";
31+
case "maticmum":
32+
return "rpc.ankr.com/polygon_mumbai/";
33+
34+
case "optimism":
35+
return "rpc.ankr.com/optimism/";
36+
case "optimism-goerli":
37+
return "rpc.ankr.com/optimism_testnet/";
38+
case "optimism-sepolia":
39+
return "rpc.ankr.com/optimism_sepolia/";
2940

3041
case "arbitrum":
3142
return "rpc.ankr.com/arbitrum/";

packages/providers/src.ts/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import { JsonRpcProvider, JsonRpcSigner } from "./json-rpc-provider";
3030
import { JsonRpcBatchProvider } from "./json-rpc-batch-provider";
3131
import { NodesmithProvider } from "./nodesmith-provider";
3232
import { PocketProvider } from "./pocket-provider";
33+
import { QuickNodeProvider } from "./quicknode-provider";
3334
import { StaticJsonRpcProvider, UrlJsonRpcProvider } from "./url-json-rpc-provider";
3435
import { Web3Provider } from "./web3-provider";
3536
import { WebSocketProvider } from "./websocket-provider";
@@ -84,6 +85,7 @@ function getDefaultProvider(network?: Networkish, options?: any): BaseProvider {
8485
JsonRpcProvider,
8586
NodesmithProvider,
8687
PocketProvider,
88+
QuickNodeProvider,
8789
Web3Provider,
8890

8991
IpcProvider,
@@ -119,6 +121,7 @@ export {
119121
JsonRpcBatchProvider,
120122
NodesmithProvider,
121123
PocketProvider,
124+
QuickNodeProvider,
122125
StaticJsonRpcProvider,
123126
Web3Provider,
124127
WebSocketProvider,

packages/providers/src.ts/infura-provider.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,18 @@ export class InfuraProvider extends UrlJsonRpcProvider {
105105
case "optimism-goerli":
106106
host = "optimism-goerli.infura.io";
107107
break;
108+
case "optimism-sepolia":
109+
host = "optimism-sepolia.infura.io";
110+
break;
108111
case "arbitrum":
109112
host = "arbitrum-mainnet.infura.io";
110113
break;
111114
case "arbitrum-goerli":
112115
host = "arbitrum-goerli.infura.io";
113116
break;
117+
case "arbitrum-sepolia":
118+
host = "arbitrum-sepolia.infura.io";
119+
break;
114120
default:
115121
logger.throwError("unsupported network", Logger.errors.INVALID_ARGUMENT, {
116122
argument: "network",
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
"use strict";
2+
3+
import { Network } from "@ethersproject/networks";
4+
import { UrlJsonRpcProvider } from "./url-json-rpc-provider";
5+
6+
import { Logger } from "@ethersproject/logger";
7+
import { version } from "./_version";
8+
const logger = new Logger(version);
9+
10+
// Special API key provided by Quicknode for ethers.js
11+
const defaultApiKey = "919b412a057b5e9c9b6dce193c5a60242d6efadb";
12+
13+
export class QuickNodeProvider extends UrlJsonRpcProvider {
14+
15+
static getApiKey(apiKey: any): any {
16+
if (apiKey && typeof(apiKey) !== "string") {
17+
logger.throwArgumentError("invalid apiKey", "apiKey", apiKey);
18+
}
19+
return apiKey || defaultApiKey;
20+
}
21+
22+
static getUrl(network: Network, apiKey?: any): string {
23+
let host = null;
24+
switch (network.name) {
25+
case "homestead":
26+
host = "ethers.quiknode.pro";
27+
break;
28+
case "goerli":
29+
host = "ethers.ethereum-goerli.quiknode.pro";
30+
break;
31+
case "sepolia":
32+
host = "ethers.ethereum-sepolia.quiknode.pro";
33+
break;
34+
case "holesky":
35+
host = "ethers.ethereum-holesky.quiknode.pro";
36+
break;
37+
case "arbitrum":
38+
host = "ethers.arbitrum-mainnet.quiknode.pro";
39+
break;
40+
case "arbitrum-goerli":
41+
host = "ethers.arbitrum-goerli.quiknode.pro";
42+
break;
43+
case "arbitrum-sepolia":
44+
host = "ethers.arbitrum-sepolia.quiknode.pro";
45+
break;
46+
case "base":
47+
host = "ethers.base-mainnet.quiknode.pro";
48+
break;
49+
case "base-goerli":
50+
host = "ethers.base-goerli.quiknode.pro";
51+
break;
52+
case "base-spolia":
53+
host = "ethers.base-sepolia.quiknode.pro";
54+
break;
55+
case "bnb":
56+
host = "ethers.bsc.quiknode.pro";
57+
break;
58+
case "bnbt":
59+
host = "ethers.bsc-testnet.quiknode.pro";
60+
break;
61+
case "matic":
62+
host = "ethers.matic.quiknode.pro";
63+
break;
64+
case "maticmum":
65+
host = "ethers.matic-testnet.quiknode.pro";
66+
break;
67+
case "optimism":
68+
host = "ethers.optimism.quiknode.pro";
69+
break;
70+
case "optimism-goerli":
71+
host = "ethers.optimism-goerli.quiknode.pro";
72+
break;
73+
case "optimism-sepolia":
74+
host = "ethers.optimism-sepolia.quiknode.pro";
75+
break;
76+
case "xdai":
77+
host = "ethers.xdai.quiknode.pro";
78+
break;
79+
default:
80+
logger.throwArgumentError("unsupported network", "network", arguments[0]);
81+
}
82+
83+
return ("https:/" + "/" + host + "/" + apiKey);
84+
}
85+
}

0 commit comments

Comments
 (0)