संकट

मैं कोशिश कर रहा हूँ इसलिए टेस्टनेटवर्क (रोपस्टेन) में एक अनुबंध की एक विधि का उपयोग करें, लेकिन यह इस त्रुटि के कारण विफल हो जाता है:

कारण: 'गैस का अनुमान नहीं लगा सकता; लेन-देन विफल हो सकता है या मैन्युअल गैस सीमा की आवश्यकता हो सकती है', कोड: 'UNPREDICTABLE_GAS_LIMIT'

कोड

मैंने स्मार्ट अनुबंध का एक उदाहरण बनाया और इसकी रजिस्टर विधि को कॉल करना चाहता था:

const registrationContract = new ethers.Contract(ADDRESS, abi, signer);
const hashedDomain = utils.keccak256(utils.toUtf8Bytes(domain));

const register = await registrationContract.register(hashedDomain, walletAddress);

क्या ethers.js अनुबंध की सीमा निर्धारित करने के लिए कोई फ़ंक्शन प्रदान करता है? या यह अन्यथा किया जा सकता है? मुझे दस्तावेज़ीकरण में कोई नहीं मिला।

0
Gh05d 7 जिंदा 2022, 16:38
1
मुझे लगता है कि गैसलिमिट आमतौर पर संदेश तर्क में पारित किया जाता है। मुझे नहीं पता कि हमेशा ऐसा ही होता है। क्या आप वह अनुबंध प्रदान कर सकते हैं जिसके साथ आप काम करने का प्रयास कर रहे हैं? उदाहरण के लिए uniswap के साथ आप गैस की सीमा x के साथ सेट करते हैं: uniswap.swapExactTokensForETH(tokenAmount, ethAmount, etc., {gasLimit: x})
 – 
cglacet
7 जिंदा 2022, 16:51
यहां अनुबंध का लिंक दिया गया है: github.com/ensdomains/ens/ ब्लॉब/मास्टर/अनुबंध/…
 – 
Gh05d
7 जिंदा 2022, 17:00

1 उत्तर

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

आप एक साधारण हस्तांतरण लेनदेन के लिए अंतिम तर्क के रूप में किसी वस्तु के साथ गैस सीमा निर्धारित कर सकते हैं, आप ऐसा कुछ कर सकते हैं:

const tx = {
  to: toAddress,
  value: ethers.utils.parseEther(value),
  gasLimit: 50000,
  nonce: nonce || undefined,
};
await signer.sendTransaction(tx);

यदि आप एक स्मार्ट अनुबंध के लिए लेन-देन कर रहे हैं, तो विचार समान है, लेकिन सुनिश्चित करें कि आपने अपनी अबी विधियों में से एक में अंतिम पैरामीटर सेट किया है, उदाहरण:

const tx = await contract.safeTransferFrom(from, to, tokenId, amount, [], {
  gasLimit: 100000,
  nonce: nonce || undefined,
});

यह UNPREDICTABLE_GAS_LIMIT त्रुटि को ठीक कर सकता है, क्योंकि इसे मैन्युअल रूप से सूचित करने के बाद से ईथर परिकलित गैस_लिमिट का अनुरोध करने वाले प्रदाता को एक आरपीसी विधि कॉल छोड़ देता है।

1
Rodrigo Klosowski 7 जिंदा 2022, 16:55
मैंने पहले ही अनुबंध पर गैस की सीमा निर्धारित करने की कोशिश की, लेकिन त्रुटि बनी हुई है।
 – 
Gh05d
7 जिंदा 2022, 17:03
वही त्रुटि संदेश?
 – 
Rodrigo Klosowski
7 जिंदा 2022, 17:13
अब काम करता है। मैं वास्तव में नहीं जानता कि क्या बदल गया है, लेकिन मैं वह लेता हूं जो मुझे मिल सकता है।
 – 
Gh05d
7 जिंदा 2022, 17:52