Смартконтракт: Внимание! при выполнении контракта возникла ошибка и получено [Reverted]

Я отправил ropsten ETH на мой только что созданный адрес контракта (все еще в тестовом режиме в тестовой сети Ropsten). К сожалению, он продолжал «терпеть неудачу». Блокчейн сообщает: Внимание! Ошибка при выполнении контракта [Отменено]

Пожалуйста, смотрите адрес моего контракта и сбои транзакций здесь: https://ropsten.etherscan.io/address/0xe7a6fbf8a93e6c879907e0404881840a05978745

Я использовал функции взаимодействия myetherwallet, взаимодействовал и запрашивал мой смарт-контракт для totalSupply, CurrentDistribPublicSupply, OwnerDistribSupply_ и других. Вроде все в порядке и сходится. Так что я очень смущен и очень обеспокоен. Пожалуйста, помогите и объясните, что я делаю неправильно? Любая помощь и исправления будут оценены. Спасибо.Графическое описание моего уже развернутого контракта в режиме чтения

Кажется, у него закончился бензин. Вы пытались отправить больше газа с вашей транзакцией? Газ 90к это не очень много, если у вас сложный договор.
Спасибо Исмаил за интерес к моей проблеме. Да, я развернул тот же контракт с другим адресом контракта. Я использовал 250k газа, все еще не удалось. Пожалуйста, помогите проверить код моего контракта, все ошибки в Solidity уже устранены, развертывание контракта прошло успешно. Мой контракт рассчитан на выдачу токенов за Eth.

Ответы (2)

Скорее всего, вы столкнулись с одной revert()из ваших резервных функций. Отладьте его с помощью Remix. Рекомендуется использовать require()вместо этого, так как это автоматически отменит изменение состояния, если условие внутри него не окажется true.

Таким образом, чтобы убедиться, что условие выполнено, вы можете сделать это, require ( 2 == 2)и если это не удается, это намного проще обнаружить, проходя этапы выполнения с отладчиком Remix, чем смотреть, при каком условии если он перешел к возврату.

Никита спасибо, собственно ремикс подсказал, просто нашел способ обойти. Я обязательно попробую это и дам вам немедленный отзыв. Большое спасибо.
Привет, Никита, я применил ваше предложение, и теперь контракт получает ETH на тесте ropsten. Я очень ценю помощь. Большое спасибо
спасибо, пожалуйста, отметьте мой ответ как принятое решение! ;)

Резервная функция подходит только для основных операций. https://solidity.readthedocs.io/en/v0.4.24/contracts.html?#fallback-функция

Спасибо, Сиид, за это. Честно говоря, я не суперпрограммист, по крайней мере пока. Но после просмотра документа мое интуитивное мышление понимает, что вы советуете мне удалить резервную функцию? Наконец, я не знаю, не могли бы вы предположить, что, включив данные при попытке отправить ETH в контракт, можно обойти функцию возврата? Особенно с наличием резервной функции в моем коде. Спасибо за ваше усердие