Skip to main content
Core’s tests check that core produces the right ledger. Istravex checks what happens after: whether SDKs decode it exactly, and whether indexers store what it means. It also uses core’s golden ledgers directly, as a second corpus.
Each one is real, verified byte for byte against its ledger, and discriminates: a known-wrong indexer fails it and a known-right one passes. A thousand fixtures that everything passes would test nothing. Breadth comes from the 15,306 golden frames; the corpus is for targeted patterns, and it’s growing.
No. To lint Go code you need Go. To replay into your indexer you need nothing but an HTTP client and the hosted RPC. Go and Rust are only needed to run all three SDK runners yourself.
Yes. Every rule applies in any language; only the linter is Go-specific. The 64-bit integers rule matters most in JavaScript and Python.
The canonical ledgers are available as files (GET /v1/ledgers/{network}/{seq}) in the same zstd LedgerCloseMetaBatch format as SDF’s data lake, so a Galexie-style reader can consume them directly. A Horizon-compatible mock isn’t planned.
They come from sources independent of the SDKs under test: Horizon for mainnet, the transaction as constructed for testnet and generated fixtures. And the fixtures themselves are proven byte-identical to the ledger. If you still think one is wrong, open an issue; that’s a finding too.
Yes: 1,200 requests per minute for the read API and 300 for RPC, per client. For more, run your own.