Erc-20

預售合約的 ETH 交易一直失敗

  • December 30, 2020

我正在嘗試向 Kovan 上的預售智能合約發送一些 ETH。已將預售地址設置為支出者 - 與預售契約中分配的代幣數量完全相同。但後來我得到:

警告!合約執行過程中遇到的錯誤$$ Bad instruction $$ 在 tx 雜湊: https ://kovan.etherscan.io/tx/0x8d0451f2a9ba2440bf5f2a27d171850437772ccb12afeb8846507c0497e65cc0

根據我的閱讀和了解,代幣轉移過程中出現了問題。但我找不到它是哪一個。

想知道是否有辦法解決這個問題,或者至少知道是哪一個導致了這個問題,以防我將來遇到同樣的問題。謝謝。

錯誤消息Bad instruction和 gas 消耗等於 gas 限製1,000,000表明問題是由斷言或低級別錯誤(如數組越界訪問)引起的。

查看接收函式,沒有任何傳輸會導致錯誤指令。失敗的傳輸會恢復,但不會消耗所有可用的 gas。

丟棄映射訪問後,requires 條件唯一可疑的程式碼是 getTokensPerEth 函式

function getTokensPerEth(uint256 amount) internal view returns(uint256) {
   return amount.mul(tokenRatePerEth).div(
       10**(uint256(9).sub(tokenDecimals).add(rateDecimals))
       );
}

失敗在uint256(9).sub(tokenDecimals)。因為tokenDecimals是 18 SafeMathsub將在assert(b <= a)(b = 18, a = 9) 處失敗。

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