Reputation: 19148
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?
Upvotes: 8
Views: 8415
Reputation: 1014
This works for me:
const provider = new ethers.providers.JsonRpcProvider(url)
const signer = provider.getSigner()
Got to know about this from the Alchemy docs
ethers.js doc
Upvotes: 5
Reputation: 1254
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);
Upvotes: 8
Reputation: 12398
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.
Upvotes: 6