Информационные технологии и интернет
Июль 2026
Создали аналог Polymarket в мире автогонок: пользователи покупают и продают контракты на пилотов Формулы-1, а цена контракта считается по открытой формуле и меняется после каждой сессии уик-энда.
Клиент пришёл с идеей платформы для ставок на события в мире Формулы-1. Аудитория понятная: болельщики, готовые поспорить на исход гонки, плюс пользователи Telegram с интересом к трейдингу.
Проблема в том, что ставки как продукт тянут за собой лицензирование, возрастные ограничения и правила площадок. Mini App со ставками внутри Telegram живёт недолго.
Значит, нужно было сохранить то, ради чего люди приходят, и убрать то, из-за чего продукт закрывают.
Механику переформулировали. Вместо ставки на исход гонки пользователь покупает контракт на пилота. Цена контракта равна рейтингу пилота в системе, рейтинг меняется после каждой сессии, контракт можно продать в любой момент.
Азарт остался: угадал, что пилот пойдёт вверх, купил дёшево и продал дорого. Ставки исчезли: пользователь владеет активом вместо прогноза на событие.
Ближайший понятный ориентир здесь Polymarket, площадка торговли контрактами на исходы событий. Мы собрали ту же идею внутри одного вида спорта и внутри Telegram.
Дальше из этой формулировки выросли все требования:
Рейтинг должен работать круглый год. Сезон Формулы-1 идёт с марта по декабрь, а продукт между гонками простаивать не может.
Расчёты должны быть прозрачными. Если цена контракта меняется по непонятному правилу, пользователь решит, что его обманывают.
Рейтинг нельзя строить только на результатах гонок. Иначе три пилота из топа собирают всё внимание, а остальные двадцать не интересны никому.
Собрали Mini App в Telegram: пилоты, карточки с графиками, покупка и продажа контрактов, портфель, лидерборды, расписание гонок.
Вывели формулу рейтинга из трёх источников с настраиваемыми весами.
Сделали таблицы начисления очков отдельными для каждого типа сессии и вынесли их в админку.
Написали смарт-контракты на TON и подключили кошельки через TonConnect.
Добавили голосование за пилота через Telegram Stars.
Сделали бота с двуязычными уведомлениями о сессиях.
Главное решение проекта лежит в формуле рейтинга. Он складывается из трёх нормированных компонентов с настраиваемыми весами: спортивные очки, голоса из тематических каналов, голоса за Telegram Stars. По умолчанию вес спорта 0,5, каналов и Stars по 0,25.
Каждый компонент нормируется по максимуму среди всех пилотов и ограничивается диапазоном от нуля до единицы. Итог складывается с весами. Так ни один источник не может перевесить остальные из-за разницы масштабов: очки измеряются десятками, голоса тысячами.
Зачем понадобились два неспортивных компонента.
Голоса из каналов дают пилотам популярность вне очковой зоны. У болельщика есть любимый гонщик, редко попадающий в топ-10, и теперь его поддержка влияет на цену контракта.
Голоса за Stars добавляют то же самое, но подкреплённое деньгами, и заодно дают платформе прямой доход. Пользователь платит Stars, голос записывается, рейтинг пилота растёт.
Веса настраиваются из админки. Если окажется, что голоса перекашивают рынок, баланс правится без релиза.
Фэнтези-лига обычно устроена так: игрок собирает состав перед туром, получает очки по результатам и ждёт следующего тура. Состав заморожен, выйти из него нельзя.
Здесь механика биржевая. Контракт продаётся в любой момент, цена видна постоянно, прибыль и убыток считаются на лету. Это ближе к торговому терминалу, чем к турнирной таблице.
Разница принципиальная для удержания. В фэнтези-лиге у игрока одно решение в неделю. Здесь решение доступно всегда: цена сдвинулась после квалификации, можно зафиксировать прибыль до гонки.
Формула упирается в проблему пустых данных. Новичок в чемпионате не набрал очков, его никто не знает, за него не голосуют. Рейтинг равен нулю, цена контракта нулевая, покупать бессмысленно.
Для таких случаев есть стартовый рейтинг. Пока у пилота нет ни очков, ни голосов, рейтинг берётся из него. Как только появляются реальные данные, формула перехватывает управление.
Пересчёт рейтинга дёргается после каждой гонки, там много источников данных и внешний API Формулы-1. Любой сбой в этой цепочке остановил бы пересчёт цен, а вместе с ним торговлю.
Поэтому вызов пересчёта рейтинга обёрнут так, что его отказ не роняет ценообразование. Цены пересчитаются по спортивным очкам, рейтинг догонит позже. Торговля продолжается в любом случае.
Гоночный уик-энд состоит из нескольких сессий: свободные заезды, квалификация, спринт, спринт-квалификация, гонка. Если начислять очки только за гонку, продукт оживает раз в неделю на два часа.
Мы сделали отдельную таблицу начисления для каждого типа сессии. Таблицы лежат в конфигурации и правятся из админки: можно поднять вес квалификации, добавить очки за свободные заезды, обнулить спринт.
Рейтинг обновляется несколько раз за уик-энд. Цена контракта живёт с пятницы по воскресенье, вместо одного вечера воскресенья.
У биржи с небольшим числом участников есть очевидная уязвимость: группа пользователей скупает контракт малоизвестного пилота, разгоняет цену и выходит, оставляя остальных с подорожавшим активом без причины.
Формула рейтинга работает против этого по устройству. Цена привязана к внешним данным: результатам сессий и голосам, помимо объёма торгов. Спортивная часть с весом 0,5 приходит из официальных результатов и не поддаётся влиянию игроков вообще.
Голосовая часть ограничена нормировкой: вклад любого источника упирается в потолок независимо от того, сколько голосов собрано. Скупка голосов за Stars поднимает рейтинг до предела своего веса и дальше не двигает цену.
Расчёты идут через TON. Смарт-контракты хранят владельцев контрактов, проводят покупку и продажу, удерживают комиссию платформы. Кошельки подключаются через TonConnect, поддерживаются распространённые приложения.
Контракты покрыты тестами в песочнице TON: сценарии покупки, продажи и комиссии проверяются до выкатки, потому что ошибка в контракте на блокчейне правится дорого.
Голос за пилота оплачивается через Telegram Stars. Пользователь нажимает кнопку в карточке пилота, получает счёт, оплачивает, голос записывается.
Техническая деталь, стоившая отдельного решения: счёт создаётся прямым обращением к Bot API из бэкенда, минуя библиотеку бота. Иначе бэкенд и бот импортировали бы друг друга по кругу, и приложение просто не стартовало бы.
Аудитория Формулы-1 международная, поэтому уведомления о сессиях приходят на языке пользователя. Язык берётся из данных Telegram при входе и сохраняется в профиле.
Бот группирует получателей по языку и рассылает соответствующую версию сообщения, вместо отправки каждому по отдельности.
Мелочь, попавшая в требования и решённая отдельно: поиск по имени пилота работает с ошибками пользователя. Латиница вместо кириллицы, опечатка, инициалы, транслитерация.
Причина в аудитории. Имена пилотов Формулы-1 пишут по-разному даже болельщики: Ферстаппен, Verstappen, Ферстапен. Точный поиск здесь отсекал бы половину запросов.
Всё, что влияет на экономику, вынесено в админку: веса компонентов рейтинга, таблицы очков по сессиям, стартовые рейтинги пилотов, цена голоса за Stars, комиссия платформы, учёт голосов из каналов.
Логика простая. Экономика игры настраивается по ходу: первые недели после запуска показывают, что перекошено. Если каждая правка баланса требует разработчика и релиза, настройка растягивается на месяцы.
Отдельно сделана публикация снимков рейтинга и история его изменений, чтобы пользователь видел динамику цены помимо текущего значения.
Клиент получил работающую платформу в Telegram: торговлю контрактами на пилотов, портфель с прибылью и убытком, лидерборды, расписание гонок, графики цен, реферальную механику.
Продуктовая задача решена: азарт и механика спора об исходе гонки сохранены, признаков ставок в продукте нет. Пользователь покупает и продаёт актив с ценой по открытой формуле.
Рейтинг работает круглый год и не зависит от календаря гонок: между сезонами его держат голоса болельщиков.