> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mycryptocasino.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Доказуемая честность — обзор

> Схема commit-reveal простыми словами, что добавляет энтропия блокчейна и что вы можете проверить сами.

<Frame>
  <img src="https://mintcdn.com/cyberiantechnology/AuuF3KYTE6qxTgZL/images/illustrations/banner-provably-fair.webp?fit=max&auto=format&n=AuuF3KYTE6qxTgZL&q=85&s=63cf96dd8fc1c2c3a2efba7008fcad44" alt="Баннер «Доказуемая честность»" width="1376" height="516" data-path="images/illustrations/banner-provably-fair.webp" />
</Frame>

Каждый результат игры в My Crypto Casino получается с помощью **схемы commit-reveal в сочетании с энтропией блокчейна Solana**, которую исполняет программа в блокчейне. Для вас как игрока это означает две вещи:

1. **Результат нельзя изменить задним числом.** Оператор фиксирует свой вклад (секретное значение) *до* начала игры, публикуя в блокчейне его криптографический отпечаток. Позже программа отказывается проводить расчёт, если раскрытый секрет не совпадает с этим отпечатком в точности.
2. **Всё можно проверить самостоятельно.** Все входные данные и точная формула публичны. После любого раунда или ставки вы можете пересчитать результат по данным из блокчейна и сравнить его с тем, что выплатила игра.

На этой странице схема объясняется простыми словами. На страницах отдельных игр приведены точные формулы, а статья [Проверка раунда](/ru/docs/provably-fair/verify-a-round) шаг за шагом показывает, как проверить реальный раунд.

<img src="https://mintcdn.com/cyberiantechnology/-ySqsND5p03qeamx/diagrams/ru/commit-reveal-timeline.svg?fit=max&auto=format&n=-ySqsND5p03qeamx&q=85&s=1b718de7a77c7a8139e2cdbba8bc1047" alt="Коммит, игра, раскрытие, проверка: секрет запечатывается в блокчейне до начала игры, программа проверяет его при раскрытии, а любой результат потом может пересчитать кто угодно" width="920" height="310" data-path="diagrams/ru/commit-reveal-timeline.svg" />

<h2 id="the-three-building-blocks">
  Из чего состоит доказуемая честность?
</h2>

**Зафиксированный секрет.** Там, где результат должен оставаться скрытым во время игры (Crash, Mines), бэкенд генерирует случайный 32-байтовый секрет и до начала игры публикует в блокчейне его хеш SHA-256 (*коммит*). Хеш работает как запечатанный конверт: он ничего не говорит о секрете, но после публикации ему может соответствовать только этот самый секрет. Когда секрет раскрывается в конце, программа сама хеширует его и отклоняет транзакцию, если он не совпадает с коммитом.

**Энтропия блокчейна Solana.** Результат никогда не зависит только от секрета. К нему подмешивается **хеш слота** — хеш недавнего слота Solana, который программа считывает из sysvar `SlotHashes` в строго определённый момент. Это значение создаёт сеть Solana, а не казино, и в момент публикации коммита оно ещё не существует.

**Публичная детерминированная формула.** Результат — это фиксированная математическая функция от этих входных данных. Та же функция выполняется внутри программы в блокчейне (бэкенд не может подменить результат: его вычисляет программа) и опубликована на этих страницах, чтобы вы могли выполнить её сами.

<h2 id="the-flow">
  Как проходит раунд, шаг за шагом?
</h2>

```mermaid theme={null}
sequenceDiagram
    participant MCC as Бэкенд MCC (оператор)
    participant SOL as Программа Solana
    participant You as Игрок

    Note over MCC,SOL: 1. Коммит
    MCC->>SOL: Публикует коммит = sha256(секрет)
    Note over You,SOL: 2. Игра
    You->>SOL: Ставки делаются в блокчейне
    Note over SOL: 3. Энтропия блокчейна
    SOL->>SOL: Фиксирует последний хеш слота Solana
    Note over MCC,SOL: 4. Раскрытие
    MCC->>SOL: Передаёт секрет
    SOL->>SOL: Проверяет, что sha256(секрет) совпадает с коммитом
    SOL->>SOL: Вычисляет результат по публичной формуле
    Note over You: 5. Проверка (в любой момент позже)
    You->>SOL: Считывает из блокчейна коммит, хеш слота и секрет
    You->>You: Пересчитывает результат и сравнивает
```

В Dice весь этот процесс умещается в одну транзакцию: скрытого состояния, которое нужно защищать, нет, поэтому нет и секрета оператора. Бросок выводится из хеша слота, вашего аккаунта и счётчика ваших ставок и рассчитывается той же инструкцией, которая его генерирует.

## Что фиксирует каждая игра и когда

| Игра | Секрет оператора | Энтропия блокчейна | Исход фиксируется | Проверяется в блокчейне |
| - | - | - | - | - |
| [Crash](/ru/docs/provably-fair/crash) | 32-байтовый секрет, коммит **до открытия ставок** | Хеш слота, зафиксированный при старте раунда | При старте раунда | Проверка коммита + точка краша, вычисленная программой при раскрытии |
| [Dice](/ru/docs/provably-fair/dice) | Нет | Хеш слота в момент, когда ваша ставка попадает в блокчейн | При включении транзакции ставки в блок | Бросок выводится и рассчитывается программой в одной инструкции |
| [Mines](/ru/docs/provably-fair/mines) | 32-байтовый сид, коммит **в транзакции, которая начинает вашу игру** | Хеш слота, зафиксированный в той же стартовой транзакции | При старте игры, до вашего первого хода | Проверка сида + всё поле заново выводится программой при расчёте |

## Что это гарантирует и что предполагает

Здесь честность важнее маркетинга, поэтому будем точны. Эта схема — **commit-reveal с публичной энтропией блокчейна, а не VRF** (проверяемая случайная функция). Вот точная граница между тем, что *обеспечивается кодом*, и тем, что *зависит от добросовестности оператора*.

### Обеспечивается программой в блокчейне

* **Никакой подмены исхода после коммита.** Программа хеширует раскрытый секрет и отклоняет любой расчёт, в котором он не совпадает с опубликованным коммитом. Оператор не может выбрать другой секрет, увидев, как идёт раунд.
* **Энтропию создаёт не оператор.** Хеш слота поступает из сети Solana. В момент публикации коммита он неизвестен, и казино его не создаёт.
* **Результаты вычисляются в блокчейне.** Точку краша, бросок в Dice и поле в Mines вычисляет (или заново выводит и проверяет) сама программа. Бэкенд не может сообщить результат, который не даёт формула.
* **Полная публичная проверяемость.** Каждый раунд и каждая ставка порождают события в блокчейне со всеми входными данными и исходом. Любой — не только участвующий игрок — может пересчитать каждый исторический результат.

### Предполагается: честные оговорки

* **Влияние на тайминг.** Бэкенд оператора выбирает, *когда* отправлять некоторые транзакции, и это даёт ему частичное влияние на то, *какой именно* хеш слота будет зафиксирован. На странице каждой игры точно описано, чего этим можно и нельзя добиться в этой игре.
* **Отмены возможны, но только с возвратом.** Оператор может аннулировать раунд Crash или игру в Mines. Аннулирование всегда возвращает каждую ставку полностью (у программы нет способа что-то конфисковать через отмену), и каждое аннулирование публично фиксируется, так что частоту отмен может проверить любой. Частые отмены были бы видимым в блокчейне признаком недобросовестного оператора.
* **Во время игры оператор знает поле Mines.** Это заложено в устройство игры: клетки открываются мгновенно вне блокчейна, и тот, кто их открывает, должен знать поле. Коммит гарантирует, что поле было зафиксировано до вашего первого хода и не может быть переписано позже. Как именно это обеспечивается — на странице [Честность Mines](/ru/docs/provably-fair/mines).

### Зачем идти на эти компромиссы?

Потому что это цена мгновенной игры без задержек, а не упрощения ради удобства. Каждая игра находится ровно там, где должна:

* **Mines**: чтобы открыть клетку за миллисекунды, по самой своей сути нужен участник, который уже знает поле. Альтернативы (транзакция в блокчейне на каждый клик или запрос к оракулу на каждое открытие) превратили бы каждую клетку в комиссию и ожидание. Оператор, знающий поле, необходим для Mines, которая ощущается мгновенной и при этом рассчитывается в блокчейне; схема с коммитом нужна, чтобы ограничить то, что можно сделать с этим знанием.
* **Crash**: общему живому раунду нужен кто-то, кто ведёт его сразу для всех игроков. Это прагматичный выбор, а не структурная необходимость, поэтому в программе заложен путь перехода на случайность от оракула (VRF) — будущий этап, который снимет оговорки о тайминге там, где это оправдано экономически.
* **Dice**: другой конец спектра. Во время игры скрывать нечего, поэтому секрета оператора нет вовсе. Там, где отказ от доверия к оператору ничего не стоит, архитектура от него отказывается.

Коротко: игры ведёт оператор, а блокчейн делает жульничество либо **невозможным** (всё, что после коммита), либо **публично обнаружимым** (закономерности тайминга, частота отмен, статистика выигрышей).

<Info>
  **Честность результата и хранение средств**

  Этот раздел о том, как генерируются *исходы*. Как пополнения, балансы и выводы хранятся в блокчейне — отдельная тема; см. [Ончейн-архитектура](/ru/docs/security/on-chain-architecture).
</Info>

## Проверьте сами

* В приложении у каждого завершённого раунда Crash в деталях раунда есть данные для проверки честности (раскрытый секрет, хеш блока и ссылки на транзакции в блокчейне), а также инструмент проверки честности в один клик.
* Dice и Mines публикуют все входные данные в событии расчёта в собственной транзакции ставки.

Статья [Проверка раунда](/ru/docs/provably-fair/verify-a-round) проводит через весь процесс: от данных в приложении до пересчёта результата в несколько строк кода.
