Is there a way to check name of current blockchain using ethers js For example
const provider = new ethers.providers.JsonRpcProvider(rpcUrl);
const chainInfo = await providers.getNetwork()
gives chain Id and network name but not the blockchain name as etherum or polygon etc
you can use detectNetwork
. You make request to RPC server, so the "name" property depends on the response of the RPC server. For example if you make request binance mainnet
const provider = new ethers.providers.JsonRpcProvider(
"https://bsc-dataseed.binance.org"
);
const a = provider.detectNetwork().then((x) => console.log(x));
you will get this:
{
"name": "bnb",
"chainId": 56,
"ensAddress": null,
"_defaultProvider": null
}
But if you make request to "avalance"
const provider = new ethers.providers.JsonRpcProvider(
"https://api.avax.network/ext/bc/C/rpc"
);
const a = provider.detectNetwork().then((x) => console.log(x));
you will get this:
{
"chainId": 43114,
"name": "unknown"
}
It really depends on how the RPC server response is configured. you can find rpc endpoints here
Or you can create a mapping for the most popular networks
const NETWORKS: { [k: string]: string } = {
1: "Ethereum Main Network",
5: "Goerli Test Network",
42: "Kovan Test Network",
56: "Binance Smart Chain",
1337: "Ganache",
};
once you get the chainId, you can return
NETWORKS[chainId]