Из прошлого поста мы узнали, что функция swap() не имеет кода для получения пользовательских токенов, что может открывать опцию флеш займов!
Контракт может просто запросить некоторое количество токенов, которое требуется к займу (отметка А на скрине), без какого-либо залога. Сами токены отправляются чуть позже (отметка В).
Вместе с вызовом функции также должны быть отправлены данные, которые позже перенаправляются в контракт, который реализует интерфейс IUniswapV2Callee, где присутствует всего лишь одна функция:
function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;
Вообще, нужно сказать, что вызывать функцию swap(), т.е. обменивать токены или брать флеш займы, могут только контракты, так как ЕОА не могут одновременно отправлять токены и вызывать свап в одной транзакции без помощи смарт контрактов.
#uniswap #v2 #swap