Как проверить возврат тем же токеном во flash swap Uniswap v2

Пара v2 отправляет выход до проверки итогового инварианта. Тест обратного вызова должен подтвердить источник вызова и возврат достаточного количества заимствованного токена.

Воспроизведите возврат тем же активом

Используйте эталонную пару с резервами существенно выше условной суммы и без иных движений. При непустом data после выдачи пара вызывает uniswapV2Call получателя. В возврате тем же токеном учитывается комиссия со входящей суммы.

borrow token0 = 997 raw units
same-token repayment = ceil(997 × 1000 / 997) = 1000

Заём 997 единиц с возвратом 1 000 укладывается в границу эталонной комиссии. Возврата 999 недостаточно. До перевода средств в callback проверьте msg.sender по паре нужной фабрики и адресам токенов.

Для возврата другим токеном нужен свой расчёт

Возврат другим активом зависит от обоих резервов и инварианта. Токен с комиссией перевода может доставить меньше указанного. Проверяйте фактические конечные балансы и тестируйте конкретную реализацию пары. github.com UniswapV2Pair.sol