ledgerbackend.CaptiveStellarCore. It then requests a historical bounded range of ledgers to be replayed. The captive core instance will emit a stream of ledger metadata (xdr.LedgerCloseMeta) which contains the transactions per ledger in the range. It reads each ledger’s transactions using the ingest.LedgerTransactionReader, categorizes them as successful or failed, and tracks the operations associated with each transaction.