Skip to content

TxHash cold store — streamhash index (build + read) #728

Description

@karthikiyer56

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions