Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

We don't support the chainId you provided: eip155:1338 #875

Open
aqeelVaival opened this issue Aug 9, 2023 · 4 comments
Open

We don't support the chainId you provided: eip155:1338 #875

aqeelVaival opened this issue Aug 9, 2023 · 4 comments

Comments

@aqeelVaival
Copy link

image
Custom chain with id 1338 for testnet & 1339 for mainnet with Metamask are working fine with web3-react v8. But with walletConnect V2 only default selection works with already reputable network, not working with 1338 & 1339 , stating the error

{"status":"FAILED","reasons":[{"field":"chainId","description":"We don't support the chainId you provided: eip155:1338"}]}

Screenshoot attached as well... Is there any platform of walletConnect where we need to register the 1338/1339 evm chains? & after that only can we able to connect metamask using walletConnect v2? Please guide

@aqeelVaival
Copy link
Author

`import type { AddEthereumChainParameter } from '@web3-react/types'

const ETH: AddEthereumChainParameter['nativeCurrency'] = {
name: 'Ether',
symbol: 'ETH',
decimals: 18,
}

const LAVA: AddEthereumChainParameter['nativeCurrency'] = {
name: 'Lava',
symbol: 'LAVA',
decimals: 18,
}

const MATIC: AddEthereumChainParameter['nativeCurrency'] = {
name: 'Matic',
symbol: 'MATIC',
decimals: 18,
}

const CELO: AddEthereumChainParameter['nativeCurrency'] = {
name: 'Celo',
symbol: 'CELO',
decimals: 18,
}

interface BasicChainInformation {
urls: string[]
name: string
}

interface ExtendedChainInformation extends BasicChainInformation {
nativeCurrency: AddEthereumChainParameter['nativeCurrency']
blockExplorerUrls: AddEthereumChainParameter['blockExplorerUrls']
}

function isExtendedChainInformation(
chainInformation: BasicChainInformation | ExtendedChainInformation
): chainInformation is ExtendedChainInformation {
return !!(chainInformation as ExtendedChainInformation).nativeCurrency
}

export function getAddChainParameters(chainId: number): AddEthereumChainParameter | number {
const chainInformation = CHAINS[chainId]
if (isExtendedChainInformation(chainInformation)) {
return {
chainId,
chainName: chainInformation.name,
nativeCurrency: chainInformation.nativeCurrency,
rpcUrls: chainInformation.urls,
blockExplorerUrls: chainInformation.blockExplorerUrls,
}
} else {
return chainId
}
}

const getInfuraUrlFor = (network: string) =>
process.env.infuraKey ? https://${network}.infura.io/v3/${process.env.infuraKey} : undefined
const getAlchemyUrlFor = (network: string) =>
process.env.alchemyKey ? https://${network}.alchemyapi.io/v2/${process.env.alchemyKey} : undefined

type ChainConfig = { [chainId: number]: BasicChainInformation | ExtendedChainInformation }

export const MAINNET_CHAINS: ChainConfig = {
1: {
urls: [getInfuraUrlFor('mainnet'), getAlchemyUrlFor('eth-mainnet'), 'https://cloudflare-eth.com'].filter(Boolean),
name: 'Mainnet',
},

10: {
urls: [getInfuraUrlFor('optimism-mainnet'), 'https://mainnet.optimism.io'].filter(Boolean),
name: 'Optimism',
nativeCurrency: ETH,
blockExplorerUrls: ['https://optimistic.etherscan.io'],
},
42161: {
urls: [getInfuraUrlFor('arbitrum-mainnet'), 'https://arb1.arbitrum.io/rpc'].filter(Boolean),
name: 'Arbitrum One',
nativeCurrency: ETH,
blockExplorerUrls: ['https://arbiscan.io'],
},
137: {
urls: [getInfuraUrlFor('polygon-mainnet'), 'https://polygon-rpc.com'].filter(Boolean),
name: 'Polygon Mainnet',
nativeCurrency: MATIC,
blockExplorerUrls: ['https://polygonscan.com'],
},
42220: {
urls: ['https://forno.celo.org'],
name: 'Celo',
nativeCurrency: CELO,
blockExplorerUrls: ['https://explorer.celo.org'],
},
1339: {
urls: ['https://rpc.elysiumchain.tech'],
name: 'Elysium Mainnet',
nativeCurrency: LAVA,
blockExplorerUrls: ['https://blockscout.elysiumchain.tech/'],
},
}

export const TESTNET_CHAINS: ChainConfig = {
5: {
urls: [getInfuraUrlFor('goerli')].filter(Boolean),
name: 'Görli',
},
420: {
urls: [getInfuraUrlFor('optimism-goerli'), 'https://goerli.optimism.io'].filter(Boolean),
name: 'Optimism Goerli',
nativeCurrency: ETH,
blockExplorerUrls: ['https://goerli-explorer.optimism.io'],
},
421613: {
urls: [getInfuraUrlFor('arbitrum-goerli'), 'https://goerli-rollup.arbitrum.io/rpc'].filter(Boolean),
name: 'Arbitrum Goerli',
nativeCurrency: ETH,
blockExplorerUrls: ['https://testnet.arbiscan.io'],
},
80001: {
urls: [getInfuraUrlFor('polygon-mumbai')].filter(Boolean),
name: 'Polygon Mumbai',
nativeCurrency: MATIC,
blockExplorerUrls: ['https://mumbai.polygonscan.com'],
},
44787: {
urls: ['https://alfajores-forno.celo-testnet.org'],
name: 'Celo Alfajores',
nativeCurrency: CELO,
blockExplorerUrls: ['https://alfajores-blockscout.celo-testnet.org'],
},
1338: {
urls: ['https://rpc.atlantischain.network'],
name: 'Elysium Testnet',
nativeCurrency: LAVA,
blockExplorerUrls: ['https://elysium-explorer-blockscout.vulcanforged.com/'],
},
}

export const CHAINS: ChainConfig = {
...MAINNET_CHAINS,
...TESTNET_CHAINS,
}

export const URLS: { [chainId: number]: string[] } = Object.keys(CHAINS).reduce<{ [chainId: number]: string[] }>(
(accumulator, chainId) => {
const validURLs: string[] = CHAINS[Number(chainId)].urls

if (validURLs.length) {
  accumulator[Number(chainId)] = validURLs
}

return accumulator

},
{}
)
`

@aqeelVaival
Copy link
Author

Added chain.ts file above

@RitzyDevBox
Copy link

The issue is that the optional chains runs the default validations, to fix this for now just modify the code to include the regular chains with the defaults, IMO this is actually a bug in wallet connect

const [mainnet] = Object.keys(MAINNET_CHAINS).map(Number)
const [...optionalChains] = Object.keys(MAINNET_CHAINS).map(Number)

@hwnahm
Copy link

hwnahm commented Sep 23, 2023

I solved the same issue.

new WalletConnectV2({
      actions,
      options: {
        projectId: '',
        chains: [],
        showQrModal: true,
        rpcMap: { []: '' }.  <------- Please check that you add rpcMap which is omitted in the example.
      }
    })

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants