Tier: S (1-2 days) | Type: perf
Context. createHorizonClient (PR #155) added retry and backoff, and PR #154 pipelined fetch with decrypt, but a cold scan still walks Horizon page-by-page sequentially. For a fresh wallet with a distant first-seen ledger, splitting the range into N chunks fetched in parallel is a straight wall-clock win.
Scope.
- Add
parallelism?: number to the stellar scan config (default 1 for backwards compat).
- Split the total ledger range into N contiguous chunks, fetch each concurrently, merge back into the async iterable in
(ledger, seq) order.
- Respect the existing retry / circuit breaker per chunk.
- Bench in
test/chains/stellar/bench/scan.bench.ts at parallelism = 1 / 4 / 8.
Acceptance.
Files. src/chains/stellar/scan.ts, src/chains/stellar/announcements.ts, src/chains/stellar/rpc.ts, test/chains/stellar/bench/scan.bench.ts.
Tier: S (1-2 days) | Type: perf
Context.
createHorizonClient(PR #155) added retry and backoff, and PR #154 pipelined fetch with decrypt, but a cold scan still walks Horizon page-by-page sequentially. For a fresh wallet with a distant first-seen ledger, splitting the range into N chunks fetched in parallel is a straight wall-clock win.Scope.
parallelism?: numberto the stellar scan config (default 1 for backwards compat).(ledger, seq)order.test/chains/stellar/bench/scan.bench.tsatparallelism= 1 / 4 / 8.Acceptance.
parallelism>= 4 on a 50k-ledger canned rangeFiles.
src/chains/stellar/scan.ts,src/chains/stellar/announcements.ts,src/chains/stellar/rpc.ts,test/chains/stellar/bench/scan.bench.ts.