Как проследить сбой 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.