0

我正在使用 ganache 和 web3 测试以太坊智能合约。

const Web3 = require('web3');
const web3 = new Web3(provider);
const contract = new web3.eth.Contract(abi, contractAddress);

web3.eth.getBalance(contractOwner).then(console.log); // this returns 99953972490000000000

const sendTxOptions = {from: contractOwner, gas: 1000*1000*10}
contract.methods.my_method().send(sendTxOptions).then(console.log);

(node:80755) UnhandledPromiseRejectionWarning: Error: Returned error: Exceeds block gas limit

1000*1000*10小于99953972490000000000。为什么会失败?

注意:我已经搜索过其他类似的问题,例如这个,但他们没有回答我的问题。 https://ethereum.stackexchange.com/questions/26577/error-vm-exception-while-processing-transaction-out-of-gas

4

1 回答 1

2

这是ETH余额(不是gas):

web3.eth.getBalance(contractOwner).then(console.log); // this returns 99953972490000000000

改用estimateGashttps ://web3js.readthedocs.io/en/v1.2.0/web3-eth-contract.html#methods-mymethod-estimategas

my_method()比消耗更多的气体block gas limit。可以为 Ganache 增加区块的 gas 限制,但最好优化功能,否则在实际网络中可能仍然存在问题。

于 2020-07-17T07:46:57.723 回答