Solidity

當合約餘額 > 0 時 this.balance 的操作碼無效

  • May 21, 2017

當我在 Remix 中呼叫 getBalance 並且合約餘額大於 0 時出現異常(即我使用回退函式發送了一些乙太幣):

執行期間異常。(無效的操作碼)。請調試事務以獲取更多資訊。

當合約餘額為 0 時,getBalance 正確返回 0。

pragma solidity ^0.4.0;

contract Test {

   function() payable {}

   function getBalance() public constant returns(uint bal) {
       bal = this.balance;
       return bal;
   }

} 

您的程式碼中沒有錯誤,我認為在使用fallback您呼叫getbalance具有非空值的函式的函式向您的合約發送交易後。雖然 getbalance 不是應付函式,但您會收到上述錯誤。因此,在呼叫 getbalance 之前,請確保 remix 交易值中的值為 0:

在此處輸入圖像描述

我有類似的問題。我認為這是瀏覽器記憶體問題。嘗試刷新頁面,但首先複製合約地址,以便稍後通過點擊“地址”按鈕觀看。

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