Как один баг в боте стоил владельцу коллекции ножей на $50 000
В мире киберспорта и коллекционирования виртуальных предметов иногда случаются истории, от которых кровь стынет в жилах. Одна из таких произошла в 2023 году с владельцем внушительной коллекции скинов CS:GO, которого мы будем называть Алексом. Он попросил не раскрывать его настоящее имя после случившегося.
Алекс был не просто игроком, а настоящим энтузиастом трейдинга. За пять лет он собрал коллекцию из больше двухсот ножей, среди которых были настоящие жемчужины: Karambit Fade Factory New, M9 Bayonet Crimson Web с редким паттерном, StatTrak Butterfly Knife Doppler Sapphire. Общая стоимость инвентаря превышала $80 000, что делало его одним из серьезных игроков на рынке скинов.
Как все начиналось
Алекс, как и многие опытные трейдеры, использовал торгового бота для автоматизации сделок. Это стандартная практика в сообществе: боты позволяют обрабатывать десятки предложений в день, когда ты спишь или занят работой. Он выбрал решение от известного разработчика, которое проверил на небольших суммах и остался доволен.
Бот работал по простому алгоритму: анализировал входящие trade-офферы, сравнивал рыночную стоимость предлагаемых и запрашиваемых предметов, и если разница была в пределах заданного коридора (обычно ±5%), автоматически принимал сделку. Казалось бы, что может пойти не так?
Роковое обновление
В конце августа 2023 года разработчик бота выпустил обновление, которое обещало улучшенную интеграцию с популярными маркетплейсами и более точную оценку цен. Алекс, как ответственный пользователь, установил апдейт в тот же день. Первые несколько дней все работало штатно: бот обрабатывал сделки, приносил небольшую, но стабильную прибыль.
Проблема скрывалась в одной строке кода. При парсинге цен с одного из маркетплейсов разработчик добавил новую функцию, которая должна была учитывать комиссию площадки. Но из-за опечатки в математическом операторе вместо вычитания комиссии бот умножал цену на коэффициент комиссии.
Звучит абстрактно? Вот конкретный пример: если нож стоил $1000, а комиссия составляла 7% (0.07 в коде), то правильная логика должна была посчитать $1000 - $70 = $930. Но из-за бага получалось $1000 × 0.07 = $70. То есть дорогие ножи бот оценивал в десятки раз дешевле реальной стоимости.
Катастрофа
Утром 4 сентября Алекс проснулся от серии уведомлений на телефоне. Steam Guard сообщал о десятках принятых обменов. Первая мысль была: наконец-то удачный день, много выгодных сделок. Но когда он открыл инвентарь, сердце ушло в пятки.
За ночь бот принял 47 обменов. В каждом из них Алекс отдавал ценные ножи стоимостью от $500 до $3000, получая взамен дешевые скины за $10-50. Karambit Fade ушел за набор случайных граффити. M9 Bayonet Crimson Web обменяли на потрепанный AK-47 Safari Mesh. Butterfly Knife Sapphire, его гордость, за которую он отказывался брать меньше $4500, исчез в обмен на три дешевых стикера.
Общий ущерб составил ровно $52,340 по рыночным ценам на тот момент. В инвентаре остались только менее ценные предметы, которые случайно не попали под критерии бота, и куча мусорных скинов общей стоимостью около $800.
Попытки исправить ситуацию
Первым делом Алекс обратился к разработчику бота. Тот был в шоке от произошедшего и сразу признал ошибку в коде. Баг действительно был в обновлении: разработчик перепутал оператор при рефакторинге, и никто не заметил этого в тестировании, потому что проверяли только на дешевых предметах, где разница была не так очевидна.
Но признание вины не вернуло предметы. С юридической точки зрения ситуация была в серой зоне. Пользовательское соглашение бота содержало стандартный дисклеймер о том, что разработчик не несет ответственности за финансовые потери. К тому же все сделки были технически легитимными: бот работал от имени Алекса, обмены прошли через официальную систему Steam, получатели не делали ничего противозаконного.
Алекс попробовал связаться с некоторыми получателями через друзей и знакомых в трейдерском сообществе. Из 47 человек откликнулись только трое. Один вернул нож стоимостью $650, сказал, что понял, что что-то не так, и не хочет наживаться на чужой беде. Двое других предложили выкупить предметы обратно, но по текущей рыночной цене. Для Алекса это было невозможно, у него просто не было таких денег.
Обращение в поддержку Steam тоже не принесло результатов. Политика Valve четкая: они не отменяют сделки, совершенные через официальную систему обмена, если не было взлома аккаунта или нарушения правил сообщества. Использование торгового бота не нарушение, и все обмены были подтверждены через мобильный аутентификатор Алекса.
Последствия
Разработчик бота выпустил экстренное исправление через несколько часов после обращения Алекса и разослал уведомления всем пользователям. Оказалось, что Алекс был не единственной жертвой, хотя и понес самые большие потери. Еще четверо пользователей сообщили о похожих проблемах, но их суммарный ущерб составил около $8000.
В качестве компенсации разработчик предложил полный возврат стоимости подписки на бота (около $200 в случае Алекса) и годовое бесплатное использование. Также он запустил краудфандинг среди своих пользователей, но собрал только $3400, недостаточно даже для покупки одного из утраченных топовых ножей.
Алекс был сломлен морально. Он не мог себе позволить просто списать $50 000. Это были деньги, вложенные годами, часть из них была в кредит. Он попытался восстановить коллекцию, но рынок уже изменился, цены на редкие скины выросли после известного обновления CS2.
Уроки для трейдеров
Эта история стала предупреждением для всего сообщества. Несколько важных выводов:
Никогда не давайте боту полный доступ к ценным предметам. Создайте отдельный аккаунт-хранилище для самых дорогих скинов и используйте для торговли только рабочий инвентарь с ограниченной стоимостью.
Проверяйте обновления на тестовом окружении. Если вы серьезный трейдер, создайте тестовый аккаунт с дешевыми предметами и дайте новой версии бота поработать день-два, прежде чем обновлять основную систему.
Устанавливайте лимиты. Многие современные боты позволяют задать максимальную стоимость сделки или максимальное количество обменов за период. Используйте эти функции.
Регулярно проверяйте логи. Не полагайтесь на автоматизацию полностью. Просматривайте историю сделок хотя бы раз в день, чтобы вовремя заметить аномалии.
Диверсифицируйте риски. Не держите все яйца в одной корзине. Распределяйте ценные предметы между несколькими аккаунтами, маркетплейсами и методами хранения.
Что стало с Алексом
Через несколько месяцев после инцидента Алекс вернулся к трейдингу, но уже в гораздо меньших масштабах. Он продал все оставшиеся предметы, выплатил часть долгов и начал заново, но теперь работает только вручную, без ботов. По его словам, он больше никогда не будет доверять автоматизации в вопросах, где ставка десятки тысяч долларов.
Разработчик бота продолжил свою работу, но его репутация серьезно пострадала. Многие пользователи ушли к конкурентам, а в сообществе до сих пор упоминают «сентябрьский баг» как напоминание о том, что может случиться при неосторожном использовании автоматизации.
История Алекса это жестокий урок о том, что в мире виртуальных ценностей, где активы можно потерять за секунды, а вернуть практически невозможно, даже самые продвинутые инструменты могут обернуться против вас. Один символ в коде, одна опечатка, и многолетний труд превращается в пыль.