Что такое проверяемая лотерея и как проверить тираж?
Обновлено · 2 мин чтения
Проверяемый результат означает, что вы можете повторить расчёт победителя по открытым данным. Для этого нужны окончательный список билетов, источник случайности и алгоритм выбора. Само слово «блокчейн» ничего из этого не гарантирует.
Что именно должно проверяться
- Ставки. Контракт записывает владельцев и количество билетов. После запроса случайности приём ставок в этом тираже закрывается.
- Случайность. Chainlink VRF передаёт случайное число с криптографическим доказательством. Координатор проверяет доказательство перед ответом контракту лотереи.
- Расчёт. Алгоритм превращает случайные слова в номера билетов; их владельцы получают начисления.
- Результат. События PrizeAwarded позволяют сопоставить выбранные билеты, адреса победителей и начисленные суммы.
Как проверить тираж DecentraLotto
Откройте архив, выберите завершённый тираж и перейдите к проверке. Она читает данные контракта через публичный RPC, находит ответ VRF в транзакции завершения, вычисляет случайные слова и выигрышные билеты в вашем браузере, затем сравнивает результат с событиями контракта.
Если ответ не найден или RPC недоступен, проверка не должна показывать успех. Тиражи с возвратом не имеют выигрышного билета: их состояние и транзакцию закрытия смотрите в архиве.
Для проверки реального розыгрыша выберите завершённый тираж с победителями и сопоставьте номер тиража, выигрышные билеты и начисления с транзакцией завершения. Начисление приза в контракте и вывод в кошелёк — отдельные операции. Если в архиве ещё нет тиражей с победителями, проверить выигрышный результат пока нельзя.
Как получается выигрышный билет
Координатор выводит слова по формуле word[i] = keccak256(abi.encode(seed, i)). Для одного победителя номер билета равен word[0] mod tickets. Для Stack применяется частичное перемешивание Fisher–Yates: выбранный билет удаляется из доступных позиций, поэтому один билет не занимает несколько мест. Один кошелёк с несколькими билетами может выиграть несколько мест.
Проверяемость и безопасность
Проверка расчёта не заменяет аудит и не исключает ошибки контракта, сбой оракула, блокировку токена или потерю ключей. Исходный код нужно сопоставлять с развёрнутым контрактом. Независимый аудит DecentraLotto пока не завершён; полномочия владельца и ограничения раскрыты в разделе безопасности.
Если оракул не ответил
Через 24 часа после запроса случайности контракт позволяет отменить зависший розыгрыш. После отмены участники сами вызывают возврат. При одном игроке к закрытию сумма начисляется во внутренний баланс для вывода. Для этих операций нужен ETH; сетевые комиссии не возвращаются.
Подробнее: как работает Chainlink VRF и что проверить до участия.
Часто задаваемые вопросы (FAQ)
Что делает криптолотерею доказуемо честной (Provably Fair)?
Лотерея является доказуемо честной, когда все билеты фиксируются в публичном блокчейне до закрытия раунда, случайное число поставляется оракулом Chainlink VRF с криптографическим доказательством, а любой игрок может независимо пересчитать выигрышный билет.
Может ли создатель лотереи изменить или переиграть выигрышный билет?
Нет. Координатор Chainlink VRF v2.5 проверяет криптографическую подпись случайного числа непосредственно в смарт-контракте перед расчетом победителя в той же транзакции.