Решение задач Ethernaut. Fallback
Изучив контракт мы видим что владение контракта предается в 2х местах помимо конструктора:
Передачу прав через contribute() отбрасываем, т.к для этого нам нужно отправить одновременно более 1000 эфиров и меньше 0.001 что бы пройти условие для прередачи прав, что не возможно.
Рассмотрим вариант через receive()
Нас ограничивает условие contribution > 0
Его можно пройти если сделать contribute() хотя бы на 1 wei
Создаем инстанс и копируем его адрес
Открываем remix.ethereum.org. Подключаемся к нужной сети через Injected Provider. Вставляем код контракта, адрес инстанса и жмем At Address что бы подключиться к контракту
Вводим 1 wei и нажимаем contribute.
Теперь мы можем пройти следующее условие
Что бы проверить это необходимо вставить свой адрес в следуюшее поле и нажать кнопку. Видим что у наш контрибьюшен равен 1
Для того что бы вызвать функцию receive() необходимо просто отправть эфир на адрес контракта.
Для этого снова вводим 1 Wei и жмем transact
Теперь мы являемся овнером. Что бы это проверит жмем owner. И видим свой адрес
Нажимаем Withdraw для того что бы опусташить контракт. Видим что баланс стал равен 0
Возвращаемся на сайт эзернаута и отправляем инстанс на проверку