| Режим | Sequence | TicketSequence | Что меняется после validated result |
|---|---|---|---|
| Обычная транзакция | Текущий номер аккаунта | Отсутствует | AccountRoot.Sequence продвигается |
| Ticketed transaction | 0 | Номер существующего Ticket | Ticket object удаляется; обычный Sequence не расходуется |
| Оба поля ненулевые | Ненулевой | Указан | Malformed: такой payload нельзя включить |
- Режим
- Обычная транзакция
- Sequence
- Текущий номер аккаунта
- TicketSequence
- Отсутствует
- Что меняется после validated result
- AccountRoot.Sequence продвигается
- Режим
- Ticketed transaction
- Sequence
- 0
- TicketSequence
- Номер существующего Ticket
- Что меняется после validated result
- Ticket object удаляется; обычный Sequence не расходуется
- Режим
- Оба поля ненулевые
- Sequence
- Ненулевой
- TicketSequence
- Указан
- Что меняется после validated result
- Malformed: такой payload нельзя включить
Перед подписью безопаснее найти Ticket в validated ledger
TicketCreate резервирует будущие account sequence numbers и создаёт отдельные Ticket ledger objects. Их можно использовать в любом порядке, по одному на транзакцию. Проверяйте account_objects с type ticket на validated ledger и полный Account: Ticket другого аккаунта или уже удалённый object не подходит.
TicketSequence не заменяет назначение операции: Payment, AccountSet, EscrowFinish и другие типы сохраняют собственные поля и ошибки. В escrow TicketSequence может участвовать в идентификации созданного объекта, но здесь задача уже — доказать судьбу самого Ticket и transaction result.
Корректный ticketed payload содержит Sequence 0
Что сохранить перед submit
- 1Снимок Ticket
Сохраните Account, TicketSequence, индекс validated ledger и сам Ticket object до использования.
- 2Точный payload
Проверьте TransactionType, Account, Sequence=0, TicketSequence, Fee и все поля действия. Ненулевой Sequence вместе с TicketSequence даёт temSEQ_AND_TICKET.
- 3Граница действия
Для автоматической отправки задайте LastLedgerSequence. Сохраните его вместе с signed blob и transaction hash до broadcast.
- 4Контекст операции
Сверьте получателя, asset, amount, flags и authorization conditions. Ticket не исправляет DepositAuth, trust line или partial-payment ошибки.
DepositAuth способен отклонить входящий платёж независимо от очереди, а delivered_amount нужен для проверки фактически доставленной суммы partial payment. Ticket подставляется вместо account Sequence для уникальности и позволяет отправлять операции вне обычного порядка Sequence; место в очереди xrpld он не резервирует.
Отправка вне обычного порядка Sequence не означает отправку вне consensus или server queue. Если submit вернул terQUEUED, в очереди находится кандидат, а не сам Ticket, и результат остаётся предварительным. terPRE_TICKET означает, что указанного Ticket сейчас нет, но он ещё может быть создан другой транзакцией; tefNO_TICKET — что номер уже ниже текущего Sequence и такой Ticket позже не появится. Ни один из этих ответов не заменяет проверку hash и validated ledger.
Submit возвращает предварительный ответ, ledger — окончательный
engine_result от submit относится к предварительному применению на открытом ledger и может измениться. Опросите transaction hash до validated:true. Если запись появилась, прочитайте meta.TransactionResult и ledger index; только после этого повторно запросите Ticket object.
| Наблюдение | Ticket | Вывод |
|---|---|---|
| validated:true + tesSUCCESS | Израсходован | Операция применена; проверить ожидаемое state change |
| validated:true + tec... | Израсходован | Операция не достигла цели, fee списана |
| tem malformed | Не израсходован этим payload | Исправить поля и заново подписать |
| terQUEUED в submit | Не доказано | Кандидат помещён в очередь; результат предварительный |
| terPRE_TICKET или tefNO_TICKET | Не доказано | Сверить точный код, Account.Sequence и validated Ticket objects |
| Другой tel, ter или tef в submit | Не доказано | Ответ может быть предварительным или локальным; проверить hash и срок |
| txnNotFound до LastLedgerSequence | Не доказано | Транзакция ещё может попасть в допустимый ledger |
| Не найдена после LastLedgerSequence при непрерывной history | Не израсходован этой транзакцией | Дополнительно проверить наличие Ticket и другие tx |
- Наблюдение
- validated:true + tesSUCCESS
- Ticket
- Израсходован
- Вывод
- Операция применена; проверить ожидаемое state change
- Наблюдение
- validated:true + tec...
- Ticket
- Израсходован
- Вывод
- Операция не достигла цели, fee списана
- Наблюдение
- tem malformed
- Ticket
- Не израсходован этим payload
- Вывод
- Исправить поля и заново подписать
- Наблюдение
- terQUEUED в submit
- Ticket
- Не доказано
- Вывод
- Кандидат помещён в очередь; результат предварительный
- Наблюдение
- terPRE_TICKET или tefNO_TICKET
- Ticket
- Не доказано
- Вывод
- Сверить точный код, Account.Sequence и validated Ticket objects
- Наблюдение
- Другой tel, ter или tef в submit
- Ticket
- Не доказано
- Вывод
- Ответ может быть предварительным или локальным; проверить hash и срок
- Наблюдение
- txnNotFound до LastLedgerSequence
- Ticket
- Не доказано
- Вывод
- Транзакция ещё может попасть в допустимый ledger
- Наблюдение
- Не найдена после LastLedgerSequence при непрерывной history
- Ticket
- Не израсходован этой транзакцией
- Вывод
- Дополнительно проверить наличие Ticket и другие tx
Общая проверка криптоперевода помогает связать hash, сеть и recipient, но в XRPL добавьте validated flag, LastLedgerSequence и meta.TransactionResult. Баланс или красная метка интерфейса не заменяют эту связку.
Перед retry докажите и expiry, и состояние Ticket
Если transaction не найдена, дождитесь, пока validated ledger пройдёт LastLedgerSequence. Сервер должен иметь непрерывную историю за весь допустимый диапазон; иначе txnNotFound не финален. Затем проверьте account_objects. Ticket всё ещё существует — можно строить новый payload с этим Ticket; Ticket исчез — найдите validated transaction, которая его израсходовала.
Официальный tutorial допускает убрать LastLedgerSequence у Ticket-транзакции, которую долго собирают для multisigning. Это компромисс: payload не истечёт во время сбора подписей, но простого ledger-boundary для окончательного «не была включена» не будет. Для автоматической отправки безопаснее подписывать свежий bounded payload ближе к submit.
Стоп-сигналы перед повтором
- смотрят open ledger, но называют результат validated;
- terQUEUED называют успешным расходом Ticket;
- Ticket исчез, а transaction metadata не найдена;
- validated tec трактуют как свободный Ticket;
- LastLedgerSequence прошёл, но у сервера есть пробел в истории;
- в новом payload меняют действие вместе с очередью и не проводят повторную проверку.
Источники
Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.
- XRPL Docs — Tickets XRP Ledger Foundation · Проверено 30 августа 2026 г. в 15:40 GMT+5
- XRPL Docs — Use Tickets XRP Ledger Foundation · Проверено 30 августа 2026 г. в 15:40 GMT+5
- XRPL Docs — Reliable Transaction Submission XRP Ledger Foundation · Проверено 30 августа 2026 г. в 15:40 GMT+5
- XRPL Docs — Finality of Results XRP Ledger Foundation · Проверено 30 августа 2026 г. в 15:40 GMT+5
- XRPL Docs — Basic Data Types XRP Ledger Foundation · Проверено 30 августа 2026 г. в 15:40 GMT+5
- XRPL Docs — tem Codes XRP Ledger Foundation · Проверено 30 августа 2026 г. в 15:40 GMT+5
- XRPL Docs — Transaction Queue XRP Ledger Foundation · Проверено 30 августа 2026 г. в 15:40 GMT+5
- XRPL Docs — ter Codes XRP Ledger Foundation · Проверено 30 августа 2026 г. в 15:40 GMT+5
- XRPL Docs — tef Codes XRP Ledger Foundation · Проверено 30 августа 2026 г. в 15:40 GMT+5
