Я получаю исключение, когда я вызываю getBalance в Remix, а баланс контракта больше 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:
У меня были похожие проблемы. Я думаю, что это проблема с кешем браузера. Попробуйте обновить страницу, но сначала скопируйте адрес контракта, чтобы потом посмотреть его, нажав кнопку «По адресу».
серте