Проверка честности розыгрыша
Вставьте код сертификата, чтобы проверить его.
Что проверяет этот инструмент
Кто-то провёл генерацию и дал вам код сертификата. Эта страница показывает, непротиворечив ли этот код внутри себя — действительно ли числа получены из зерна, опубликованного организатором, и действительно ли отпечаток покрывает именно это зерно и эти настройки.
Всё работает в вашем браузере. Сертификат никуда не отправляется.
Две проверки
Отпечаток. Сертификат содержит хеш SHA-256 от зерна и настроек генерации. Эта страница пересчитывает этот хеш. Если он не совпадает с тем, что хранится в сертификате, значит зерно или настройки были изменены после того, как было дано обязательство.
Повтор. Генератор с зерном полностью детерминирован, поэтому одно и то же зерно и одни и те же настройки всегда дают одни и те же числа. Эта страница повторно запускает генерацию и сравнивает результат. Если числа отличаются, результат был отредактирован.
Сертификат проходит проверку, только когда пройдены обе проверки.
Что доказывает пройденная проверка, а что нет
Она доказывает, что организатор незаметно не изменил зерно, настройки или числа после того, как взял на себя обязательство.
Она не доказывает, что зерно было непредсказуемым. Если организатор выбрал зерно сам и не опубликовал отпечаток до генерации, он мог перебрать множество зёрен и оставить то, которое ему понравилось. Отпечаток имеет смысл только тогда, когда он был опубликован до генерации, где-то с отметкой времени — в посте, в комментарии, в сообщении.
В этом и есть весь смысл шага с обязательством: он превращает «поверьте мне» в то, что каждый может проверить впоследствии.
Как провести генерацию, которую люди смогут проверить
- Задайте диапазон и сколько чисел вам нужно.
- Нажмите Создать отпечаток. Опубликуйте полученный хеш — в посте о розыгрыше, в комментарии, там, где участники увидят его с отметкой времени.
- Закройте приём заявок, затем проведите генерацию.
- Опубликуйте зерно и сертификат. Любой сможет вставить его сюда.
Если пропустить шаг 2, сертификат становится чисто декоративным. Именно публикация отпечатка заранее придаёт ему вес.
Почему одного зерна недостаточно
Зерно — это просто текст. Оно даёт числа только тогда, когда известно, как оно было развёрнуто в них — какой алгоритм, какой диапазон, сколько чисел, допускались ли повторы.
Поэтому отпечаток покрывает и зерно, и настройки. Без этого организатор мог бы опубликовать зерно, а затем заявить, что генерация проходила в другом диапазоне и что настоящим результатом был другой набор чисел. Обязательство закрывает эту лазейку.
Почему отпечаток нельзя подделать
Хеш SHA-256 — это однонаправленная функция: легко вычислить в одну сторону, и нет известного способа вычислить её в обратную. Именно это делает обязательство надёжным.
Чтобы обмануть, организатору пришлось бы опубликовать один отпечаток, а потом предъявить другое зерно, дающее тот же хеш — атака поиска второго прообраза (second-preimage attack). Против SHA-256 такую атаку никто не нашёл, а объём перебора делает грубую силу бессмысленной: 2²⁵⁶ больше, чем оценочное число атомов в наблюдаемой вселенной.
Ещё они не могут подтолкнуть результат в нужную сторону. Изменение одного символа зерна меняет примерно половину битов хеша, непредсказуемым образом. Не существует способа подобрать зерно, которое одновременно совпадает с опубликованным отпечатком и даёт удобного победителя, потому что для этого пришлось бы сначала зафиксировать хеш, а хеш зависит от всего сразу.
Так что отпечаток полностью фиксирует зерно и настройки. Единственное, чего он не фиксирует, — это когда он был опубликован, поэтому отметка времени под вашим постом делает половину работы.
Где важны проверяемые генерации
- Розыгрыши и конкурсы — вопросы задают именно те, кто не выиграл
- Отбор в сообществах и DAO — распределение слота, гранта, роли
- Исследования — план выборки, который рецензент может повторить и подтвердить
- Призовые акции с юридическими рисками — в некоторых юрисдикциях требуется доказуемый метод, а не просто заявление
- Всё, во что должен поверить незнакомец — чем дальше аудитория, тем меньше само по себе стоит «мы выбрали случайно»