TL;DR
The cold (immutable-file) half of the txhash store: build a streamhash MPHF index per group of chunks, and read getTransaction(byHash) point lookups against it. Build input comes from the cold txhash ingester in #765. Counterpart to the cold ledger reader (#725) and events cold-segment reader (#657).
Index format
Cold tx hashes are grouped into indexes of a configurable number of chunks each (default 1,000) — one streamhash MPHF per group, in its own file, over the (txhash, ledgerSeq) pairs in that range. Each tx hash maps to a fixed ledger seq stored directly in streamhash's per-key payload, so the index file is self-contained. A small per-key fingerprint rejects most MPHF false positives, with downstream txhash-in-LCM verification catching the rest.
Build
For each index, merge the per-chunk sorted tx hash files produced by #765's cold txhash ingester (over the index's chunk range) into one streamhash index via the sorted-mode builder — keys arrive pre-sorted, so the build is single-pass.
Read
Resolve a txhash to its transaction: look up the ledger seq in the streamhash index, read that ledger's LCM (cold ledger reader, #725), and pull the transaction's envelope / result / meta via the tx-details-by-hash view (#764). An index miss returns not-found; the tx-details view also rejects MPHF false positives — a candidate ledger that doesn't actually contain the txhash. rpc-hack cold_format.go / cold_reader.go are the starting point for the index lookup.
Acceptance
Dependencies
TL;DR
The cold (immutable-file) half of the txhash store: build a streamhash MPHF index per group of chunks, and read
getTransaction(byHash)point lookups against it. Build input comes from the cold txhash ingester in #765. Counterpart to the cold ledger reader (#725) and events cold-segment reader (#657).Index format
Cold tx hashes are grouped into indexes of a configurable number of chunks each (default 1,000) — one streamhash MPHF per group, in its own file, over the
(txhash, ledgerSeq)pairs in that range. Each tx hash maps to a fixed ledger seq stored directly in streamhash's per-key payload, so the index file is self-contained. A small per-key fingerprint rejects most MPHF false positives, with downstream txhash-in-LCM verification catching the rest.Build
For each index, merge the per-chunk sorted tx hash files produced by #765's cold txhash ingester (over the index's chunk range) into one streamhash index via the sorted-mode builder — keys arrive pre-sorted, so the build is single-pass.
Read
Resolve a txhash to its transaction: look up the ledger seq in the streamhash index, read that ledger's LCM (cold ledger reader, #725), and pull the transaction's envelope / result / meta via the tx-details-by-hash view (#764). An index miss returns not-found; the tx-details view also rejects MPHF false positives — a candidate ledger that doesn't actually contain the txhash. rpc-hack
cold_format.go/cold_reader.goare the starting point for the index lookup.Acceptance
ledgerSeqfor indexed tx hashes; clean not-found for misses.Dependencies