Besu connector: ожидание receipt
Конкретный retry не является обещанием времени финальности.
Feature: Receipt еще не найден
Scenario: Receipt еще не найден
Given транзакция принята но блок не получен
When connector запрашивает receipt
Then он не сообщает финансовую финализацию до receipt
And ошибка ожидания не доказывает отсутствие транзакции в цепочкеРеализация в исходниках
handleGetReceipt читает receipt один раз. Ответ transaction receipt not found оставляет операцию в ожидании и не публикует TransactionFailedEvent. Системный BlockRead без context принимается только как уведомление блока; транзакционные события без context отклоняются. CFA запрашивает receipt для незавершенных транзакций блока и дополнительно обходит сохраненные операции страницами до 100 записей с keyset cursor. Проверяются CREATED и ONCHAIN_SUBMITTED с txHash, а также FAILED с неопределенным результатом или резервом RECONCILIATION_REQUIRED; окончательно отклоненные и завершенные операции исключены. Ошибка публикации не продвигает cursor. Успешное чтение дает ReceiptReady, но предметная проверка цепочки остается обязательной.
Расширенная сверка и прием BlockRead без context проверены локально. Активация разрешена владельцем 11 октября 2026 года; точная ревизия и production-проверка фиксируются в release evidence. Разрешенный scope — сверка прежних операций с сохраненным txHash через существующий финализатор, без создания новых транзакций.
Риск интерпретации
Период блока в наблюдавшейся сети — 60 секунд. Отсутствие receipt не доказывает откат и не разрешает новую финансовую команду. Резерв и окончательное состояние определяются прежним финализатором CFA. Listener хранит checkpoint в памяти; сверка сохраненных операций при следующем BlockRead восстанавливает запросы receipt из пропущенных блоков без повторного подписания или отправки транзакции. При отсутствии новых BlockRead обход не запускается. Активация recovery может завершить старые операции и изменить остатки: необходим отдельный согласованный production scope; откат образа не отменяет уже финализированные проводки. Источники: apps/services/besu-connector/internal/handlers/router.go, internal/besu/client.go; apps/services/cfa-core/src/domains/cfa/presentation/cfa-events.controller.ts и application/handlers/besu-events.handler.ts. Разбор ошибок.