Trying to get a signer from InfuraProvider, but keep getting an error "API provider does not support signing (operation="getSigner", code=UNSUPPORTED_OPERATION, version=providers/5.4.3)"
Any idea why this might be happening and how to fix that?
const { ethers } = require("ethers");
const MyContractArtifact = require("./build/contracts/Token.json");
require("dotenv").config();
const { InfuraProvider } = require("@ethersproject/providers");
const fs = require('fs');
const contract = JSON.parse(fs.readFileSync('./build/contracts/Token.json', 'utf8'));
const provider = new InfuraProvider("rinkeby", process.env.INFURA_API_KEY);
(async () => {
try {
console.log('running...');
const ABI = contract.abi;
const signer = provider.getSigner(); //this keeps erroring: **"API provider does not support signing (operation="getSigner", code=UNSUPPORTED_OPERATION, version=providers/5.4.3)"**
const writableContract = new ethers.Contract("our address", ABI, signer);
const txResponse = await writableContract.transfer("our address", 10)
const txReceipt = await txResponse.wait();
console.log(txReceipt);
The way I solved this was as follows:
var wallet = ethers.Wallet.fromMnemonic(process.env.MNEMONIC);
// var signer = provider.getSigner();
var signer = wallet.connect(provider); // Set the provider for the wallet
const writableContract = new ethers.Contract(process.env.CONTRACT_ADDRESS1, ABI, signer);
...