This commit is contained in:
parent
f05c847398
commit
f7c813d313
@ -74,6 +74,12 @@ function ethDefaultProvider(network: string | Network): Renetworkable {
|
||||
} catch(error) { }
|
||||
}
|
||||
|
||||
if (providers.QuickNodeProvider && options.quicknode !== "-") {
|
||||
try {
|
||||
providerList.push(new providers.QuickNodeProvider(network, options.quicknode));
|
||||
} catch(error) { }
|
||||
}
|
||||
|
||||
if (providerList.length === 0) { return null; }
|
||||
|
||||
if (providers.FallbackProvider) {
|
||||
@ -172,6 +178,11 @@ const networks: { [name: string]: Network } = {
|
||||
_defaultProvider: ethDefaultProvider("sepolia")
|
||||
},
|
||||
|
||||
holesky: {
|
||||
chainId: 17000,
|
||||
name: "holesky",
|
||||
_defaultProvider: ethDefaultProvider("holesky")
|
||||
},
|
||||
|
||||
// ETC (See: #351)
|
||||
classic: {
|
||||
@ -198,7 +209,11 @@ const networks: { [name: string]: Network } = {
|
||||
name: "matic",
|
||||
_defaultProvider: ethDefaultProvider("matic")
|
||||
},
|
||||
maticmum: { chainId: 80001, name: "maticmum" },
|
||||
maticmum: {
|
||||
chainId: 80001,
|
||||
name: "maticmum",
|
||||
_defaultProvider: ethDefaultProvider("maticmum")
|
||||
},
|
||||
|
||||
optimism: {
|
||||
chainId: 10,
|
||||
@ -207,10 +222,12 @@ const networks: { [name: string]: Network } = {
|
||||
},
|
||||
"optimism-kovan": { chainId: 69, name: "optimism-kovan" },
|
||||
"optimism-goerli": { chainId: 420, name: "optimism-goerli" },
|
||||
"optimism-sepolia": { chainId: 11155420, name: "optimism-sepolia" },
|
||||
|
||||
arbitrum: { chainId: 42161, name: "arbitrum" },
|
||||
"arbitrum-rinkeby": { chainId: 421611, name: "arbitrum-rinkeby" },
|
||||
"arbitrum-goerli": { chainId: 421613, name: "arbitrum-goerli" },
|
||||
"arbitrum-sepolia": { chainId: 421614, name: "arbitrum-sepolia" },
|
||||
|
||||
bnb: { chainId: 56, name: "bnb" },
|
||||
bnbt: { chainId: 97, name: "bnbt" },
|
||||
|
@ -61,6 +61,9 @@ export class AlchemyProvider extends UrlJsonRpcProvider {
|
||||
case "goerli":
|
||||
host = "eth-goerli.g.alchemy.com/v2/";
|
||||
break;
|
||||
case "sepolia":
|
||||
host = "eth-sepolia.g.alchemy.com/v2/";
|
||||
break;
|
||||
case "matic":
|
||||
host = "polygon-mainnet.g.alchemy.com/v2/";
|
||||
break;
|
||||
@ -73,12 +76,18 @@ export class AlchemyProvider extends UrlJsonRpcProvider {
|
||||
case "arbitrum-goerli":
|
||||
host = "arb-goerli.g.alchemy.com/v2/";
|
||||
break;
|
||||
case "arbitrum-sepolia":
|
||||
host = "arb-sepolia.g.alchemy.com/v2/";
|
||||
break;
|
||||
case "optimism":
|
||||
host = "opt-mainnet.g.alchemy.com/v2/";
|
||||
break;
|
||||
case "optimism-goerli":
|
||||
host = "opt-goerli.g.alchemy.com/v2/"
|
||||
break;
|
||||
case "optimism-sepolia":
|
||||
host = "opt-sepolia.g.alchemy.com/v2/"
|
||||
break;
|
||||
default:
|
||||
logger.throwArgumentError("unsupported network", "network", arguments[0]);
|
||||
}
|
||||
|
@ -23,9 +23,20 @@ function getHost(name: string): string {
|
||||
return "rpc.ankr.com/eth_rinkeby/";
|
||||
case "goerli":
|
||||
return "rpc.ankr.com/eth_goerli/";
|
||||
case "sepolia":
|
||||
return "rpc.ankr.com/eth_sepolia/";
|
||||
|
||||
case "matic":
|
||||
return "rpc.ankr.com/polygon/";
|
||||
case "maticmum":
|
||||
return "rpc.ankr.com/polygon_mumbai/";
|
||||
|
||||
case "optimism":
|
||||
return "rpc.ankr.com/optimism/";
|
||||
case "optimism-goerli":
|
||||
return "rpc.ankr.com/optimism_testnet/";
|
||||
case "optimism-sepolia":
|
||||
return "rpc.ankr.com/optimism_sepolia/";
|
||||
|
||||
case "arbitrum":
|
||||
return "rpc.ankr.com/arbitrum/";
|
||||
|
@ -30,6 +30,7 @@ import { JsonRpcProvider, JsonRpcSigner } from "./json-rpc-provider";
|
||||
import { JsonRpcBatchProvider } from "./json-rpc-batch-provider";
|
||||
import { NodesmithProvider } from "./nodesmith-provider";
|
||||
import { PocketProvider } from "./pocket-provider";
|
||||
import { QuickNodeProvider } from "./quicknode-provider";
|
||||
import { StaticJsonRpcProvider, UrlJsonRpcProvider } from "./url-json-rpc-provider";
|
||||
import { Web3Provider } from "./web3-provider";
|
||||
import { WebSocketProvider } from "./websocket-provider";
|
||||
@ -84,6 +85,7 @@ function getDefaultProvider(network?: Networkish, options?: any): BaseProvider {
|
||||
JsonRpcProvider,
|
||||
NodesmithProvider,
|
||||
PocketProvider,
|
||||
QuickNodeProvider,
|
||||
Web3Provider,
|
||||
|
||||
IpcProvider,
|
||||
@ -119,6 +121,7 @@ export {
|
||||
JsonRpcBatchProvider,
|
||||
NodesmithProvider,
|
||||
PocketProvider,
|
||||
QuickNodeProvider,
|
||||
StaticJsonRpcProvider,
|
||||
Web3Provider,
|
||||
WebSocketProvider,
|
||||
|
@ -105,12 +105,18 @@ export class InfuraProvider extends UrlJsonRpcProvider {
|
||||
case "optimism-goerli":
|
||||
host = "optimism-goerli.infura.io";
|
||||
break;
|
||||
case "optimism-sepolia":
|
||||
host = "optimism-sepolia.infura.io";
|
||||
break;
|
||||
case "arbitrum":
|
||||
host = "arbitrum-mainnet.infura.io";
|
||||
break;
|
||||
case "arbitrum-goerli":
|
||||
host = "arbitrum-goerli.infura.io";
|
||||
break;
|
||||
case "arbitrum-sepolia":
|
||||
host = "arbitrum-sepolia.infura.io";
|
||||
break;
|
||||
default:
|
||||
logger.throwError("unsupported network", Logger.errors.INVALID_ARGUMENT, {
|
||||
argument: "network",
|
||||
|
85
packages/providers/src.ts/quicknode-provider.ts
Normal file
85
packages/providers/src.ts/quicknode-provider.ts
Normal file
@ -0,0 +1,85 @@
|
||||
"use strict";
|
||||
|
||||
import { Network } from "@ethersproject/networks";
|
||||
import { UrlJsonRpcProvider } from "./url-json-rpc-provider";
|
||||
|
||||
import { Logger } from "@ethersproject/logger";
|
||||
import { version } from "./_version";
|
||||
const logger = new Logger(version);
|
||||
|
||||
// Special API key provided by Quicknode for ethers.js
|
||||
const defaultApiKey = "919b412a057b5e9c9b6dce193c5a60242d6efadb";
|
||||
|
||||
export class QuickNodeProvider extends UrlJsonRpcProvider {
|
||||
|
||||
static getApiKey(apiKey: any): any {
|
||||
if (apiKey && typeof(apiKey) !== "string") {
|
||||
logger.throwArgumentError("invalid apiKey", "apiKey", apiKey);
|
||||
}
|
||||
return apiKey || defaultApiKey;
|
||||
}
|
||||
|
||||
static getUrl(network: Network, apiKey?: any): string {
|
||||
let host = null;
|
||||
switch (network.name) {
|
||||
case "homestead":
|
||||
host = "ethers.quiknode.pro";
|
||||
break;
|
||||
case "goerli":
|
||||
host = "ethers.ethereum-goerli.quiknode.pro";
|
||||
break;
|
||||
case "sepolia":
|
||||
host = "ethers.ethereum-sepolia.quiknode.pro";
|
||||
break;
|
||||
case "holesky":
|
||||
host = "ethers.ethereum-holesky.quiknode.pro";
|
||||
break;
|
||||
case "arbitrum":
|
||||
host = "ethers.arbitrum-mainnet.quiknode.pro";
|
||||
break;
|
||||
case "arbitrum-goerli":
|
||||
host = "ethers.arbitrum-goerli.quiknode.pro";
|
||||
break;
|
||||
case "arbitrum-sepolia":
|
||||
host = "ethers.arbitrum-sepolia.quiknode.pro";
|
||||
break;
|
||||
case "base":
|
||||
host = "ethers.base-mainnet.quiknode.pro";
|
||||
break;
|
||||
case "base-goerli":
|
||||
host = "ethers.base-goerli.quiknode.pro";
|
||||
break;
|
||||
case "base-spolia":
|
||||
host = "ethers.base-sepolia.quiknode.pro";
|
||||
break;
|
||||
case "bnb":
|
||||
host = "ethers.bsc.quiknode.pro";
|
||||
break;
|
||||
case "bnbt":
|
||||
host = "ethers.bsc-testnet.quiknode.pro";
|
||||
break;
|
||||
case "matic":
|
||||
host = "ethers.matic.quiknode.pro";
|
||||
break;
|
||||
case "maticmum":
|
||||
host = "ethers.matic-testnet.quiknode.pro";
|
||||
break;
|
||||
case "optimism":
|
||||
host = "ethers.optimism.quiknode.pro";
|
||||
break;
|
||||
case "optimism-goerli":
|
||||
host = "ethers.optimism-goerli.quiknode.pro";
|
||||
break;
|
||||
case "optimism-sepolia":
|
||||
host = "ethers.optimism-sepolia.quiknode.pro";
|
||||
break;
|
||||
case "xdai":
|
||||
host = "ethers.xdai.quiknode.pro";
|
||||
break;
|
||||
default:
|
||||
logger.throwArgumentError("unsupported network", "network", arguments[0]);
|
||||
}
|
||||
|
||||
return ("https:/" + "/" + host + "/" + apiKey);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user