🪙 Почему DeFi запрашивает .approve на токены?
Если вы чем-то пользовались в крипте, например, децентрализованным обменником (DEX), вы могли заметить, что их смарт-контракт запрашивает allowance на ваши токены.
📚 .approve / .allowance на ERC20 токен разрешет другому кошельку/контракту тратить ваши токены
Зачем так сложно? Зачем две транзакции: 1️⃣ разрешить снимать 2️⃣ обменять токены❓
Ответ: Невозможно в одной транзакции "прикрепить" токены и вызвать метод контракта с параметрами (на какой токен обменять, на какой адрес получить, какой slippage, ...). Это возможно только с базовой валютой блокчейна (a.k.a fee token) (в Ethereum - это ETH, в BSC - это BNB, в Polygon - это MATIC), но с ERC20 токенами, которые по факту являются обычными смарт-контрактами, низя.
Если было бы можно, значит, внутри контракта вызывалась бы функция перевода ERC20 токенов с вашего кошелька на другой кошелек. А следовательно, можно было бы написать контракт, который просто переводит все токены всех юзеров себе на баланс.
#крипта
Если вы чем-то пользовались в крипте, например, децентрализованным обменником (DEX), вы могли заметить, что их смарт-контракт запрашивает allowance на ваши токены.
📚 .approve / .allowance на ERC20 токен разрешет другому кошельку/контракту тратить ваши токены
Зачем так сложно? Зачем две транзакции: 1️⃣ разрешить снимать 2️⃣ обменять токены❓
Ответ: Невозможно в одной транзакции "прикрепить" токены и вызвать метод контракта с параметрами (на какой токен обменять, на какой адрес получить, какой slippage, ...). Это возможно только с базовой валютой блокчейна (a.k.a fee token) (в Ethereum - это ETH, в BSC - это BNB, в Polygon - это MATIC), но с ERC20 токенами, которые по факту являются обычными смарт-контрактами, низя.
Если было бы можно, значит, внутри контракта вызывалась бы функция перевода ERC20 токенов с вашего кошелька на другой кошелек. А следовательно, можно было бы написать контракт, который просто переводит все токены всех юзеров себе на баланс.
#крипта