This commit is contained in:
parent
f05c847398
commit
f7c813d313
@ -74,6 +74,12 @@ function ethDefaultProvider(network: string | Network): Renetworkable {
|
|||||||
} catch(error) { }
|
} 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 (providerList.length === 0) { return null; }
|
||||||
|
|
||||||
if (providers.FallbackProvider) {
|
if (providers.FallbackProvider) {
|
||||||
@ -172,6 +178,11 @@ const networks: { [name: string]: Network } = {
|
|||||||
_defaultProvider: ethDefaultProvider("sepolia")
|
_defaultProvider: ethDefaultProvider("sepolia")
|
||||||
},
|
},
|
||||||
|
|
||||||
|
holesky: {
|
||||||
|
chainId: 17000,
|
||||||
|
name: "holesky",
|
||||||
|
_defaultProvider: ethDefaultProvider("holesky")
|
||||||
|
},
|
||||||
|
|
||||||
// ETC (See: #351)
|
// ETC (See: #351)
|
||||||
classic: {
|
classic: {
|
||||||
@ -198,7 +209,11 @@ const networks: { [name: string]: Network } = {
|
|||||||
name: "matic",
|
name: "matic",
|
||||||
_defaultProvider: ethDefaultProvider("matic")
|
_defaultProvider: ethDefaultProvider("matic")
|
||||||
},
|
},
|
||||||
maticmum: { chainId: 80001, name: "maticmum" },
|
maticmum: {
|
||||||
|
chainId: 80001,
|
||||||
|
name: "maticmum",
|
||||||
|
_defaultProvider: ethDefaultProvider("maticmum")
|
||||||
|
},
|
||||||
|
|
||||||
optimism: {
|
optimism: {
|
||||||
chainId: 10,
|
chainId: 10,
|
||||||
@ -207,10 +222,12 @@ const networks: { [name: string]: Network } = {
|
|||||||
},
|
},
|
||||||
"optimism-kovan": { chainId: 69, name: "optimism-kovan" },
|
"optimism-kovan": { chainId: 69, name: "optimism-kovan" },
|
||||||
"optimism-goerli": { chainId: 420, name: "optimism-goerli" },
|
"optimism-goerli": { chainId: 420, name: "optimism-goerli" },
|
||||||
|
"optimism-sepolia": { chainId: 11155420, name: "optimism-sepolia" },
|
||||||
|
|
||||||
arbitrum: { chainId: 42161, name: "arbitrum" },
|
arbitrum: { chainId: 42161, name: "arbitrum" },
|
||||||
"arbitrum-rinkeby": { chainId: 421611, name: "arbitrum-rinkeby" },
|
"arbitrum-rinkeby": { chainId: 421611, name: "arbitrum-rinkeby" },
|
||||||
"arbitrum-goerli": { chainId: 421613, name: "arbitrum-goerli" },
|
"arbitrum-goerli": { chainId: 421613, name: "arbitrum-goerli" },
|
||||||
|
"arbitrum-sepolia": { chainId: 421614, name: "arbitrum-sepolia" },
|
||||||
|
|
||||||
bnb: { chainId: 56, name: "bnb" },
|
bnb: { chainId: 56, name: "bnb" },
|
||||||
bnbt: { chainId: 97, name: "bnbt" },
|
bnbt: { chainId: 97, name: "bnbt" },
|
||||||
|
@ -61,6 +61,9 @@ export class AlchemyProvider extends UrlJsonRpcProvider {
|
|||||||
case "goerli":
|
case "goerli":
|
||||||
host = "eth-goerli.g.alchemy.com/v2/";
|
host = "eth-goerli.g.alchemy.com/v2/";
|
||||||
break;
|
break;
|
||||||
|
case "sepolia":
|
||||||
|
host = "eth-sepolia.g.alchemy.com/v2/";
|
||||||
|
break;
|
||||||
case "matic":
|
case "matic":
|
||||||
host = "polygon-mainnet.g.alchemy.com/v2/";
|
host = "polygon-mainnet.g.alchemy.com/v2/";
|
||||||
break;
|
break;
|
||||||
@ -73,12 +76,18 @@ export class AlchemyProvider extends UrlJsonRpcProvider {
|
|||||||
case "arbitrum-goerli":
|
case "arbitrum-goerli":
|
||||||
host = "arb-goerli.g.alchemy.com/v2/";
|
host = "arb-goerli.g.alchemy.com/v2/";
|
||||||
break;
|
break;
|
||||||
|
case "arbitrum-sepolia":
|
||||||
|
host = "arb-sepolia.g.alchemy.com/v2/";
|
||||||
|
break;
|
||||||
case "optimism":
|
case "optimism":
|
||||||
host = "opt-mainnet.g.alchemy.com/v2/";
|
host = "opt-mainnet.g.alchemy.com/v2/";
|
||||||
break;
|
break;
|
||||||
case "optimism-goerli":
|
case "optimism-goerli":
|
||||||
host = "opt-goerli.g.alchemy.com/v2/"
|
host = "opt-goerli.g.alchemy.com/v2/"
|
||||||
break;
|
break;
|
||||||
|
case "optimism-sepolia":
|
||||||
|
host = "opt-sepolia.g.alchemy.com/v2/"
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
logger.throwArgumentError("unsupported network", "network", arguments[0]);
|
logger.throwArgumentError("unsupported network", "network", arguments[0]);
|
||||||
}
|
}
|
||||||
|
@ -23,9 +23,20 @@ function getHost(name: string): string {
|
|||||||
return "rpc.ankr.com/eth_rinkeby/";
|
return "rpc.ankr.com/eth_rinkeby/";
|
||||||
case "goerli":
|
case "goerli":
|
||||||
return "rpc.ankr.com/eth_goerli/";
|
return "rpc.ankr.com/eth_goerli/";
|
||||||
|
case "sepolia":
|
||||||
|
return "rpc.ankr.com/eth_sepolia/";
|
||||||
|
|
||||||
case "matic":
|
case "matic":
|
||||||
return "rpc.ankr.com/polygon/";
|
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":
|
case "arbitrum":
|
||||||
return "rpc.ankr.com/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 { JsonRpcBatchProvider } from "./json-rpc-batch-provider";
|
||||||
import { NodesmithProvider } from "./nodesmith-provider";
|
import { NodesmithProvider } from "./nodesmith-provider";
|
||||||
import { PocketProvider } from "./pocket-provider";
|
import { PocketProvider } from "./pocket-provider";
|
||||||
|
import { QuickNodeProvider } from "./quicknode-provider";
|
||||||
import { StaticJsonRpcProvider, UrlJsonRpcProvider } from "./url-json-rpc-provider";
|
import { StaticJsonRpcProvider, UrlJsonRpcProvider } from "./url-json-rpc-provider";
|
||||||
import { Web3Provider } from "./web3-provider";
|
import { Web3Provider } from "./web3-provider";
|
||||||
import { WebSocketProvider } from "./websocket-provider";
|
import { WebSocketProvider } from "./websocket-provider";
|
||||||
@ -84,6 +85,7 @@ function getDefaultProvider(network?: Networkish, options?: any): BaseProvider {
|
|||||||
JsonRpcProvider,
|
JsonRpcProvider,
|
||||||
NodesmithProvider,
|
NodesmithProvider,
|
||||||
PocketProvider,
|
PocketProvider,
|
||||||
|
QuickNodeProvider,
|
||||||
Web3Provider,
|
Web3Provider,
|
||||||
|
|
||||||
IpcProvider,
|
IpcProvider,
|
||||||
@ -119,6 +121,7 @@ export {
|
|||||||
JsonRpcBatchProvider,
|
JsonRpcBatchProvider,
|
||||||
NodesmithProvider,
|
NodesmithProvider,
|
||||||
PocketProvider,
|
PocketProvider,
|
||||||
|
QuickNodeProvider,
|
||||||
StaticJsonRpcProvider,
|
StaticJsonRpcProvider,
|
||||||
Web3Provider,
|
Web3Provider,
|
||||||
WebSocketProvider,
|
WebSocketProvider,
|
||||||
|
@ -105,12 +105,18 @@ export class InfuraProvider extends UrlJsonRpcProvider {
|
|||||||
case "optimism-goerli":
|
case "optimism-goerli":
|
||||||
host = "optimism-goerli.infura.io";
|
host = "optimism-goerli.infura.io";
|
||||||
break;
|
break;
|
||||||
|
case "optimism-sepolia":
|
||||||
|
host = "optimism-sepolia.infura.io";
|
||||||
|
break;
|
||||||
case "arbitrum":
|
case "arbitrum":
|
||||||
host = "arbitrum-mainnet.infura.io";
|
host = "arbitrum-mainnet.infura.io";
|
||||||
break;
|
break;
|
||||||
case "arbitrum-goerli":
|
case "arbitrum-goerli":
|
||||||
host = "arbitrum-goerli.infura.io";
|
host = "arbitrum-goerli.infura.io";
|
||||||
break;
|
break;
|
||||||
|
case "arbitrum-sepolia":
|
||||||
|
host = "arbitrum-sepolia.infura.io";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
logger.throwError("unsupported network", Logger.errors.INVALID_ARGUMENT, {
|
logger.throwError("unsupported network", Logger.errors.INVALID_ARGUMENT, {
|
||||||
argument: "network",
|
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