Error: sending a transaction requires a signer (operation="sendTransaction", code=UNSUPPORTED_OPERATION, version=contracts/5.8.0)
{
reason: 'sending a transaction requires a signer',
code: 'UNSUPPORTED_OPERATION',
operation: 'sendTransaction'
}
Code from - Ethereum Development
import { FireblocksWeb3Provider, ChainId, ApiBaseUrl } from "@fireblocks/fireblocks-web3-provider";
import * as ethers from "ethers"
const FIREBLOCKS_API_SECRET_PATH = "./fireblocks_secret.key";
const API_KEY = process.env.FIREBLOCKS_API_KEY;
const eip1193Provider = new FireblocksWeb3Provider({
apiBaseUrl: ApiBaseUrl.Sandbox, // If using a sandbox workspace
privateKey: FIREBLOCKS_API_SECRET_PATH,
apiKey: API_KEY,
vaultAccountIds: "0",
chainId: ChainId.BSC_TEST,
})
const provider = new ethers.providers.Web3Provider(eip1193Provider);
const erc20ABI = [
"function balanceOf(address) view returns (uint256)",
"function allowance(address,address) view returns (uint256)",
"function transfer(address,uint256) returns (bool)",
]
const tokenAddress = "0x..."
const userAddress = "0x..."
const toAddress = "0x..."
const erc20Contract = new ethers.Contract(tokenAddress, erc20ABI, provider);
async function main() {
const balance = await erc20Contract.balanceOf(userAddress)
console.log(balance)
const transferTxn = await erc20Contract.transfer(toAddress, balance)
await transferTxn.wait()
console.log(transferTxn.hash)
}
main()