我试图使用web3 v1.x和英弗拉在Mainnet上发送一个ERC-20令牌。执行这段代码时,我会得到标题中的错误。
我有一个大约0.14 ETH的余额
var provider = new HDWalletProvider(config.mnemonic, "https://mainnet.infura.io/v3/" + config.infuraKey);
const web3 = new Web3(provider);
const tokenAbi = config.abi;
let tokenContract = new web3.eth.Contract(tokenAbi, contractAddress);
let data = tokenContract.methods.transfer(tAddr, tAmountInWei).encodeABI();
const tx = {
from: myAddress,
to: contractAddress,
gas: web3.utils.toHex(400000),
gasPrice: web3.utils.toHex(25000000000),
value: "0x0",
data: data
};
let eTx = await web3.eth.accounts.signTransaction(tx, tx.from, (err, signedTx) => {
if (err) {
console.error(err);
return err;
} else {
console.log('SignedTx: ', signedTx);
return web3.eth.sendSignedTransaction(signedTx.rawTransaction, (err, res) => {
if (err) {
console.error(err);
} else {
console.log(res);
count++;
}
});
}
});我的错误如下:
Error: insufficient funds for gas * price + value
at /Users/****/****/node_modules/truffle-hdwallet-provider/dist/index.js:15:632675
at t.i.onreadystatechange (/Users/****/*****/node_modules/truffle-hdwallet-provider/dist/index.js:15:748948)
at t.e.dispatchEvent (/Users/*****/*****/node_modules/truffle-hdwallet-provider/dist/index.js:1:142373)
at t._setReadyState (/Users/*****/*****/node_modules/truffle-hdwallet-provider/dist/index.js:15:753708)
at t._onHttpResponseEnd (/Users/*****/*****/node_modules/truffle-hdwallet-provider/dist/index.js:15:756793)
at IncomingMessage.<anonymous> (/Users/*****/*****/node_modules/truffle-hdwallet-provider/dist/index.js:15:756051)
at IncomingMessage.emit (events.js:203:15)
at endReadableNT (_stream_readable.js:1129:12)
at process._tickCallback (internal/process/next_tick.js:63:19)发布于 2019-09-30 03:04:03
我找到了这样的工作方式。
tokenContract.methods.transfer(tAddr, tAmountInWei).send({
from: myAddress,
gas: web3.utils.toHex(40000),
gasPrice: web3.utils.toHex(25000000000),
value: "0x0"
}).on('transactionHash', (hash) => {
console.log(`txHash: ${hash}`);
});发布于 2019-09-29 06:53:51
为您的交易分配的最高天然气费是gas * gasPrice,在您的情况下,是25 is (giga-we10^9 we或10^-9 ETH)乘以400,000气体限额,
或10,000,000 (10^6)格威。
10^6 * 10^-9 = 0.001 ETH所以你的钱包余额应该足够了。
我会反复检查两件事:
estimateGas,重复检查web3认为开采tx需要多少气体,并提供这篇文章中的信息。https://ethereum.stackexchange.com/a/515/4670web3.eth.getBalance,确保您使用的是您认为自己是https://github.com/ethereum/wiki/wiki/JavaScript-API#example-35的地址祝好运!
https://ethereum.stackexchange.com/questions/76275
复制相似问题