Skip to content

Synthetic ledger datasets for Phases 1–3 ("golden packs") #867

Closed

Description

@marwen-abid

TL;DR

Generation is complete. Six synthetic ledger datasets — one per (tx model, TPL) pair in the Phase 1–3 table — were generated with stellar-core apply-load and uploaded, byte-verified, to GCS. Benchmarks replay them (--source=pack); generation is one-time, campaigns never regenerate. Open work on this issue: freeze the raw streams into ledger packs, and regenerate sac-6000 at full length.

Design: datasets are keyed by (tx model, TPL)

A dataset bakes in only the transaction model and the transactions-per-ledger count. Block time is applied at replay (--close-interval), so phases that share a TPL share a dataset. Six datasets cover all nine phase cells:

SAC transfer OZ token transfer Soroswap swap
Phase 1 (2 s blocks) sac-6000 custom_token-4000 soroswap-1500
Phase 2 (1 s blocks) sac-5000 custom_token-4000 soroswap-1500
Phase 3 (600 ms blocks) sac-6000 custom_token-3600 soroswap-1800

The set

Location: gs://rpc-full-history/synthetic-ledgers/2026-07-18-apply-load-20k/<model>-<tpl>/. Each dataset directory holds METADATA.md (exact config, build, validation stats), apply-load.cfg, apply-load.log, and meta.xdr.zst. The set is immutable once referenced by a campaign; frozen packs land under <dataset>/packs/cold/.

Dataset TPL Ledgers Raw meta Compressed (zstd-19)
sac-6000 6000 11,008 (partial) 155 GiB 17.5 GiB
sac-5000 5000 20,000 236 GiB 24.8 GiB
custom_token-4000 4000 20,000 204 GiB 13.9 GiB
custom_token-3600 3600 20,000 183 GiB 11.9 GiB
soroswap-1500 1500 20,000 178 GiB 6.8 GiB
soroswap-1800 1800 20,000 213 GiB 8.5 GiB

Totals: ≈111 k ledgers, ≈384 M Soroban transactions, 1.14 TiB raw meta → 83.3 GiB compressed.

Build: stellar-core 27.1.1-3420.8612ca32f (~perftests, master of 2026-07-17), run on the benchmarking devbox (#866). The streams carry the pubnet network passphrase, so the stored transaction result hashes are correct as-is. This set supersedes the 2026-06-04 set (generated on a pre-fix build) for all benchmark use.

Validation per dataset: final ledger sequence matches the target count, stream growth monitored through generation, and every upload byte-verified against the local file before local deletion.

Remaining work

  • Freeze each dataset into ledger packs at <dataset>/packs/cold/ — the form the campaigns consume (--source=pack).
  • Regenerate sac-6000 at full length (20,000 ledgers). SAC generation mints a fresh destination address per transaction and all live Soroban state is held in process memory, so peak RSS reaches ≈52 GiB at full length (≈0.41 GiB per million transactions) — the run needs a ≥96 GB RAM box. Until then, campaigns use chunk 1 (10,000 ledgers) of the partial.
  • Publish the generation runbook (build → generate → validate → upload → freeze), so anyone on the team can regenerate a dataset.

Consumers

Done when

All six dataset directories carry packs/cold/, sac-6000 is full-length, and the campaigns consume packs from this set.

Metadata

Metadata

Assignees

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions