Криптоакадемия Учебный материал

Взлом X100: как проверить токен X и ликвидность после кражи $4,85 млн

Редакция BarbadosNews Опубликовано 18 мин чтения
Telegram ↗
Иллюстрация к новости: Взлом X100: как проверить токен X и ликвидность после кражи $4,85 млн

24 октября 2026 года у проекта X100 Global на Ethereum произошла атака на систему управления. Злоумышленники получили большинство голосов в Senate, заставили казначейский контракт обменять сотни тысяч токенов X на почти нулевую сумму, а затем забрали ликвидность из основного рынка X/USDT. По результатам on-chain расследования Bitquery, из торгового пула было выведено 4 846 108 USDT в двух операциях. Это и есть округлённые $4,85 млн из заголовков.

Для держателя X главная проблема не сводится к красной свече на графике. Кошелёк или агрегатор может продолжать показывать оценку портфеля в долларах, но при попытке обмена на Uniswap выясняется, что встречных USDT почти нет. Рыночная оценка токенов и сумма, которую реально получится получить за них, - разные величины.

Ниже разбираем механизм атаки, приводим проверенные адреса токена и контракта Freezer, а затем пошагово показываем, как изучить ликвидность и котировку до подтверждения обмена. Факты о резервах и распределении средств основаны на снимке блокчейна, который исследователи проверили 25 октября; это не текущая котировка на 27 октября. Статья носит образовательный характер и не призывает покупать или продавать X.

Что произошло с X100: короткий ответ владельцу токенов

  • Проблема была в управлении протоколом. Места в Senate зависели от количества X, заблокированных в контракте Freezer. Двух мест из трёх было достаточно, чтобы провести решение.
  • Первый участник атаки использовал flash loan, временно купил и заморозил достаточно X для двух мест и сразу выполнил вредоносное голосование.
  • Казначейство продало 400 000 X за 35,68 USDT в специально подготовленный малый пул PancakeSwap. Затем часть полученных X была продана в основном пуле Uniswap.
  • Денежный ущерб - около 4,85 млн USDT. Основная сумма пришлась на первую операцию; второй злоумышленник использовал тот же конструктивный недостаток.
  • Прямого массового списания X с обычных кошельков расследование не установило. Основной удар по держателям - падение цены и почти полное исчезновение доступного встречного актива.
  • Заблокированные пользователями X и ликвидные X - не одно и то же. Программные ограничения Freezer защищали пользовательские замороженные остатки от таких предложений, но не гарантировали ни ликвидности, ни рыночной стоимости.

Хронология 24 октября: три операции вместо одной «кражи из кошелька»

В расследовании Bitquery восстановлены несколько отдельных действий. Два первых эпизода принесли злоумышленникам USDT, третий - преимущественно токены X. Поэтому формулировка «три атаки на $4,85 млн» не означает три независимых вывода одинаковых сумм.

Время (UTC) Что произошло Результат по данным Bitquery
14:11:47 Flash loan из Aave, захват двух мест Senate, продажа 400 000 X казначейством в подготовленном пуле Около 4 749 726 USDT
14:35:59 Второй участник использовал Morpho, новые управляющие контракты и операции с депозитами пула Около 96 382 USDT и 9 895 X
14:40:47 Третий адрес вызвал доступные всем функции управляющих контрактов второго участника Около 549 916 X и 1 909 USDT
25 октября, 04:19 Снимок состояния, проверенный исследователями на блоке 26 267 255 Резервы, места Senate и остатки актуальны именно для этого момента

Основные 4 749 726 и 96 382 USDT в сумме дают 4 846 108 USDT. Не смешивайте эти денежные потоки с числом украденных или оставшихся у атакующих токенов X: для неликвидного актива умножение количества на последнюю цену может создать фиктивную «стоимость», которую невозможно получить при продаже.

Как работал Senate и почему два голоса решали всё

X100 использовал необычную модель управления. Владельцы могли замораживать токены X в контракте Freezer на один, три или пять лет. Три адреса с наибольшим замороженным объёмом занимали места в Senate. Кандидату требовалось иметь замороженные X и уплатить взнос 100 X; принятие решений зависело от голосов не всех держателей, а большинства из трёх мест.

Это означало, что для контроля над казначейскими действиями хватало двух голосов. Исследователи установили: атакующий создал два вспомогательных контракта и заблокировал в каждом немного больше X, чем было у действующего участника, занимавшего нужное по рейтингу место. Преимущество составило всего 0,000001 X - минимальную учитываемую долю токена. Оба контракта сразу оказались в тройке.

Особенно опасным было отсутствие обязательной задержки между голосованием и исполнением предложения. Новый обладатель большинства мог не только внести изменение, но и запустить его в той же транзакции. Длительная заморозка X не означала длительную защиту от мгновенного изменения состава Senate.

Flash loan: как временные деньги превратились в права управления

Flash loan, или мгновенный заём, выдаётся в пределах одной транзакции блокчейна. Его необходимо вернуть с предусмотренными условиями до завершения этой транзакции; иначе действия откатываются. При этом заёмщику обычно не нужен стандартный долгосрочный залог. Сам инструмент не является взломом: уязвимость возникает, если другой протокол позволяет использовать кратковременно приобретённые активы для немедленного принятия критических решений.

  1. Атакующий занял USDT через Aave и купил на них достаточно X.
  2. Распределил X между двумя контролируемыми контрактами и занял большинство мест Senate.
  3. Создал небольшой собственный торговый пул, который мог использоваться как получатель казначейского обмена.
  4. Внёс предложение о продаже X, установил минимально допустимую выручку в ноль и получил два голоса «за».
  5. Сразу исполнил предложение, использовал полученные токены X для вывода USDT из настоящего пула и вернул flash loan.

Проблема была не в том, что Aave «перевёл деньги хакеру без проверки». Мгновенный заём обеспечил атакующему краткосрочный капитал, а слабые правила X100 превратили временную покупку X в полномочия распоряжаться казначейским активом. В более защищённых системах применяются снимки права голоса до начала предложения, временные задержки исполнения и ограничения допустимых параметров операций.

Почему 400 000 X превратились всего в 35,68 USDT

Здесь легко перепутать два разных пула. Непосредственно казначейская продажа была проведена не в основном пуле Uniswap, а в новом малом пуле PancakeSwap, созданном атакующим. В нём находилось около $100 стартовой ликвидности. Контракт Freezer проверял существование указанного пула, но не требовал достоверной рыночной цены; нижнюю границу выручки автор предложения имел возможность установить равной нулю.

В результате Freezer отдал 400 000 X и получил всего 35,68 USDT. Для сравнения исследователи приводят оценку этих X по цене до атаки около $20,3 млн, но это лишь арифметика по котировке, не доказательство, что весь такой объём можно было бы продать за эту сумму. Основной пул содержал намного меньше встречного актива, чем требовалось бы для продажи сотен тысяч токенов по прежней цене.

После получения контроля над X атакующий извлёк токены из своего малого пула и продал часть X в настоящем рынке X/USDT на Uniswap. Именно оттуда ушли основные USDT. По уточнённым данным Bitquery, первый участник продал в реальном пуле приблизительно 131 703 X; ещё около 268 284 X остались в его атакующем контракте. Остаток нельзя автоматически оценивать по той цене, которую показывал график до обрушения.

Куда ушли USDT и что ещё известно о средствах

Исследователи отследили, что первый участник вскоре обменял полученные USDT на ETH через UniswapX. Эквивалент составил примерно 2 022,86 ETH, распределённых между пятью адресами. В проверенном ими состоянии эти средства не двигались; это утверждение относится к моменту наблюдения, а не гарантирует, что кошельки по-прежнему неподвижны сегодня.

Второй участник, получивший около 96 тыс. USDT, конвертировал средства в ETH и перевёл их через сервис ChangeNOW. Третий адрес вывел в основном X и небольшое количество USDT, воспользовавшись управляющими контрактами, оставленными вторым участником. Сам по себе маршрут переводов не доказывает личности владельцев кошельков и не подтверждает участия названных маршрутизаторов или сервисов в атаке.

Если в соцсетях опубликован «адрес хакера», сравнивайте полный адрес с первоисточником, а не первые и последние четыре символа. Короткие совпадающие фрагменты иногда создают умышленно в схеме address poisoning.

Почему цена X упала более чем на 96% - и почему этого показателя недостаточно

По данным страницы X100 на CoinMarketCap, исторический максимум около $54,76 был отмечен 24 октября, а отображаемая на момент подготовки материала цена находилась около $1,78, то есть более чем на 96% ниже максимума. При этом площадка показывала нулевой суточный торговый объём. Это полезное описание масштаба падения, но не обещание, что по $1,78 удастся продать сколько угодно X.

Цена, основанная на последней маленькой сделке, отличается от глубины доступного спроса. Если в пуле осталось почти ноль USDT, пользователь может видеть в портфеле условные «$1 780» за тысячу X, а в интерфейсе обмена получать котировку на считанные центы - либо не получить корректный маршрут вовсе. При этом расчётная стоимость всех выпущенных токенов может по-прежнему выглядеть внушительно.

Bitquery указывает, что перед атакой в основном пуле накопилось около $4,75 млн USDT, в значительной степени от покупок участников Senate. На снимке 25 октября в нём оставалось менее 200 X и примерно $2. Нельзя выдавать эти исторические резервы за состояние пула на 27 октября: для решения об обмене требуется свежая проверка блокчейна и живой котировки.

Цена в кошельке и выручка от обмена: простое сравнение

Представим условный пример, не являющийся реальной котировкой X100: в портфеле показано 2 000 X по $1,50, поэтому интерфейс оценивает их в $3 000. Но этот расчёт не означает, что на рынке кто-то готов обменять все 2 000 X на 3 000 USDT. Если в доступных маршрутах нет такого объёма встречной ликвидности, заявка значительно изменит цену или окажется неисполнимой.

На автоматизированных рынках большая заявка сама влияет на конечный курс. Оценка «баланс × последняя цена» игнорирует движение цены по ходу сделки, комиссию пула, маршрутизатора, газ Ethereum и возможные сборы конкретного токена. В стандартном интерфейсе предварительного обмена гораздо важнее поле «Вы получите» и фактически установленный минимальный выход.

Для общего объяснения устройства автоматических пулов есть руководство BarbadosNews «Что такое пул ликвидности». В случае X100 не пытайтесь вычислить гарантированный курс по упрощённой формуле для обычного пула: конкретная версия протокола, активные ценовые диапазоны и маршрут обмена могут менять механику расчёта.

Где найти официальный адрес токена X и проверить его на Etherscan

Символ X не уникален: в Ethereum могут существовать другие активы с таким же тикером. Адрес контракта важнее названия, картинки и текста в поисковой выдаче. В расследовании Bitquery указан следующий контракт X100 в основной сети Ethereum:

Токен X: 0x100a2c7f45fd48e217fdce72e658dc78fd43a100.

Откройте страницу X на Etherscan. Проверьте сеть Ethereum Mainnet, адрес в строке поиска, вкладки Token Transfers, Holders и Contract, а также по возможности сведения об исходном коде и полномочиях. Наличие проверенного кода само по себе не означает, что токен безопасен или ликвиден.

  1. Скопируйте полный адрес контракта из расследования, а не из комментария или рекламы.
  2. Вставьте адрес вручную в адресную строку поиска Etherscan и убедитесь, что открыта нужная сеть.
  3. Сверьте адрес с токеном в кошельке и в интерфейсе Uniswap, не полагайтесь только на обозначение «X».
  4. Если вам прислали «новый контракт после взлома», ищите подтверждение через несколько официальных каналов. Неподтверждённый «миграционный» токен может быть подделкой.

Разобраться в различиях адреса, токена и программы поможет материал «Что такое смарт-контракт». Для просмотра публичной страницы Etherscan не требуется подключать кошелёк и тем более вводить seed-фразу.

Как проверить основной пул X/USDT и остатки ликвидности

В качестве основного рынка исследование Bitquery называет пул X/USDT на Uniswap по адресу 0x0d85edd90c94053fc5997551b1baa8a77aa02fa0. Откройте его адрес в обозревателе Ethereum либо изучите его по адресу контракта через проверенный сервис анализа пулов. Адрес казначейского Freezer другой; путать их нельзя.

Последовательность проверки следующая: выясните, действительно ли это контракт пула, определите активы в паре, посмотрите свежие события обменов и добавления/изъятия ликвидности, затем оцените текущий USDT-объём и доступность диапазонов цены. Простого просмотра общего баланса по адресу может быть недостаточно: у некоторых версий Uniswap ликвидность распределена по диапазонам и не вся доступна для любой цены.

Сравнивайте два времени: дату последней сделки на графике и время или блок, которому соответствуют резервы. Старый скриншот с миллионами USDT ничего не говорит о том, сколько стейблкоинов можно получить сейчас. Если после атаки появились другие пулы с похожими тикерами, не считайте их официальными без проверки токенов, цепочки и источника ликвидности.

Тот же принцип работает и на других децентрализованных биржах: торговая пара - это конкретный набор контрактов и резервов, а не гарантия цены из агрегатора.

Схема проверки продажи токена X: оценка в кошельке не равна реальной выручке USDT; нужно проверить Price Impact, Slippage и Minimum Received
Редакционная схема: цена портфеля - оценка; реальная сумма получения зависит от доступного маршрута, ликвидности и параметров сделки. Изображение не показывает текущие резервы X100.

Проверка котировки на Uniswap без отправки транзакции

Для предварительной оценки не нужно сразу продавать X. Откройте интерфейс только с официального домена app.uniswap.org, выберите Ethereum и укажите токен по полному адресу контракта. В поле получаемого актива выберите правильный USDT в Ethereum; стейблкоины с таким же названием в других сетях не эквивалентны ему автоматически.

  1. Введите реальное количество X, которое планируете оценить, например весь баланс. Если нет котировки, не подписывайте случайные действия ради её появления.
  2. Посмотрите ожидаемые USDT. Это предварительный расчёт конкретного маршрута, а не цена из портфеля.
  3. Раскройте подробности. Найдите Price Impact, выбранный маршрут, торговые и сетевые комиссии, Slippage и минимум к получению. Названия зависят от версии приложения.
  4. Сравните небольшую и полную сумму. Если при удвоении объёма предполагаемая выручка растёт намного меньше чем вдвое, глубина рынка недостаточна.
  5. Не нажимайте Approve или Swap для проверки графика. Просмотр предложения сам по себе не должен требовать выдачи бессрочного разрешения неизвестному контракту.

Маршрут агрегатора может использовать несколько пулов и менять их без предупреждения. Даже корректная предварительная котировка способна устареть до подтверждения сделки. Поэтому последний экран кошелька - обязательная контрольная точка.

Price Impact, Slippage и Minimum Received: три разных показателя

Price Impact - влияние размера вашей сделки на цену. Чем меньше доступная ликвидность и больше объём, тем ощутимее это влияние. В документации Uniswap Labs оно отдельно противопоставлено проскальзыванию.

Slippage - расхождение между ожидаемой котировкой и фактическим результатом из-за изменения рынка до или во время исполнения. Настройка Slippage Tolerance задаёт, насколько неблагоприятное отклонение пользователь готов допустить по отношению к предложенной котировке. Она не восполняет отсутствующие резервы и не устраняет уже заложенный в котировку высокий Price Impact.

Minimum Received - минимальный выход, предусмотренный условиями конкретной операции. Он важен потому, что именно этот показатель показывает предел допустимого ухудшения результата при исполнении; смотрите значение в итоговом подтверждении, а не по памяти из предыдущего экрана.

Показатель На какой вопрос отвечает Почему важен для X
Оценка портфеля Сколько токены условно стоят по выбранной цене? Может игнорировать нехватку USDT
Price Impact Насколько ваша заявка сдвигает цену? При тонком пуле может быть огромным
Slippage Tolerance Какое дополнительное ухудшение относительно котировки допускается? Высокая настройка увеличивает риск плохого исполнения
Minimum Received Какой минимум в USDT предусмотрен для результата? Помогает оценить худший допустимый исход по условиям сделки

Подробный разбор с примерами - в статье BarbadosNews «Проскальзывание криптовалюты».

Почему повышение проскальзывания до 20-50% не вернёт ликвидность

Допустим, интерфейс оценивает обмен в условные 10 USDT, потому что доступный пул уже крайне мал. Установка 30% Slippage не превратит эту котировку в сотни или тысячи долларов. Она лишь потенциально позволит получить ещё меньше относительно текущих 10 USDT, если обмен вообще доступен. Никакой процент не создаст новые USDT в пуле.

Кроме того, высокая допустимая погрешность может повысить риск неблагоприятного исполнения из-за внешнего движения цены и действий других участников рынка. Если появляется сообщение о большом Price Impact, его нельзя «исправить» одним изменением допуска. Официальная справка Uniswap предупреждает, что чрезмерно высокий slippage означает возможность получить заметно меньше предварительно рассчитанного количества.

Если операция не проходит при стандартных параметрах, сначала установите причину: отсутствие маршрута, недостаточный USDT-резерв, особые правила токена, газ, разрешение или движение цены. Углублённое объяснение разных типов отказа есть в материале «Honeypot: как проверить токен на скам». Проблема X100 в расследовании связана прежде всего с управлением и ликвидностью; называть токен honeypot без самостоятельного доказательства нельзя.

Что случилось с замороженными X в контракте Freezer

Заморозка X в Freezer и удержание свободных X в обычном кошельке - разные состояния. По описанному Bitquery коду, после любого предложения Freezer должен сохранять не меньше X, чем суммарно заморозили пользователи. Это ограничение помешало управляющим голосованиям напрямую потратить пользовательские заблокированные остатки. На проверенном срезе контракт содержал примерно 12,17 млн X, из них около 171 563 X были пользовательскими замороженными ставками.

Но защита количества токенов не равна защите их цены. Условия заморозки на один, три или пять лет продолжают иметь значение независимо от исчезновения покупательского спроса. Не следует считать, что после атаки пользователь автоматически получил право на досрочное снятие или что замороженные токены можно обменять по прежнему курсу.

Кроме того, злоумышленникам удалось повлиять на Senate; в исследованном состоянии два места оставались у контрактов, вызовы которых не ограничивались владельцем. Это управленческий риск. Одновременно исследователи отметили, что лимит Freezer на размещение X в рынках фактически исчерпан, поэтому тот же способ продать из казначейства дополнительные X был ограничен. Оба вывода относятся к снимку 25 октября и не заменяют проверку последующих транзакций.

Адрес Freezer из расследования: 0x79f35a33fe2813414851c4ae8daeacd14d822a46. Изучить его можно через Etherscan, но не отправляйте туда токены вручную в попытке их «разморозить».

Что делать владельцу X, если обмен не проходит

  1. Не считайте неудачную продажу доказательством взлома кошелька. Сначала проверьте исходный баланс токена, сеть и статус конкретной транзакции.
  2. Сверьте контракт X с адресом в исследовании и убедитесь, что кошелёк не показывает поддельный актив с тем же тикером.
  3. Посмотрите состояние основного пула и реальную котировку. Не ориентируйтесь на оценку всего портфеля в фиатной валюте.
  4. Разберите причину отказа. «Insufficient liquidity», превышение slippage, отменённая транзакция и ошибка approve означают разные проблемы.
  5. Проверьте комиссии и разрешения. Не одобряйте подозрительные контракты ради «спасения» X. Если уже выдали разрешение неизвестному адресу, изучите руководство по отзыву разрешений.
  6. Сохраните доказательства. Хеши операций, дату и время, адрес контракта, адрес кошелька, скриншоты котировок и ссылки на официальные объявления.

Один из разумных шагов - пока не проводить новые рискованные транзакции и наблюдать за проверяемыми обновлениями проекта. Это не рекомендация бессрочно держать токен: решение зависит от индивидуальной ситуации и способности выдержать возможную полную потерю стоимости.

Осторожно: фальшивые компенсации и «разморозка X100»

После резонансных атак появляются сайты с обещаниями вернуть потерянные деньги. Они используют похожие на официальные домены, копируют фирменные изображения и предлагают «проверить право на компенсацию». Ни публикация в X, ни скриншот якобы одобренной программы не являются доказательством. В проверенном Bitquery расследовании упоминалось не подтверждённое проектом on-chain предложение вернуть часть средств за вознаграждение; его нельзя трактовать как официально объявленный план компенсаций.

Особенно опасны просьбы ввести 12 или 24 слова seed-фразы, приватный ключ, подписать непонятный Permit, установить расширение «для восстановления» или заранее отправить USDT за разблокировку. Для проверки публичного баланса такие действия не требуются. Подключение к неизвестному сайту не является обязательным способом узнать, затронуты ли ваши токены.

Проверяйте новости через несколько независимых источников, адреса - по полному совпадению, а разрешения кошелька - отдельно от факта подключения. Учтите, что интерфейс может выглядеть достоверно, хотя его контракт отправляет средства не туда. Общие признаки схемы вывода ликвидности рассмотрены также в статье «Рагпул в криптовалюте»; при этом конкретная атака X100 была связана с захватом управления, а не обязательно с заранее организованным разработчиками rug pull.

FAQ: частые вопросы после взлома X100

Мои токены X в MetaMask или другом кошельке украдены?

Не обязательно. Bitquery описывает захват управления X100 и вывод USDT из торговой ликвидности, а не подтверждённое массовое списание X с обычных адресов держателей. Проверьте остаток по своему публичному адресу в Etherscan и историю событий. Если токены на месте, их рыночная стоимость всё равно могла резко упасть.

Можно ли исправить продажу, установив Slippage 50%?

Нет гарантии. Slippage Tolerance меняет допустимое ухудшение относительно текущей котировки, а не количество USDT в пуле. Слишком большой процент дополнительно увеличивает риск крайне невыгодного исполнения. Сначала выясните Price Impact и минимум получаемого актива.

Пострадали ли замороженные токены в Freezer?

В проверенном коде присутствовало ограничение, не позволявшее управляющим решениям уменьшить остаток Freezer ниже суммы пользовательских замороженных X. Bitquery не установил, что эти заблокированные пользовательские остатки были израсходованы указанными предложениями. Но их цена и возможность будущего вывода зависят от других факторов, включая сроки заморозки.

Вернули ли злоумышленники деньги или объявлена компенсация?

На дату подготовки статьи мы не располагаем подтверждённым официальным механизмом компенсации. Bitquery описал адрес, отправивший атакующему предложение о возврате за вознаграждение, но не смог подтвердить его полномочия. Не переводите средства и не подписывайте разрешения на основании слухов о выплатах.

Означает ли нулевая ликвидность, что X нельзя будет продать никогда?

Нет. Ликвидность может изменяться: провайдеры могут добавить встречные средства, появится другой проверенный рынок или изменятся условия торговли. Однако это лишь возможные сценарии, не обещание восстановления. Текущая способность получить USDT определяется действующей котировкой и ликвидностью во время операции.

Как узнать, что ликвидность восстановилась?

Сверьте актуальные резервы и сделки по подтверждённому адресу пула, затем получите свежую котировку для своего реального объёма. Наблюдайте за Price Impact, итоговой суммой USDT, комиссией и минимумом получения. Один крупный депозит в пул ещё не гарантирует долговременную ликвидность: его могут быстро вывести.

Источники и методика проверки

Критические суммы и адреса приведены по Bitquery, а не самостоятельно рассчитаны BarbadosNews из живой цепочки на момент публикации. Etherscan может ограничивать автоматический доступ к страницам, но публичные хеши и адреса доступны для проверки в обозревателе. Данные пулов, кошельков и цены меняются; прежде чем совершать действие, сверяйте актуальные показатели.

Вывод: сначала найдите реальные USDT, потом решайте вопрос об обмене

Взлом X100 на $4,85 млн - пример того, как мгновенно полученное большинство в DAO превратилось в право отправить казначейские токены на невыгодный обмен. После этого основной рынок лишился почти всех USDT, а видимая цена X перестала быть надёжным ориентиром для продажи значительного объёма.

Владельцу X полезнее последовательно проверить контракт, адрес пула, текущий резерв встречного актива, котировку для своего баланса, Price Impact, Slippage и Minimum Received, чем пытаться получить цену со старого графика. Не повышайте допуск ради обхода тревожного предупреждения и не доверяйте непроверенным «компенсационным» сайтам. Если техническая возможность обмена появится, финансовая целесообразность всё равно требует отдельной оценки.

Материал Криптоакадемии BarbadosNews актуализирован 27 октября 2026 года и предназначен для обучения. Это не финансовая, юридическая или инвестиционная рекомендация.

ПоделитьсяTelegramXFacebook
Автор