Solidity

swapExactETHForTokens - 氣體錯誤消息

  • October 26, 2020

經過數小時的研究,我終於從這個論壇中找到了對我有用的程式碼。我已經在 Remix(Kovan 測試環境)中成功編譯了程式碼,但我收到了這個氣體錯誤消息:

氣體估計錯誤並顯示以下消息(見下文)。事務執行可能會失敗。是否要強制發送?

這是我正在重複使用的程式碼:

pragma solidity 0.7.1;

import "https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/interfaces/IUniswapV2Router02.sol"; 

contract BuyToken{
         
   IUniswapV2Router02 usi = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
      
function buyTokenWithExactEth() public payable returns(uint256) {
       address cryptoToken = 0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa;

       uint deadline = block.timestamp + 15; // I am only using 'now' for convenience, for mainnet I will pass deadline from frontend
       usi.swapExactETHForTokens{value: msg.value}(0, getPathForETHToToken(cryptoToken), address(this), deadline);

       // no need to refund ETH
       return 1000;
}

 function getPathForETHToToken(address crypto) private view returns (address[] memory) {
   address[] memory path = new address[](2);
   path[0] = usi.WETH();
   path[1] = crypto;
   
   return path;
 }

}

這是我的混音環境的螢幕截圖:

混音

關於如何解決這個問題的任何建議?提前致謝!

編輯:在主網部署合約時出現新錯誤

這是什麼錯誤?

好的,您似乎已經在部署部分失敗了。您發布的交易:https ://kovan.etherscan.io/tx/0xeef83dae54ba0143aa1a654f328496af154775a3877e30af6cc5e8c520688bdc是失敗的部署。

它失敗的原因是因為您在部署時發送了 1 個 Wei。但是建構子沒有正確聲明為應付,因此部署失敗。

讓它工作:

  1. 在左上角輸入“0 Wei”。
  2. 部署並等待它成功。
  3. 在左上角輸入“x Wei”。
  4. 在“已部署的契約”下找到新契約。現在點擊“buyTokenWithExactEth”。

引用自:https://ethereum.stackexchange.com/questions/89640