Роутеры не возвращают неиспользованные ETH если за время включения транзакции в блок состояние пула поменялось. И выходит так, что отправлен свап на 10eth->Xtoken, а исполнено 2eth->Ytoken, но 8eth не возвращено пользователю.
Пример
- Опережающий свап юзера в
21340285 блоке https://etherscan.io/tx/0xa903df4378fef4d14b3980c22a10c64decdc653ee406bb0e6d4a0b58453a8d82 искажает состояние пула для следующей транзакции- свап в блоке
21340286 где отправлено 1.8eth, использовано для свапа 1.29eth, а 0.51eth кануло в небытие https://etherscan.io/tx/0x68c78fa2a1c708f287a1edba67796f3d8f670877f6ceff7705ce4c32b38911ee