मैं ganache और web3 के साथ एक Ethereum स्मार्ट अनुबंध का परीक्षण कर रहा हूँ।

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/त्रुटि-वीएम-अपवाद-जबकि-प्रसंस्करण-लेन-देन-आउट-ऑफ-गैस

0
David Portabella 16 जुलाई 2020, 17:56

1 उत्तर

सबसे बढ़िया उत्तर

यह 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 से अधिक गैस की खपत करता है। आप गनाचे के लिए ब्लॉक के लिए गैस की सीमा बढ़ा सकते हैं, लेकिन फ़ंक्शन को अनुकूलित करना बेहतर है, अन्यथा वास्तविक नेटवर्क में अभी भी समस्याएं हो सकती हैं।

1
MentatX 17 जुलाई 2020, 07:46