Начните с правильной транзакции
Если ElyxS показывает хеш транзакции или ссылку на SupraScan, начните с неё. История розыгрыша, проверка результата и записи в истории профиля открывают связанную транзакцию.
Для получения приза или возврата после подтверждения кошелька также можно взять хеш из истории кошелька.
Если у вас уже есть хеш транзакции, вставьте его в поиск SupraScan. Если ищете вручную, используйте раздел Blockchain -> Transactions, затем откройте нужную транзакцию.
Перед проверкой сравните сеть в SupraScan с сетью ElyxS и кошелька. Если в SupraScan выбрана сеть Testnet, страница показывает предупреждение: сеть хранит только недавние данные за ограниченный период. Хеши важных транзакций лучше сохранять сразу.
Основные блоки на странице
В Basic Information находятся быстрые проверки:
Status: успешная транзакция отображается какSuccess.Sender: кошелёк, который подписал транзакцию.Recipient: адрес контракта или получателя транзакции.Transaction Hash: хеш, который нужно сравнить со ссылкой из ElyxS или передать в поддержку.Function: вызванная Move-функция, напримерcancellation::cancel_draw,cancellation::claim_refundилиpayout_processor::claim_payout.Time (Local): локальное время транзакции.
В Advanced Information открываются технические детали:
VM Status: для успешного исполнения должен показыватьExecuted successfully.Payload {...}: данные вызова, если SupraScan их декодирует.Output {...}: основной блок для проверки событий. Внутри него откройтеMove -> events[].
Во вкладке Events проверяйте список событий, если эта вкладка есть для транзакции.
Где искать поля
- Откройте транзакцию в SupraScan.
- Перейдите в
Advanced Information. - Раскройте
Output {...}. - Раскройте
Move -> events[]. - В каждом событии смотрите строку
typeи объектdata. - Ищите точное имя события через поиск страницы, например
WinnerRecordedEventилиRefundClaimPaidEvent.
type показывает имя события. data содержит поля события: draw_id, winner, amount, request_id, reason_code и другие значения, которые нужно сверять с ElyxS.
Что проверять по сценарию
| Что проверяете | Что искать | Поля в data |
|---|---|---|
| Покупка билетов | Function = sales::buy_tickets_paid; TicketPurchaseBatchEvent | draw_id, buyer, start_ticket_id, ticket_count, ticket_price_amount |
| Одиночная запись билета | TicketPurchasedEvent | draw_id, ticket_id, buyer, ticket_price_amount |
| VRF-запрос | RandomnessRequestedEvent | request_id, draw_id, round_id, total_tickets_at_request, round_snapshot_hash, request_payload_bcs, request_payload_hash, vrf_client_seed |
| Ответ VRF | RandomnessFulfilledEvent | request_id, draw_id, randomness |
| Итог обычного розыгрыша | DrawFulfilledEvent | draw_id, request_id, winners, ticket_indices, random_bytes, prize_amount, payload |
| Запись победителя | WinnerRecordedEvent | payout_id, draw_id, winner, ticket_index, amount, randomness_hash, payload_hash |
| Итог джекпота | JackpotFulfilledEvent | draw_id, request_id, winner, ticket_index, prize_amount, random_bytes, payload |
| Отмена розыгрыша | Function = cancellation::cancel_draw; DrawCanceledEvent | draw_id, reason_code, canceled_ts, previous_status, tickets_sold, proceeds_accum, jackpot_locked, pending_tickets_cleared |
| Возврат по игроку | DrawRefundEvent | draw_id, player, ticket_count, refund_amount, refund_ts |
| Подготовленная заявка на возврат | RefundClaimPreparedEvent | draw_id, recipient, ticket_count, amount, prepared_ts |
| Выплаченный возврат | Function = cancellation::claim_refund; RefundClaimPaidEvent | draw_id, recipient, amount, paid_ts |
| Получение приза | Function = payout_processor::claim_payout; PayoutStatusUpdatedEvent | payout_id, draw_id, previous_status, next_status |
Для связи VRF-запроса и результата сравните request_id и draw_id в RandomnessRequestedEvent и RandomnessFulfilledEvent. Они должны относиться к одному розыгрышу.
Коды и значения
Для отмены розыгрыша reason_code имеет два пользовательских значения:
1: недостаточное участие к крайнему сроку продаж.2: достигнут лимит билетов, но не выполнено минимальное требование участия.
Для выплат PayoutStatusUpdatedEvent использует статусы:
1: ожидает выплаты (pending).2: выплачено (paid).3: возвращено (refunded).4: истекло (expired).5: без денежной выплаты (non-monetary).6: аннулировано (voided).
Поля amount, prize_amount, refund_amount и ticket_price_amount в событиях записаны как числа без пользовательского форматирования. ElyxS показывает пользователю уже отформатированное значение.
В проверках джекпота ticket_index - это индекс взвешенной позиции билета, начиная с нуля, а не порядковый номер участника в интерфейсе.
Если событие не находится
Сначала проверьте сеть, хеш транзакции и draw_id. Затем убедитесь, что раскрыт именно Output -> Move -> events[] или открыта вкладка Events.
Если нужного события нет, не заменяйте его другой транзакцией с похожим draw_id. Вернитесь в ElyxS и откройте ссылку проверки заново.
Для обращения в поддержку приложите адрес кошелька, идентификатор розыгрыша, хеш транзакции, скриншот SupraScan и название поля или события, которое не совпадает.
Что открыть дальше
- Откройте Как проверить результат розыгрыша, если хотите начать с короткого пользовательского сценария.
- Откройте Как получить призы и возвраты, если проверяете выплату или возврат.
- Откройте Смарт-контракты, если нужен контекст по контрактам и адресам.
- Откройте Частые вопросы, если нужны короткие ответы по кошельку, dVRF и выплатам.