Skip to content

Commit

Permalink
feat: introduce fallback transport and batch RPC requests
Browse files Browse the repository at this point in the history
  • Loading branch information
popzxc committed Nov 14, 2024
1 parent c2c7ba0 commit 23c0369
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 6 deletions.
12 changes: 9 additions & 3 deletions data/networks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,17 @@ import type { Chain } from "@wagmi/core/chains";

const portalRuntimeConfig = usePortalRuntimeConfig();

// We don't use Ankr token here, since the expectation is that public quota is enough to cover all the requests.
// We don't use RPC tokens here, since the expectation is that public quota is enough to cover all the requests.
// We provide several RPC URLs to deal with the case when one of them is down.
// The expectation is that "more reliable" RPCs are listed first.
export const l1Networks = {
mainnet: {
...mainnet,
name: "Ethereum",
network: "mainnet",
rpcUrls: {
default: {
http: ["https://rpc.ankr.com/eth/"],
http: ["https://rpc.ankr.com/eth/", "https://ethereum-rpc.publicnode.com", "https://cloudflare-eth.com"],
},
},
},
Expand All @@ -25,7 +27,11 @@ export const l1Networks = {
name: "Ethereum Sepolia Testnet",
rpcUrls: {
default: {
http: ["https://rpc.ankr.com/eth_sepolia/"],
http: [
"https://rpc.ankr.com/eth_sepolia/",
"https://ethereum-sepolia-rpc.publicnode.com",
"https://rpc.sepolia.org",
],
},
},
},
Expand Down
11 changes: 8 additions & 3 deletions data/wagmi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,17 @@ const getAllChains = () => {
return chains;
};

// Creates a fallback transport for a particular chain.
const chainTransports = (chain: Chain) => {
// We expect all the transports to support batch requests.
const httpTransports = chain.rpcUrls.default.http.map((e) => http(e, { batch: true }));
return fallback(httpTransports);
};

const chains = getAllChains();
export const wagmiConfig = defaultWagmiConfig({
chains: getAllChains() as any,
transports: Object.fromEntries(
chains.map((chain) => [chain.id, fallback(chain.rpcUrls.default.http.map((e) => http(e)))])
),
transports: Object.fromEntries(chains.map((chain) => [chain.id, chainTransports(chain)])),
projectId: portalRuntimeConfig.walletConnectProjectId,
metadata,
enableCoinbase: false,
Expand Down

0 comments on commit 23c0369

Please sign in to comment.