Шесть классов ошибок опустошают биржи — у каждого есть известное решение.
Контракт переводит средства ДО обновления баланса. Вредоносный получатель снова вызывает вывод, пока старый баланс ещё записан, и выкачивает хранилище за одну транзакцию.
Атакующий берёт огромный капитал внутри одной транзакции, гнёт протокол (голосование, цена пула, залог), забирает прибыль и возвращает заём — атомарно. Своих денег не нужно.
Если цена берётся из тонкого пула или одной ленты, один крупный обмен двигает её и ликвидирует честных пользователей. Логика исправна — ошибка во входной цене.
Два запроса на вывод проходят проверку баланса до списания. Оба успешны по одному балансу — двойной расход. Та же форма у возвратов и бонусов.
Ключи горячего кошелька, токены вывода и админ-пароли утекают через JS-бандлы, публичные .env, логи CI и чаты поддержки. Один утёкший ключ = целая очередь выплат.
Проверка по селфи, повторное использование документов и гонки в автомате верификации дают одному человеку много аккаунтов — для отмывания или накрутки.
Гонки при выводе и утечка ключей. Скучные, вне кода, платят мгновенно.
Нет. Окна TWAP добавляют максимум одну блоковую задержку — для пользователя незаметно, для атомарной манипуляции решающе.