Search code examples
ethereumweb3jsethers.js

How to connect ethers.js library with Rinkeby programmatically?


According to official docs of ethers.js, this should be the way how to connect to a specific network like Rinkeby-testnet with custom data:

 const provider = ethers.getDefaultProvider(network, {
    etherscan: ETHERSCAN_API_KEY,
    infura: INFURA_API_KEY,

Also, this would be the way to get a signer in order to sign transactions:

 const signer = provider.getSigner()

However, there is now method "getSigner" available on the default provider.

TypeError: provider.getSigner is not a function

How to achieve that using ethers.js?


Solution

  • ethers.getDefaultProvider seems to be somehow broken or outdated. Instead, you should connect directly to a specific Provider, like this for Alchemy:

    const provider = new ethers.providers.AlchemyProvider("rinkeby", apiKey)
    

    or for Infura:

    const provider = new ethers.providers.InfuraProvider("rinkeby", apiKey)
    

    After this, it is easy to get a signer:

    const signer = provider.getSigner()
    

    or

    const walletSigner = wallet.connect(provider);
    

    You can read more about this here.