Вчера релизнули майннет Blast, без приключений не обошлось. Итак, речь пойдет про один из первых DEX в сети - Thruster (форк Uniswap). Балбесы на билдерах что-то напутали и контракт роутера получился кривой.
Давайте по порядку введу вас в курс дела.
Как работают DEX и слиппаж
К примеру, вы хотите откупить токен $CLOWN, но цена быстро меняется и для успешного свапа вам нужно указать более высокий слиппаж, к примеру 50%. Контракт в свою очередь, в момент свапа, инициирует отправку на ваш кошелек токена $CLOWN и разницу исходного токена, к примеру $ETH.
Вы свапаете 1 $ETH на 1000 $CLOWN, но по факту 1000 $CLOWN стоили 0.5 $ETH, в процессе свапа роутер вернет вам 0.5 $ETH и 1000 $CLOWN.
Что не так с Thruster
По ошибке роутера, разница исходного токена $ETH не возвращалась на ваш кошелек, она оставалась на контракте роутера. При этом, у контракта есть функция
refundETH(), вызвать которую может любой и заклеймить соответственно весь баланс роутера.Как это абузили
Думаю тут очевидно, пишешь 50 строк кода, бесконечно проверяешь баланс контракта роутера, если баланс есть - вызываешь
refundETH() и получаешь весь баланс роутера.К утру разработчики все таки одуплились и замутили фикс, но к этому времени с контракта вынесли уже больше 200 000$. Кстати, они пообещали сделать всем refund.
* скриншот кстати фейк, наверное
Основной канал | О web3 | Мои софты
