🪙 Почему DeFi запрашивает .approve на токены?



Если вы чем-то пользовались в крипте, например, децентрализованным обменником (DEX), вы могли заметить, что их смарт-контракт запрашивает allowance на ваши токены.



📚 .approve / .allowance на ERC20 токен разрешет другому кошельку/контракту тратить ваши токены



Зачем так сложно? Зачем две транзакции: 1️⃣ разрешить снимать 2️⃣ обменять токены



Ответ: Невозможно в одной транзакции "прикрепить" токены и вызвать метод контракта с параметрами (на какой токен обменять, на какой адрес получить, какой slippage, ...). Это возможно только с базовой валютой блокчейна (a.k.a fee token) (в Ethereum - это ETH, в BSC - это BNB, в Polygon - это MATIC), но с ERC20 токенами, которые по факту являются обычными смарт-контрактами, низя.



Если было бы можно, значит, внутри контракта вызывалась бы функция перевода ERC20 токенов с вашего кошелька на другой кошелек. А следовательно, можно было бы написать контракт, который просто переводит все токены всех юзеров себе на баланс.



#крипта