Как проследить сбой callback по дереву receipt в NEAR

Одна подписанная транзакция может породить несколько receipt на разных аккаунтах. Для поиска сбоя callback нужно восстановить связи между результатами исполнения.

Запросите подробности по подписанту и хешу

Укажите исходного отправителя. Расширенный метод tx_status может вернуть тела receipt наряду с результатами исполнения. Уровень FINAL дожидается также возвратных receipt. Узел, который не отслеживает шард подписанта, может не предоставить список receipt.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tx_status",
  "params": {
    "tx_hash": "TRANSACTION_HASH",
    "sender_account_id": "alice.testnet",
    "wait_until": "FINAL"
  }
}

Пройдите по порождённым идентификаторам

Начните с transaction_outcome.outcome.receipt_ids. Для каждого дочернего элемента найдите id в receipts_outcome и прочитайте executor_id, status, logs и последующие receipt_ids. Успешный начальный результат может породить элемент со статусом Failure. Для разбора сохраните хеш его блока и исполнителя.

Например, если A породил B и C, а C завершился ошибкой, приложите к инциденту логи C. Одного порядка элементов в массиве недостаточно для определения родителя C.

Источники