Trace a failed callback through a NEAR receipt tree

A single signed transaction can generate several receipts on different accounts. Locating a callback failure requires following the execution edges between those receipts.

Request execution details by signer and hash

Use the original sender account in the query below. The extended tx_status method can supply receipt bodies in addition to execution outcomes. Asking for FINAL gives refund receipts time to finish. A node that does not track the signer’s shard may omit the receipt list.

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

Follow the generated receipt identifiers

Start with transaction_outcome.outcome.receipt_ids. For each child, find its id in receipts_outcome and inspect executor_id, status, logs and further receipt_ids. A successful initial outcome can still generate a child whose status is Failure. Record that child’s block hash and executor for debugging.

For instance, if A creates B and C, and C fails, attach C’s logs to the incident. The order in the returned list alone cannot establish which parent created C.

Sources