Серверный сид и клиентский сид: как на самом деле работает случайность в краше
Серверный сид и клиентский сид это две половины криптографического ключа, который определяет исход краш-раунда. Серверный сид казино генерирует до старта; клиентский приходит от игроков. Ни одна сторона не управляет результатом полностью, и именно их сочетание даёт криптографическую гарантию. Spribe в своё время сделал ход, который выделил Aviator: вместо одного клиентского сида берётся ТРИ (от первых трёх игроков раунда). Структурная разница важна. В этой статье разбираем механику побитово.
- Серверный сид: длинная случайная hex-строка (64 символа для SHA-256, 128 для SHA-512). Сервер казино генерирует её до старта раунда. Хранится приватно до окончания раунда; SHA-хеш сида публикуется до закрытия ставок.
- Клиентский сид: hex-строка от игроков. Spribe (Aviator) берёт три клиентских сида от первых трёх игроков раунда. SmartSoft (JetX) берёт один сид от ставящего игрока. 1win Gaming (Lucky Jet) использует четыре (свой сид игрока плюс три от других живых участников). BGaming берёт один клиентский сид плюс опциональный хеш биткоин-блока для дополнительной энтропии.
- Сиды соединяются через конкатенацию и хеш. Серверный сид + разделитель + клиентский сид(ы) + разделитель + nonce пропускаются через SHA-256 или SHA-512 и дают шестнадцатеричный дайджест. Первые 13 hex-символов дайджеста (Spribe) или первые 8 (большинство остальных) превращаются в дробь h от 0 до 1, которая идёт в формулу краш-множителя.
- Протокол раскрытия гарантирует верифицируемость. После окончания раунда казино публикует исходный серверный сид в открытом виде. Любой может прогнать его через ту же SHA-функцию и проверить, совпадает ли он с предварительно опубликованным хешем. Совпало значит сид был зафиксирован до раунда (binding); не совпало значит казино подменило сид (а это публичное доказательство мошенничества).
- Если оператор не раскрывает сиды после раунда, игра не provably fair, что бы ни говорил маркетинг. Раскрытие это и есть то, что наполняет криптографическое обязательство смыслом; без него у вас только слово казино о том, какой сид использовался. Откажитесь играть в краш на операторах, которые прячут раскрытие сида. Tier 1 операторы с лицензией всегда раскрывают; оффшорные Curacao иногда нет.
Серверный и клиентский сиды это криптографические примитивы, благодаря которым краш-игры становятся provably fair. Большинство статей объясняют их на маркетинговом уровне: «казино берёт сид, вы берёте сид, они соединяются и дают результат», и на этом останавливаются. Маркетинговый уровень верный, но в работе бесполезный. Понимание механики на уровне битов это то, что делает верификацию реальной и оправдывает доверие к схеме. В этой статье мы разбираем сиды детально: как они генерируются, откуда берутся, как соединяются, когда раскрываются и что делать, если раскрытие не происходит.
Зачем такой уровень детализации. Криптографическая гарантия держится на конкретных свойствах сидов: их независимости, непредсказуемости, времени фиксации. Понимание механики отделяет доверие от веры. Вера говорит: «казино запускает честную математику». Доверие говорит: «я могу проверить математику, потому что понимаю, как соединяются входы». Второе устойчиво; первое требует надежды.
Серверный сид: что это и как генерируется
Серверный сид это длинная случайная шестнадцатеричная строка, которую сервер казино генерирует прямо перед каждым раундом. Длина зависит от используемой хеш-функции:
- Для схем на SHA-256 (SmartSoft, BGaming, Turbo Games, Upgaming, InOut Games, 1win Gaming, Pragmatic Play, Evolution, большинство провайдеров): 64 hex-символа, то есть 256 бит.
- Для схем на SHA-512 (Spribe / Aviator, Aviatrix, Pilot): 128 hex-символов, то есть 512 бит.
Способ генерации у провайдеров разный, но укладывается в стандартную криптографическую практику:
- Сервер казино берёт системный источник энтропии (Linux /dev/urandom, Windows BCryptGenRandom или эквивалент), чтобы собрать случайность.
- Эта энтропия идёт в криптографический генератор случайных чисел (CSPRNG), который выдаёт биты, неотличимые от настоящей случайности.
- Выход CSPRNG форматируется как шестнадцатеричная строка нужной длины.
- Результат сохраняется приватно на сервере казино с привязкой к номеру раунда.
Для доверия важны три свойства:
- Непредсказуемость. Сид нельзя предсказать снаружи. Выход CSPRNG вычислительно неотличим от настоящей случайности; даже зная все предыдущие сиды, следующий вы не угадаете.
- Приватность до раскрытия. Сид лежит на сервере до конца раунда. Игроки не видят его, пока ставки открыты; до раунда публикуется только SHA-хеш.
- Фиксация через хеш. Публикация SHA-хеша до раунда связывает казино обязательством: любой раскрытый сид обязан хешироваться в то же значение, иначе расхождение это публичное доказательство мошенничества.
Почему серверный сид генерирует казино, а не третья сторона? По двум причинам: серверная генерация быстра и операционно проста, а схема commit-reveal даёт криптографическую защиту. Генерации казино не нужно быть «trustless», потому что связка «фиксация плюс раскрытие» делает её проверяемой после раунда независимо от того, кто генерировал сид.
Клиентский сид: как игроки добавляют энтропию
Клиентский сид это половина энтропии, которую вносят сами игроки. Кто именно вносит и как, у разных провайдеров отличается; цель структурно одна: не дать казино подобрать серверный сид с нужным исходом, потому что в смесь добавлен вход, которым казино не управляет.
Spribe (Aviator и другие тайтлы Spribe): три клиентских сида. Когда стартует раунд, сервер казино берёт клиентские сиды от первых трёх игроков, поставивших ставку именно в этом раунде. Каждый сид это hex-строка (обычно 32 символа), которую браузер игрока генерирует на стороне клиента при подключении к раунду через браузерные источники энтропии (window.crypto.getRandomValues в современных браузерах). Три сида генерируются независимо тремя независимыми игроками, которые друг друга не знают и не могут договориться (они случайно выбраны из тех, кто оказался в раунде первым).
SmartSoft (JetX и краш-тайтлы SmartSoft): один клиентский сид. Один сид вносит ставящий игрок. Обычно сид выводится из ID аккаунта игрока (захешированного функцией на стороне казино) или из случайной строки, которую игрок может изменить в настройках аккаунта. Схема с одним сидом совпадает со спецификацией Bustabit 2014 года и считается базой для индустрии.
1win Gaming (Lucky Jet, Rocket X, Rocket Queen): четыре клиентских сида. Сид самого игрока плюс три, взятых у случайных других живых участников раунда. Криптографически это похоже на трёхсидовую схему Spribe, но с одним дополнительным независимым входом. Структурно ещё жёстче против манипуляции: успешная атака потребовала бы одновременной компрометации сидов четырёх независимых случайных игроков.
BGaming (Aviamasters, Space XY и другие): один клиентский сид плюс опциональный хеш биткоин-блока. Стандартный SHA-256 с одним клиентским сидом для большинства тайтлов BGaming; в избранных тайтлах добавляется хеш последнего биткоин-блока как дополнительный источник энтропии. Хеш биткоин-блока публично проверяем, привязан ко времени старта раунда и не может быть подменён без компрометации всей сети Bitcoin. Математически это маргинальное улучшение над схемой с одним сидом, но для аудитории, разбирающейся в криптовалютах, это осмысленный сигнал доверия.
Почему Spribe использует три клиентских сида
Решение с тремя клиентскими сидами это то, что делает provably-fair-схему Aviator структурно строже, чем база жанра. Логика такая.
Когда клиентский сид один (SmartSoft, BGaming, большинство провайдеров), у вносящего сид игрока есть теоретическое (криптографически ограниченное) влияние на исход. Казино обязано зафиксировать серверный сид до того, как узнает клиентский, но игрок, который умеет предсказать свой сид заранее и знает время фиксации, теоретически может сместить комбинацию входов. Граница такой атаки математически мала для SHA-256 с нормальным CSPRNG, но структурная поверхность атаки существует.
Когда клиентских сидов три и они независимы (Spribe), атака требует одновременной компрометации сидов трёх независимых случайных игроков. Первые три игрока в раунде заранее не известны: это те, кто успел поставить первым; даже казино не знает, какие три игрока внесут сиды, пока раунд не стартовал. Скомпрометировать трёх независимых случайных игроков на масштабе практически невозможно.
Схема с четырьмя клиентскими сидами (1win Gaming) развивает ту же логику, добавляя ещё один независимый сид. Это маргинальное улучшение над тремя сидами; структурное преимущество примерно такое же.
На практике: SHA-256 с одним клиентским сидом математически устойчив в 2026 году (известных атак, успешных за разумное время, нет); SHA-512 с тремя сидами структурно жёстче на порядки. Выбор между ними это «консервативно vs стандартно», а не «безопасно vs небезопасно». Spribe выбрал консервативный уровень; большинство остальных идут по индустриальному стандарту. Обе линии честные; для восприятия игрока нарратив доверия значит больше, чем сама математическая разница.
Как сиды соединяются: конкатенация плюс хеш
Сиды и nonce склеиваются в одну строку; строка хешируется; дайджест задаёт краш-множитель. Механически:
Spribe (Aviator), сборка входа:
hash_input = server_seed + "|" + client_seed_1 + "|" + client_seed_2 + "|" + client_seed_3 + "|" + nonce
digest = SHA-512(hash_input) Конкретный символ-разделитель у разных реализаций отличается (где-то «:», где-то «,», где-то его нет вовсе); принцип одинаковый. Конкатенация даёт уникальную строку на раунд; SHA-512 на выходе даёт 128-символьный hex-дайджест, уникальный для этой комбинации входов.
SmartSoft (JetX), сборка входа:
hash_input = server_seed + "|" + client_seed + "|" + nonce
digest = SHA-256(hash_input) Схемы с одним сидом используют ту же структуру, но с одним клиентским сидом и SHA-256 вместо SHA-512. На выходе 64-символьный hex-дайджест.
Из дайджеста провайдеры вытаскивают дробь h от 0 до 1:
- Spribe: первые 13 hex-символов SHA-512 дайджеста. Конвертируем hex в целое число; делим на 16^13 (максимально возможное значение для 13 hex-символов); получаем h.
- SmartSoft: первые 8 hex-символов SHA-256 дайджеста. Конвертируем hex в целое; делим на 16^8; получаем h.
- Другие провайдеры: длина среза hex другая, но принцип конвертации тот же.
Дробь h идёт в формулу краш-множителя: crash_point = (100 − house_edge) / (100 × (1 − h)). Округление до 2 знаков. Результат это множитель, на котором закончится раунд. Всё детерминировано; одинаковые входы всегда дают одинаковый результат. Если интересен алгоритм глубже, наш материал по алгоритму краш-игр разбирает формулу с примерами кода.
Nonce: для чего он нужен
Nonce это простой счётчик раундов, который растёт на единицу каждый раунд под одним и тем же ключом серверного сида. Его задача: гарантировать, что каждый раунд даёт уникальный дайджест, даже если серверный сид и клиентские сиды случайно совпали между раундами.
Механика такая: в начале серверного ключа (его обычно меняют каждые несколько часов или каждые несколько тысяч раундов) nonce стартует с 0 (или с 1, в зависимости от реализации). Каждый раунд он растёт на 1. После смены ключа (казино генерирует новый) nonce сбрасывается на 0 под новым ключом.
Зачем он вообще нужен? Без него два раунда с одинаковыми серверным сидом и клиентскими сидами дали бы одинаковые дайджесты. На практике совпадение сидов маловероятно (они случайны), но nonce полностью убирает эту возможность. Заодно nonce помогает верификаторам проверять последовательность раундов: раунд 5 под ключом X должен иметь nonce 5; если в интерфейсе оператора раунд 5 показан с nonce 7, расхождение это доказательство пропуска раунда или мошенничества.
Протокол раскрытия: когда сиды публикуются
Механизм доверия полностью завязан на надёжное выполнение раскрытия. Протокол:
- До раунда (примерно за 5-10 секунд до закрытия ставок): сервер генерирует серверный сид; считает SHA-хеш; публикует хеш в интерфейс оператора. Игроки видят хеш, но не сам сид.
- Ставки закрылись, раунд идёт: клиентские сиды берутся у первых N игроков (зависит от схемы); конкатенация, хеш, извлечение части дайджеста и расчёт точки краша происходят на сервере; множитель растёт и крашится в момент, который выдала формула.
- Раунд закончился: казино публикует раскрытый серверный сид в открытом виде в интерфейс оператора. Сид теперь публичен.
- Верификация (после раскрытия): любой игрок может прогнать раскрытый сид через SHA-256 или SHA-512 (в зависимости от схемы) и убедиться, что дайджест совпадает с тем хешем, что публиковался до раунда. А ещё можно прогнать полный алгоритм с раскрытым сидом, клиентскими сидами и nonce и убедиться, что краш-множитель совпадает с тем, что показала игра.
Раскрытие обязано произойти, иначе криптографическое обязательство теряет смысл. Без него у вас только слово казино о том, какой сид был зафиксирован; обязательство нечем проверить. Tier 1 операторы с лицензией (UKGC, MGA, Spelinspektionen, AGCO Ontario) раскрывают всегда, потому что регуляторы аудируют протокол. Оффшорные Curacao-операторы иногда прячут раскрытие за обращением в саппорт или не раскрывают вовсе; это полностью разрушает протокол.
Что делать, если сиды не раскрываются
Если вы сыграли раунд, а оператор не публикует раскрытый серверный сид после, игра не provably fair, что бы ни говорил маркетинг. Три уровня реакции:
- Сначала смотрим сами: откройте панель provably-fair настроек оператора; зайдите в историю раундов; ищите раскрытый сид. Некоторые операторы прячут его на 3-4 пункта вглубь меню. Если в интерфейсе действительно нет, идите в саппорт.
- Запрос в саппорт: попросите саппорт прислать раскрытый серверный сид для конкретного раунда. Дайте 7 дней на ответ. Нормальные операторы пришлют; ненормальные затянут или откажут.
- Откажитесь играть: если оператор стабильно не раскрывает сиды, криптографической защиты у вас нет. На стороне провайдера игра технически provably fair, но обёртка оператора не уважает протокол. Меняйте оператора; выбирайте Tier 1 казино с лицензией и аудированной процедурой раскрытия.
Скрытое раскрытие это один из самых сильных сигналов того, что оператору нельзя верить. Казино нечего терять, пряча сиды, если математика честная; а вот заработать есть на чём, если математика нечестная. Считайте трение в раскрытии красным флагом против оператора. Если интересна более широкая структура доверия к оператору, наш материал «подкручен ли краш» разбирает многослойную защиту (provably-fair-схема плюс регуляторная лицензия плюс привычка проверять).
Пошагово: как проверить раунд через сиды
Конкретный путь по верификации с использованием серверного и клиентских сидов:
- Откройте Aviator у вашего оператора. Сыграйте раунд (или откройте один из истории).
- Зайдите в провабли-фейр панель: обычно это Settings → Provably Fair Settings → My Bets → клик по раунду → Show me the math.
- Скопируйте с панели четыре значения: раскрытый серверный сид, клиентский сид 1, клиентский сид 2, клиентский сид 3, nonce.
- Откройте наш браузерный верификатор в новой вкладке.
- Выберите схему: SHA-512 + 3 сида (Spribe / Aviator).
- Вставьте четыре значения в соответствующие поля.
- Нажмите Compute. Верификатор хеширует входы через SHA-512, берёт первые 13 hex-символов, считает h, применяет краш-формулу и показывает рассчитанную точку краша.
- Сравните вывод верификатора с показанным краш-множителем. Совпадение значит раунд был честным; несовпадение значит идём в саппорт оператора и (если не решат) к регулятору.
Времени уходит около 60 секунд на раунд. Математика идентична той, что крутит сервер Spribe; единственное отличие это место исполнения (ваш браузер vs сервер казино). Одинаковые входы дают одинаковый результат: это свойство детерминированности, применённое к верификации на основе сидов.
Серверный и клиентский сиды это две половины криптографического ключа. Раскрытие делает их проверяемыми
- Серверный сид: сервер казино генерирует до раунда (выход CSPRNG, 64-128 hex-символов). Хеш публикуется до раунда; сид раскрывается после.
- Клиентский сид: вносят игроки. Spribe берёт три у первых трёх ставящих. SmartSoft использует один. 1win использует четыре. BGaming использует один плюс опциональный хеш биткоин-блока.
- Соединение: склеить серверный сид + клиентский сид(ы) + nonce, прогнать через SHA-256 или SHA-512, взять hex-срез как дробь h, посчитать краш-множитель.
- Протокол раскрытия: после раунда казино публикует серверный сид в открытом виде. Верификатор хеширует сид и проверяет совпадение с предварительно опубликованным хешем; совпало значит раунд был честным.
- Без раскрытия: игра не provably fair, что бы ни говорил маркетинг. Не играйте на операторах, которые прячут публикацию сида.
- Решение с тремя сидами (Spribe): структурно жёстче схем с одним сидом. Атака требует одновременной компрометации сидов трёх независимых случайных игроков, а не одного.
Оценка: механика сидов простая и проверяемая. Tier 1 операторы с лицензией раскрывают надёжно; оффшорные иногда нет. Используйте раскрытие как сигнал доверия на уровне оператора; используйте привычку проверять как защиту на уровне раунда.
Главное: сиды это криптографическая основа доверия в краше
Серверный и клиентский сиды это базовые примитивы, благодаря которым provably-fair краш-игры действительно честные. Понимание их на уровне механики позволяет оценивать структуру доверия, а не полагаться на веру. Решение Spribe с тремя клиентскими сидами реально осмысленно структурно; база SmartSoft с одним сидом математически устойчива, но структурно строже не становится; четырёхсидовая схема 1win ещё жёстче, чем три у Spribe. Все четыре подхода (один сид, три, четыре, с биткоин-энтропией или без) состоятельны; ни один не сломан; разница в доверии лежит в обёртке оператора вокруг механики сидов, а не в самом криптографическом примитиве.
Раскрытие это то, что делает математику осмысленной. Операторы, которые надёжно публикуют раскрытие (Tier 1 казино с лицензиями UKGC, MGA, Spelinspektionen), позволяют верификации работать; операторы, которые прячут раскрытие (часть оффшорных Curacao платформ), разрушают протокол независимо от качества базовой математики. Считайте трение в раскрытии самым сильным сигналом доверия на уровне оператора, на который можно опираться. Сложите криптографическое понимание с регуляторной лицензией и привычкой проверять (выборочный раунд за сессию); многослойная структура даёт устойчивое доверие, которое ни один слой по отдельности не обеспечивает.
Если интересно более широкое прохождение по provably fair, наш гайд по provably fair разбирает протокол на уровне протокола. Алгоритм на уровне кода, в формулу, идёт материал по алгоритму краш-игр. Пошаговая операционная верификация в материале verify crash game. Эта статья по сидам это побитовый фундамент; остальные строятся поверх.
Серверный сид плюс клиентский сид это криптографический ключ для раунда. Решение Spribe в том, чтобы брать три клиентских сида у трёх независимых игроков; структурная разница важна, даже если базовый математический примитив тот же, из семейства SHA.
Открыть Provably Fair Verifier (только в браузере, поддержка всех схем)
Пересчитайте любой раунд Aviator (SHA-512 + 3 сида), JetX (SHA-256 + 1 сид), Lucky Jet (SHA-256 + 4 сида) или BGaming за 60 секунд через Web Crypto API. Откройте JavaScript-исходник, чтобы убедиться, что математика совпадает с задокументированным протоколом.
Открыть VerifierЧастые вопросы
Что такое серверный сид в краш-играх?
Серверный сид это длинная случайная hex-строка, которую сервер казино генерирует до каждого раунда. Длина зависит от хеш-функции: 64 hex-символа (256 бит) для схем на SHA-256 и 128 hex-символов (512 бит) для схем на SHA-512 (Spribe / Aviator). Сид генерируется через системную энтропию ОС и криптографический CSPRNG, лежит приватно на сервере казино до конца раунда, а до раунда публикуется только его SHA-хеш. После окончания раунда сид раскрывается в открытом виде; любой может прогнать его через ту же SHA-функцию и убедиться, что хеш совпадает с тем, что публиковался до раунда.
Что такое клиентский сид и как он генерируется?
Клиентский сид это hex-строка от игроков, которая соединяется с серверным сидом и определяет краш-исход. Способ генерации зависит от схемы провайдера. Spribe (Aviator) берёт три клиентских сида у первых трёх игроков, поставивших ставку в каждом раунде; каждый сид генерируется на стороне клиента браузером игрока через window.crypto.getRandomValues. SmartSoft (JetX) берёт один клиентский сид от ставящего игрока, обычно выводя его из ID аккаунта или случайной строки. 1win Gaming (Lucky Jet) использует четыре клиентских сида (свой плюс три от случайных других живых участников). BGaming берёт один клиентский сид плюс опциональный хеш биткоин-блока для дополнительной энтропии в избранных тайтлах.
Почему Aviator использует три клиентских сида, когда другие краш-игры один?
Решение Spribe с тремя клиентскими сидами структурно жёстче схем с одним сидом против манипуляции. Когда сид один, у вносящего его игрока есть теоретическое (криптографически ограниченное) влияние на исход; граница математически мала, но структурная поверхность атаки существует. Когда независимых клиентских сидов три и они приходят от трёх случайных игроков, атака требует одновременной компрометации трёх независимых игроков, а это практически нереально. Spribe берёт три сида у первых трёх игроков, поставивших ставку в раунде; даже казино заранее не знает, какие три игрока внесут сиды, пока раунд не стартовал. SHA-256 с одним клиентским сидом математически устойчив в 2026 году (известных практических атак нет); трёхсидовый SHA-512 от Spribe это самый строгий стандартный уровень в регулируемом краш-жанре.
Когда казино публикует раскрытый серверный сид?
После окончания каждого раунда. Протокол раскрытия такой: до раунда казино публикует SHA-хеш серверного сида (это связывает казино криптографически); во время раунда сид остаётся приватным на сервере казино; после раунда казино публикует сид в открытом виде в интерфейс оператора. Любой может прогнать раскрытый сид через ту же SHA-функцию и убедиться, что дайджест совпадает с хешем, опубликованным до раунда. Tier 1 операторы с лицензией (UKGC, MGA, Spelinspektionen) раскрывают всегда и надёжно, потому что регуляторы аудируют протокол; оффшорные Curacao-операторы иногда прячут раскрытие за обращением в саппорт или не раскрывают вовсе (а это полностью разрушает криптографическую защиту).
Что делать, если казино не раскрывает серверный сид после раунда?
Игра не provably fair, что бы ни говорил маркетинг. Раскрытие это то, что наполняет криптографическое обязательство смыслом; без него у вас только слово казино о том, какой сид использовался. Три уровня реакции. Первый: проверьте панель provably-fair настроек оператора с историей раундов и раскрытыми сидами (некоторые операторы прячут её на 3-4 пункта вглубь меню). Второй: напишите в саппорт и запросите раскрытый сид для конкретного раунда. Третий: если оператор стабильно прячет раскрытие, не играйте на нём и переходите на Tier 1 казино с лицензией и аудированной процедурой раскрытия. Скрытое раскрытие это один из самых сильных сигналов недоверия; считайте красным флагом против платформы.
Как использовать сиды, чтобы проверить конкретный раунд?
Откройте Aviator у вашего оператора и сыграйте раунд (или откройте один из истории). Зайдите в provably-fair панель и скопируйте четыре значения: раскрытый серверный сид, клиентский сид(ы), nonce, показанный краш-множитель. Откройте наш браузерный верификатор. Выберите схему под вашу игру (SHA-512 + 3 сида для Aviator; SHA-256 + 1 сид для JetX; SHA-256 + 4 сида для Lucky Jet). Вставьте значения в соответствующие поля. Нажмите Compute. Верификатор хеширует входы через выбранную SHA-функцию, берёт hex-срез как дробь h, применяет формулу краш-множителя и показывает рассчитанную точку краша. Сравните с показанным множителем; совпадение значит раунд был честным, расхождение значит время идти эскалировать. Времени уходит около 60 секунд на раунд.