Сначала отделите включённую группу от отклонённой
Статусы `Backtracked`, `Failed` и `Skipped` находятся в метаданных уже включённой операции. Ошибка при формировании, подписи, отправке или проверке пула может оставить группу вне блока. Тогда из неё нельзя выводить снятие комиссии или расход счётчика: сначала найдите хеш в подтверждённом блоке.
Сохраните хеш группы, блок, `branch`, единственный `source`, подпись и массив `contents` в исходном порядке. Счётчики элементов должны идти без разрывов. Операция `Reveal`, то есть раскрытие публичного ключа, встречается не больше одного раза и стоит первой. Общая проверка транзакции поможет собрать доказательства включения.
Первый элемент со статусом `Failed` меняет результат группы
| Статус | Что произошло | Что осталось в состоянии |
|---|---|---|
| `Applied` | Элемент исполнился, а весь пакет завершился без последующего сбоя | Его прикладной эффект, комиссия и счётчик |
| `Backtracked` | Элемент успел исполниться, но поздний `Failed` отменил его эффект | Комиссия и счётчик; прикладное изменение откатилось |
| `Failed` | На этом элементе возникла ошибка применения | Ошибка, комиссия и счётчик; прикладного эффекта нет |
| `Skipped` | После `Failed` элемент уже не исполнялся | Комиссия и счётчик обработаны заранее; прикладного эффекта нет |
- Статус
- `Applied`
- Что произошло
- Элемент исполнился, а весь пакет завершился без последующего сбоя
- Что осталось в состоянии
- Его прикладной эффект, комиссия и счётчик
- Статус
- `Backtracked`
- Что произошло
- Элемент успел исполниться, но поздний `Failed` отменил его эффект
- Что осталось в состоянии
- Комиссия и счётчик; прикладное изменение откатилось
- Статус
- `Failed`
- Что произошло
- На этом элементе возникла ошибка применения
- Что осталось в состоянии
- Ошибка, комиссия и счётчик; прикладного эффекта нет
- Статус
- `Skipped`
- Что произошло
- После `Failed` элемент уже не исполнялся
- Что осталось в состоянии
- Комиссия и счётчик обработаны заранее; прикладного эффекта нет
Представьте три элемента. Первый перевод выполнился, второй контрактный вызов упал, третий не запускался. Метаданные покажут `Backtracked`, `Failed`, `Skipped`. Баланс первого получателя не должен измениться, а третий вызов не оставит событий. Это и есть атомарность прикладной части.
Сначала протокол обрабатывает комиссии и защиту от повтора. В Ushuaia функция `take_fees` проходит весь список, снимает комиссию и увеличивает счётчик каждого элемента. Затем начинается исполнение прикладных действий. Поэтому поздний `Skipped` не означает бесплатный элемент или неиспользованный счётчик.
Сверьте каждый элемент по метаданным
| Позиция | Сохранить | Контрольный вопрос |
|---|---|---|
| каждый элемент | `kind`, `source`, `fee`, `counter`, `gas_limit`, `storage_limit` | Порядок и счётчики идут без разрыва? |
| метаданные | `status`, `errors`, `balance_updates` | Где первый `Failed` и какие комиссии списаны? |
| `Backtracked` до сбоя | успешный результат до отката | Ожидаемое состояние действительно вернулось? |
| `Skipped` после сбоя | исходные параметры и списание комиссии | Элемент точно не исполнялся, но счётчик уже учтён? |
| аккаунт после блока | свежий сетевой счётчик и баланс | С какого значения строить новую группу? |
- Позиция
- каждый элемент
- Сохранить
- `kind`, `source`, `fee`, `counter`, `gas_limit`, `storage_limit`
- Контрольный вопрос
- Порядок и счётчики идут без разрыва?
- Позиция
- метаданные
- Сохранить
- `status`, `errors`, `balance_updates`
- Контрольный вопрос
- Где первый `Failed` и какие комиссии списаны?
- Позиция
- `Backtracked` до сбоя
- Сохранить
- успешный результат до отката
- Контрольный вопрос
- Ожидаемое состояние действительно вернулось?
- Позиция
- `Skipped` после сбоя
- Сохранить
- исходные параметры и списание комиссии
- Контрольный вопрос
- Элемент точно не исполнялся, но счётчик уже учтён?
- Позиция
- аккаунт после блока
- Сохранить
- свежий сетевой счётчик и баланс
- Контрольный вопрос
- С какого значения строить новую группу?
Ошибка первого элемента со статусом `Failed` вызвала прикладной откат. Проверьте её трассу, параметры контракта, газ и лимит хранения данных. У поздних `Skipped` нет собственной ошибки: они не запускались. Симуляция новой группы должна выполняться на свежем состоянии, а не на снимке до неудачного блока.
Повторяют действие, но не старый счётчик
Запросите счётчик аккаунта из поля `source` после блока с неудачной группой. Следующая управляющая операция использует значение на единицу больше. Для включённого пакета со счётчиками от `n` до `n+k−1` это обычно `n+k`. Не вычисляйте его по позиции `Failed`: поздние элементы `Skipped` уже прошли этап счётчика.
Пересборка без слепого повтора
- 1Исправьте первый элемент со статусом `Failed`
Измените только причину ошибки и пересмотрите зависимые поздние действия. Эффекты элементов со статусом `Backtracked` нужно включить снова, если они всё ещё нужны.
- 2Возьмите свежие `branch` и счётчик
Получите голову сети, текущий счётчик и баланс источника. Не копируйте подписанные байты старой группы.
- 3Симулируйте весь пакет
Проверьте каждый элемент, общую подпись, последовательность счётчиков, комиссии, газ и лимиты хранения данных на одном состоянии.
- 4Подпишите и проверьте результат
После включения убедитесь, что все элементы получили `Applied`, а ожидаемое состояние и новый счётчик совпали.
Если исходная группа так и не вошла в блок, разберите причину отклонения пулом и конфликт с другой операцией того же управляющего аккаунта. Свежий счётчик может всё ещё совпадать со старым первым значением. Отсутствие на одном RPC этого не доказывает: сравните синхронизированные узлы.
Успех подтверждают `Applied` у каждого элемента и новое состояние
Хеш группы и включение в блок показывают доставку, а не успех каждого элемента. Проверка завершена, когда все элементы имеют `Applied`, а балансы, события контрактов и новый счётчик совпадают с ожиданиями. Учитывайте результат только после проверки финальности по правилам сети.
Перед новой подписью подтвердите включение старой группы, прочитайте `metadata.operation_result` каждого элемента и запросите свежие `branch`, баланс и счётчик. Симуляция должна использовать текущее состояние контракта, а не снимок до сбоя.
Источники
Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.
- Octez active protocol — Validation and Application Tezos · Проверено 25 августа 2026 г. в 09:22 GMT+5
- Octez active protocol RPC schema Tezos · Проверено 25 августа 2026 г. в 09:22 GMT+5
- Octez v25.1 Ushuaia apply.ml at commit 04d849eb8c8d Tezos · Проверено 25 августа 2026 г. в 09:22 GMT+5
- Octez — Protocol and client versions Tezos · Проверено 25 августа 2026 г. в 09:22 GMT+5
- Tezos mainnet head protocol Tezos Foundation · Проверено 25 августа 2026 г. в 09:22 GMT+5
