USDT — один из крупнейших стейблкоинов (хотя USDC уже обходит по объёму транзакций — дешборд на Dune с кучей интересной инфы по всем стейблам)
Aave — крупнейший лендинг. стабильные контракты, проверенные годами.
Что может пойти не так? А вот что: пару месяцев я жил на паранойе, что мой кошелёк заблокировали AML-щики. не мог пользоваться Aave — транзакции ревертились. пришлось дебажить через Tenderly, раскручивать calldata — и оказалось, что всему виной кривая система approvals у USDT:
require(!((_value != 0) && (allowed[msg.sender][_spender] != 0)));
Нельзя изменить ненулевой allowance на другое ненулевое значение. костыль против race condition из 2017 года.
Был сильно удивлён, что крупнейший лендинг + крупнейший стейблкоин не смогли за 8 лет нормально обработать этот кейс у себя. Но с помощью ручного revoke и повторного approve проблема решилась.
