Честность
Что мы доказываем, как именно и где всё ещё требуется доверие.
Протокол (AERQIX-M4 v1)
- Снимок: при закрытии принятые участия сортируются по ID; каждое становится листом дерева Меркла SHA256("AERQIX-M4:entry:" + entryId + ":" + userId + ":" + drawId + ":" + passUnitId + ":" + createdAt). Сохраняются хеш снимка и корень Меркла.
- Обязательство: после снимка генерируется 32-байтовый серверный сид, сохраняется только SHA256("AERQIX-M4:server-seed:" + seed); сам сид раскрывается в пакете доказательства после завершения.
- Случайность: в обязательстве закрепляются одна ссылка и один раунд случайности. Для них принимается ровно одно значение; второе, другое значение отклоняется.
- Выбор: trigger = uniformBelow(SHA256("AERQIX-M4:trigger:" + R), 100). Победитель джекпота и недельных призов выбираются раздельными потоками SHA-256 с 256-битной выборкой с отбрасыванием — никогда не простым остатком от деления.
- Пакет: все входы и выходы хешируются в хеш пакета. Проверка пересчитывает каждый шаг.
Что вы можете проверить сами
- Что сид соответствует обязательству.
- Что опубликованный список участий даёт опубликованные хеш снимка и корень Меркла, и что ваше участие в нём есть.
- Что срабатывание джекпота, его победитель, каждое место недельных призов и каждый победитель следуют из опубликованной случайности.
- Что в пакете ничего не меняли после хеширования.
Где всё ещё требуется доверие — честно
- Источник случайности: в демо используется публичное детерминированное значение (SHA-256 фиксированного префикса и ID розыгрыша). Его можно было вычислить заранее — оно доказывает только вычисление. Планируется проверяемый публичный источник (drand); пока он не подключён и его подписи не проверяются, реальные розыгрыши проводиться не должны.
- Полнота: корень Меркла доказывает, что участие есть в списке, но не то, что ни одно принятое участие не пропущено. Полнота сверяется с учётом оператора, который не публичен.
- Выплата: доказательство показывает, кто выиграл; выплаты отслеживаются в учёте оператора и видны в аккаунте победителя.
Инструменты
- Проверка в браузере на странице «Проверка» — пакет скачивается и пересчитывается на вашем устройстве.
- Командная строка: fortulox-verify https://fortulox.com/api/v1/public/draws/DRW-0-W4/proof
- Пакеты доказательства — обычный JSON, их можно проверить любой реализацией SHA-256.