0

ガナッシュと 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残高です(ガスではありません):

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

estimateGas代わりに使用してください: https://web3js.readthedocs.io/en/v1.2.0/web3-eth-contract.html#methods-mymethod-estimategas

my_method()より多くのガスを消費しますblock gas limit。ガナッシュのブロックのガス制限を増やすことができますが、機能を最適化することをお勧めします。そうしないと、実際のネットワークではまだ問題が発生する可能性があります。

于 2020-07-17T07:46:57.723 に答える