connect to walletconnect with web3modal

16.1k views Asked by At

when I try to connect to my wallet from trust wallet browser, it redirects me to google

Image 1

Image 2

The code is like this which is just as the same as trustWallet doc

  1. how can I properly connect to the wallet connect?
  2. is there anyway to connect to testnets like ropsten with wallet connect?
// set chain id and rpc mapping in provider options
        const providerOptions = {
            walletconnect: {
                package: WalletConnectProvider,
                options: {
                    rpc: {
                        56: 'https://bsc-dataseed1.binance.org'
                    },
                    chainId: 56
                }
            }
        }

        const web3Modal = new Web3Modal({
            network: "mainnet", // optional
            cacheProvider: true, // optional
            providerOptions // required
        });

        const provider = await web3Modal.connect();
        await web3Modal.toggleModal();

        // regular web3 provider methods
        const newWeb3 = new Web3(provider);
        const accounts = await newWeb3.eth.getAccounts();

        console.log(accounts);
3

There are 3 answers

0
reb00tz On

Just ran across this by chance. To answer your second question, to connect to specific Testnet chain:

  1. check the chainId from https://chainlist.org/ (remember to check the "Include Testnets" option)
  2. find the correct chain name (unfortunately, Polygon's Testnet is named Mumbai instead of something relatable, like "Polygon Mumbai Testnet"), then open the pull down to get a list of RPCs
  3. use both chainId and one RPCs to add an entry to the options.rpc node, ensuring the "gas token" is also correctly set in the network node

Considering WalletConnect v1 has been deprecated (as of writing this), if you happen to move to using Web3Modal and WalletConnect v2, you could import chain defaults from '@wagmi/core/chains', then use in the "defaultChain".

Screenshot highlighting chain object imported from @wagmi/core/chains

0
SATAN On

If i understand you correct, try

const provider = await Web3Modal.connectTo('walletconnect')

instead of

const provider = await web3Modal.connect();
await web3Modal.toggleModal();

UPD: walletConnect is just 'agregator'. you can't connect directly to any wallet (at least first time) you should choose wallet which you want connect to (left tab with button will choose apps on your mobile phone to which it can connect (metamask, trust, ...) and right tab 'qr-code' will show you qr which you can scan with wallet apps (metamask, trust, ...) on another devices). then if 'cacheProvider' is true, you don't need to click it again till disconnect from wallet

0
Mohammad Amin Ahmadi On

For the first problem, I found out, it doesn't work because I was on localhost. When I launched my dapp on server it easily connected to my trustwallet on phone. For the second question I found this:

walletconnect: {
    package: WalletConnectProvider,
    options: {
      rpc: {
        137: "https://rpc-mainnet.maticvigil.com/",
      },
      network: "matic",
    },
  },
};

to connect to matic(polygon) network but I couldn't connect to any testnets.