You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am using web3.js & nodeJS to execute a smart contract on the Kovantestnet. The same method works for me on Ropsten with another smart contract. Here are the two errors I get via the callback:
1.)
UnhandledPromiseRejectionWarning: Error: Returned error: Insufficient
funds. The account you tried to send transaction from does not have
enough funds. Required 183675000000 and got: 0.
2.)
(node:15422) UnhandledPromiseRejectionWarning: Unhandled promise
rejection. This error originated either by throwing inside of an async
function without a catch block, or by rejecting a promise which was
not handled with .catch(). (rejection id: 1)
This is my smart contract:
pragma solidity ^0.4.24;
contract Test2 {
address public customer;
bytes32 public productName;
struct Box {
uint size;
}
Box public box;
constructor() public {
box.size = 3;
customer = 0xDa3E3C75....;
productName = "0x576...";
}
function changeBox(uint _change) public {
box.size = _change;
}
function getBox() public returns (uint) {
return box.size;
}
}
And here is the JavaScript code to make a transaction and execute the function changeBox with web3 and node:
const Tx = require('ethereumjs-tx');
var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider('https://kovan.infura.io/api_key'));
const contractAddress = '0x36075430619b21Fff798454e2D5C81E9C18DEe81';
var contractABI = new web3.eth.Contract(
[...json abi...], contractAddress);
var boxNum;
function changeBox(boxNum, callback) {
web3.eth.defaultAccount = "0x002D189c25958c60...";
const account = '0x002D189c2595...';
const privateKey = Buffer.from('240462d5...', 'hex');
const contractFunction = contractABI.methods.changeBox(Number(boxNum));
const functionAbi = contractFunction.encodeABI();
let estimatedGas;
let nonce;
contractFunction.estimateGas(function(error, gasAmount) {
if(!error) {
console.log('Estimated Gas : ' + gasAmount);
estimatedGas = gasAmount + 10000;
console.log('New Gas: ' + estimatedGas);
web3.eth.getTransactionCount(account).then(_nonce => {
nonce = _nonce.toString(16);
console.log("Nonce: " + nonce);
const txParams = {
gasPrice: estimatedGas,
gasLimit: 5000000,
to: contractAddress,
data: functionAbi,
from: account,
nonce: '0x' + nonce
};
const tx = new Tx(txParams);
tx.sign(privateKey);
const serializedTx = tx.serialize();
web3.eth.sendSignedTransaction('0x' + serializedTx.toString('hex')).on('receipt', receipt => {
callback(receipt);
});
});
}
else {
callback(error);
}
});
}
//calling the contract with value 6
changeBox(6, function(err, data) {
if (!err) {
console.log(data);
}
else {
console.log(err);
}});
The text was updated successfully, but these errors were encountered:
I am using
web3.js
&nodeJS
to execute asmart contract
on theKovan
testnet
. The same method works for me on Ropsten with another smart contract. Here are the two errors I get via the callback:1.)
2.)
This is my smart contract:
And here is the JavaScript code to make a transaction and execute the
function changeBox
with web3 and node:The text was updated successfully, but these errors were encountered: