Справка о категориях розыгрышей, работе смарт-контрактов ElyxS, Supra dVRF, хранении призов, выплатах и проверке результатов.
Адрес смарт-контрактов
В каждой сети основные модули ElyxS работают по одному адресу. Адреса в Mainnet и Testnet могут отличаться. Сеть, адрес и ссылка на SupraScan должны совпадать с данными в интерфейсе ElyxS.
Смарт-контракты используют три категории розыгрышей: лотерею (LOTTERY), джекпот (JACKPOT) и пользовательский розыгрыш (USER_DRAW).
Наличие функции в коде не означает, что она доступна пользователю. Доступность зависит от настроек действующих кон трактов и текущих правил.
Когда пользователь создаёт собственный розыгрыш, доступные варианты могут зависеть от статуса организатора. Перед подтверждением интерфейс показывает возможности для этой заявки.
После принятия заявки на пользовательский розыгрыш контракт фиксирует его условия. Последующее изменение статуса организатора их не меняет.
Как устроены смарт-контракты
Смарт-контракты разделены на пакеты Move с разными зонами ответственности:
draw_base- Общие данные о розыгрышах и организаторах, проверка полномочий и связь ответа Supra dVRF с нужным запросом.draw_user_rules- Проверка и хранение правил пользовательских розыгрышей, включая доступные организатору варианты.draw_data- Текущее состояние розыгрышей и раундов, отмены и права на возврат.draw_engine- Продажа билетов, переходы между этапами и определение победителей.draw_finance_core- Базовые правила учёта джекпота и возвратов.draw_finance- Хранение SUPRA, комиссии, доход организатора, призовые выплаты и возвраты.draw_prize_assets- Хранение призов в других токенах сети Supra и NFT.draw_utils- Расчёты, история, метаданные и чтение ценовых данных.draw_gateway- Публичные функции для пользовательских транзакций и чтения состояния.draw_vrf_gateway- Запросы случайности Supra dVRF, проверка ответов и контроль повторного запроса при задержке.SupraVrfиoracle_core- Подключение к сервисам случайности и ценовых данных сети Supra.
Для пользователя важны две модели приза. Смарт-контракт может хранить SUPRA, другой токен сети Supra или NFT.
Если за приз отвечает организатор, контракт не хранит этот приз. За обещанную передачу отвечает организатор.
Доступность вариантов в конструкторе зависит от действующих правил и статуса организатора.
Правила, которые обеспечивают контракты
Контракты применяют эти проверки в соответствующих операциях:
- Каждый раунд последовательно проходит сбор участников, запрос случайности и определение победителей. Если приз хранит контракт, победитель затем получает его через контракт. Если за приз отвечает организатор, контракт фиксирует победителя, но не обещает и не передаёт приз. Отмена и связанные с ней возвраты идут по отдельному пути. Завершённый пользовательский розыгрыш нельзя запустить заново или отменить.
- Пауза запрещает новые продажи и новые запросы случайности, но не меняет результат запроса, который уже был отправлен в Supra dVRF.
- Каждая успешная покупка добавляет указанное число билетов только один раз. Поздняя или повторная обработка той же покупки не увеличивает число участников, а каждый выданный билет участвует в своём раунде ровно один раз.
- Результат Supra dVRF связан с конкретной сетью, адресом контракта, розыгрышем, раундом, запросом и зафиксированным набором билетов. Подтверждённый ответ нельзя применить повторно или к другому розыгрышу.
- Заявка на пользовательский розыгрыш сначала ожидает обработки. Затем система создаёт розыгрыш или отклоняет заявку; организатор также может отменить её до создания розыгрыша. После создания цифровые отпечатки правил и описания не меняются.
- Участие бывает бесплатным или платным в SUPRA. Другие токены сети Supra и NFT нельзя использовать для оплаты билетов.
- Если приз хранит смарт-контракт, организатор заранее передаёт ем у SUPRA, другой токен сети Supra или NFT. После определения победителя получить приз может только указанный в блокчейне кошелёк.
- Если приз остаётся у организатора, контракт фиксирует правила, участников и победителя, но не может подтвердить существование или выдачу приза.
- Принятые правила, способ участия, способ хранения приза и комиссии фиксируются для конкретного розыгрыша. Изменение статуса организатора или общих правил платформы не меняет уже принятые условия.
- Для платного пользовательского розыгрыша уже внесённая плата за создание вычитается из комиссии платформы, рассчитанной по продажам. Контракт отдельно резервирует доход организатора до выплаты.
- Контракт проверяет, что его баланс SUPRA покрывает все зафиксированные выплаты: призы, возвраты, комиссии и доход организаторов. Для другого токена проверяется точная сумма, а для NFT - тот объект, который организатор выбрал в качестве приза.
- После определения победителя его право на приз, который хранит контракт, действует бессрочно. Приз нельзя вернуть организатору, передать другому получателю или получить повторно.
- Ключевые этапы - покупки, запрос случайности, результат, получение приза и возврат - записываются в состоянии и событиях блокчейна, чтобы их можно было проверить независимо.
Верификация розыгрыша
Любой результат розыгрыша можно независимо проверить в блокчейне:
- Найдите нужный розыгрыш во вкладке
Центр→Результатыи нажмите ссылку проверки. - Ссылка откроет связанную VRF-запись в SupraScan.
- Проверьте сеть, адрес контракта, категорию, идентификатор розыгрыша и связь запроса dVRF с нужным розыгрышем.
- Сравните результат в ElyxS с записью в блокчейне, открытой из интерфейса.
Для пользовательского розыгрыша дополнительно сверьте статус заявки, цифровой отпечаток правил (rules_hash), цифровой отпечаток описания (content_hash), кто хранит приз и, если применимо, событие, подтверждающее получение приза контрактом.
Supra dVRF подтверждает случайное значение, а записи контракта позволяют проверить выбор победителя. Если приз остаётся у организатора, эти данные не подтверждают его выдачу.
См. Как проверить результат розыгрыша и Как читать SupraScan для ElyxS.