Неограниченное одобрение (Infinite Approval) — это практика программирования смарт-контрактов, позволяющая платформе тратить любое количество ваших монет.
Что такое Неограниченное одобрение?
Неограниченное одобрение — это практика программирования смарт-контрактов, которую часто считают проблематичной. Особенность этой практики в том, что смарт-контракт требует доступ к неограниченному количеству токенов из кошелька пользователя, а не только к тому количеству, которое необходимо.
Печально известным примером смарт-контракта, запрограммированного подобным образом, является контракт биржи Bancor. При первом использовании системы пользователь должен был дать смарт-контракту разрешение на вывод неограниченного количества токенов из своего кошелька.
Смарт-контракты Bancor содержали уязвимость, которая давала возможность хакеру украсть все единицы токена, на управление которыми пользователь дал разрешение. Программисты Bancor заметили уязвимость до того, как злоумышленникам удалось украсть токены. Также они модифицировали системы, чтобы запрашивать одобрение только на необходимое количество токенов. Разработчики упредили «кражу» средств пользователей, чтобы вернуть их позже во избежание взлома.
После дискуссий вокруг Bancor выяснилось, что неограниченное одобрение — очень популярная практика среди программистов DeFi приложений. Популярные децентрализованные приложения Compound, Uniswap, bZX, Aave, Kyber и dY dX имеют неограниченные или очень большие одобрения, как показало исследование, проведенное исследователем криптокошелька ZenGo.
Поставщик ликвидности может предоставить пул ликвидности с $5,000 Эфира и $5,000 децентрализованного стейблкоина DAI, привязанного к доллару США, чтобы разрешить торговлю между ними. Таким образом, при каждой сделке с ETH/DAI поставщик ликвидности будет получать компенсацию за то, что профинансировал данный пул.