Как проверить возврат тем же токеном во 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