Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 277
delete Avatar asked Jun 11 '21 19:06

delete


3 Answers

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.

like image 194
itinance Avatar answered Oct 23 '22 01:10

itinance


getSigner() for InfuraProvider doesn't work, use this:

const infuraProvider = new ethers.providers.InfuraProvider(network, API_KEY);
const wallet = new ethers.Wallet(privateKey, infuraProvider);
const signer = wallet.connect(infuraProvider);
contract = new ethers.Contract(smartContractAddress, abi, signer);
like image 26
Silvio Guedes Avatar answered Oct 23 '22 03:10

Silvio Guedes


Feb 2022

This works for me perfectly :

    const provider = new ethers.providers.JsonRpcProvider(url)
    const signer = provider.getSigner()

Got to know about this from the Alchemy's doc

ethers.js doc

like image 45
Prakhar Avatar answered Oct 23 '22 02:10

Prakhar