Атака Denial-of-Service. Часть 3
Как протокол обрабатывает токены с функцией черного списка?
Уточнение: Вы учитываете последствия использования токенов (например, USDC и подобных), которые могут вносить пользовательские адреса в черный список?
Это гораздо более сложный вопрос, который имеет огромное значение в современном мире регулируемых стейблкоинов. Некоторые токены имеют функцию черного списка. Это означает, что центральный орган владеющий токеном может заморозить или полностью заблокировать использование токена для определенных адресов.
Почему это потенциальная бомба замедленного действия?
Представьте себе контракт сообщества, в котором друзья, члены семьи или инвестиционные партнеры объединяют свои токены в «группу стейкинга». Звучит кооперативно и эффективно, не так ли? Каждому члену назначается процент вознаграждения в зависимости от его вклада.
Но вот, где дело становится опасно интересным: что произойдет, если только один член вашей стейкинг-группы попадет в черный список токена? Возможно, ваш двоюродный брат оказался в каком-то списке регулирующих органов, или адрес вашего друга был помечен из-за какой-то совершенно не связанной с этим транзакции. Для остальных членов группы это не имеет большого значения, верно? Неверно!
Когда ваша группа пытается вывести свои вознаграждения, вся транзакция терпит крах! Почему? Потому что контракт пытается распределить вознаграждения всем участникам в рамках одной транзакции. Если один перевод не удается, вся операция отменяется! Совокупные токены вашей группы на сумму 100 ETH? Полностью заблокированы! Ваши запланированные выводы? Невозможны! И все из-за того, что один из участников попал в черный список, что может не иметь никакого отношения к вашей стейкинговой деятельности!
Знаете, что еще хуже? Обычно нет возможности удалить члена, занесенного в черный список, или перераспределить доли. Средства группы фактически замораживаются до тех пор, пока черный список токенов не будет обновлен — а это может никогда не произойти, если занесение в черный список было сделано по регуляторным причинам.
Это не теоретическая проблема — это происходит в реальных контрактах сегодня! Единственная точка отказа, затрагивающая сразу нескольких пользователей. Механизм коллективного наказания, о котором никто не просил! Страшно, не правда ли?
Вот как это выглядит в коде:
Post #1445
637
- 🐳 1