ХакатонTypeScript, React, Next

Веб-клиент для распределённого генератора случайных чисел

Реализация ГСЧ на основе нестандартных источников энтропии в рамках всероссийского хакатона ФСП

Веб-клиент для распределённого генератора случайных чисел

Прототип распределённого генератора случайных чисел на нестандартных источниках энтропии — курсе BTC и независимом вводе участников лотереи.

Проект разрабатывался в рамках отборочного этапа всероссийского хакатона ФСП.

Задача

Действующие истоники энтропии не вызывают у пользователей должного доверия — они могут быть предсказуемыми, механизмы генерации непрозрачны. Особенно остро это ощущается в контексте лотерей.

Кейс, представленный компанией Столото: предложить ГСЧ на основе необычных источников энтропии, решающих проблемы выше.

Результат

Наша команда предложила следующее решение: распределённый ГСЧ с тремя источниками энтропии — текущее время, достаточно хаотичный и непредсказуемый курс BTC и прозрачный пользовательский ввод. Три человека участвуют в генерации зерна, что повышает доверие к алгоритму.

В рамках данного проекта я занимался фронтендом. Нужно было наглядно показать, как из непредсказуемых внешних данных получается честное случайное число для лотереи и дать возможность проверить розыгрыш постфактум.

Я разработал прототип самой лотереи (playground): ввод числа игроком, визуализация того, как из курса BTC и введённых чисел собирается зерно генератора, и итоговый розыгрыш. Клиент общается с сервером через вебсокеты, что позволяет обновлять контент в реальном времени.

Главная страница Страница розыгрыша

Запуск

Проект поднимается через docker compose up — после этого nginx на порту 8080 отдаёт готовое приложение.