Как фиксируется тасовка
Каждая тасовка фиксируется обязательством до раздачи карт, а обязательство для следующей раздачи публикуется до окончания текущей — поэтому колоду нельзя выбрать после начала игры и нельзя подобрать в ответ на чьи-либо действия.
Что происходит в каждой раздаче
- Перед раздачей стол берёт 32-байтное число из источника случайности операционной системы и публикует его хеш SHA-256. Этот хеш и есть обязательство; он приходит на ваш стол в начале раздачи.
- После публикации обязательства игроки за столом отправляют собственный новый вклад для этой раздачи. Колода выводится из числа стола вместе с вкладами игроков, поэтому ни одна сторона не выбрала её в одиночку.
- Обязательство для следующей раздачи публикуется до окончания текущей. Стол привязан к числу ещё до того, как узнает, против чего будет тасовать.
- Код, превращающий эти данные в колоду, — один и тот же открытый код на сервере и в браузерной сборке, и он детерминирован: одни и те же данные всегда дают одну и ту же колоду.
Чего это пока не даёт
В Riverline нет проверки отдельной раздачи, и дело не в технической неполадке. Чтобы пересчитать завершённую раздачу, нужно число, из которого была перетасована колода, а это число раскрыло бы и все карты, которые ваши соперники сбросили не показывая за этим столом. Карты, которые вы не показали, принадлежат вам, поэтому мы публикуем обязательство и на этом останавливаемся.
Это значит, что обязательство — ограничение, по которому работает рум, а не то, что вы сегодня можете проверить сами. Мы предпочитаем написать это прямо, а не намекать на проверку, которую вы провести не можете. Схема, подтверждающая раздачу без раскрытия карт, которые так и не были показаны, находится у внешнего криптографа; когда она пройдёт проверку и будет внедрена, она появится на этой странице.
Тем временем записи раздач — включая обязательство и стоящее за ним число — хранятся как доказательства, а раздачу, которую вы хотите проверить, можно передать через страницу помощи, указав её ID.