I'm trying to send a transaction in order to call a minting function of a smart contract on the Rinkeby Testnet. The problem is that I get the following error:
Error: Transaction has been reverted by the EVM: { "blockHash": "0xba0fa95b2f4ef2b7ab7d499ed1de8b85a8b7147297bb013bf4b545879cd4700e", "blockNumber": 10480884, "contractAddress": null, "cumulativeGasUsed": 2868062, "effectiveGasPrice": 1000000025, "from": "0x1ff21cda9a88944fd78e9fdd9f75631ca05fefd9", "gasUsed": 28987, "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "status": false, "to": "0x4cdfdf81f5f836cbd0f7c57f581ac5162387a97a", "transactionHash": "0x22fca33c21200660eae2995c22ea1be74a7a331e48c24797e767767899a57f3f", "transactionIndex": 28, "type": "0x0" }
If I check the transaction on the etherscan I see the following message: "Fail with error 'Not enough ether to purchase NFTs.'", but that has to be wrong since the address I use has > 0.6ETH and the transaction should just use 0.04ETH + gas. I have tried everything I found online but nothing has helped me...
Here is the code I use:
const web3 = new Web3(new Web3.providers.HttpProvider("-INFURA-"));
const abiContract = require('./contractABI.json')
const contractRinkeby = new web3.eth.Contract(abiContract, '0x---');
const privateKey = process.env.PRIVATE_KEY;
const account = web3.eth.accounts.privateKeyToAccount(privateKey).address;
web3.eth.getBalance(account).then(function (result) {
console.log("Your account balance is " + web3.utils.fromWei(result, "ether") + " ETH");
});
const options = {
from : '0x---',
to : '0x---',
data : contractRinkeby.methods.mint(1).encodeABI(),
gas : 300000
};
const signed = await web3.eth.accounts.signTransaction(options, process.env.PRIVATE_KEY);
const receipt = await web3.eth.sendSignedTransaction(signed.rawTransaction);
What am I doing wrong? It should be an easy call of the smart contract method, but somehow I'm blocked here since a couple of weeks...
I would be very thankful if you could help me or give me any tips.
Thanks!