Solidity
swapExactETHForTokens - 氣體錯誤消息
經過數小時的研究,我終於從這個論壇中找到了對我有用的程式碼。我已經在 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。但是建構子沒有正確聲明為應付,因此部署失敗。
讓它工作:
- 在左上角輸入“0 Wei”。
- 部署並等待它成功。
- 在左上角輸入“x Wei”。
- 在“已部署的契約”下找到新契約。現在點擊“buyTokenWithExactEth”。