Skip to content

Rates Engine v0.5.0-rc.78

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 May 23:34
· 523 commits to main since this release

[v0.5.0-rc.78] — 2026-05-26

Added

  • soroban_events raw-event landing zone (ADR-0029). Every
    Soroban contract event the dispatcher routes is now also
    captured to a new soroban_events hypertable as a raw row
    (contract_id + topics-as-XDR + body-as-XDR + op_args-as-XDR
    when applicable, plus a decoded topic_0_sym for the common
    Symbol/String case). Additive — existing per-source decoders
    (trades, blend_auctions, etc.) continue to write their
    domain-specific tables unchanged. Unblocks: future per-source
    decoder backfills (Blend money-market, CCTP+Rozo, Comet/
    Phoenix/Soroswap gaps, plus every protocol we add ever) are
    now INSERT … SELECT FROM soroban_events SQL queries rather
    than MinIO walks. New backfill mode:
    ratesengine-ops backfill -source soroban-events -from N -to M
    populates the table for historical ranges without per-source
    decoding overhead. Compression after 7 days, segment-by
    contract_id. Initial estimated volume ~100-400 GB across the
    full Soroban era.

Fixed

  • fd-2 wrap drain-on-exit (#62a / regression in rc.77). The
    rc.77 SilenceSDKChecksumWarnings wrap (the actual fix for the
    SDK checksum WARN flood that the rc.72 env-var fix never
    achieved) silenced the noise for long-running daemons but
    dropped output entirely for short-lived processes — a
    consequence of the consumer goroutine reading from the pipe in
    the background, never given a chance to drain before
    os.Exit() killed it. Manifest: ratesengine-ops backfill -dry-run printed only the first line then ate the rest;
    ratesengine-ops backfill errors printed nothing —
    diagnosable only by binary-rollback to rc.76. The wrap now
    returns a flush func() that dup2's the saved real-stderr
    back onto fd 2, closes the pipe writer, and waits on the
    consumer's WaitGroup. main() in cmd/ratesengine-indexer and
    cmd/ratesengine-ops is now a thin os.Exit(realMain())
    shim — defers (including defer flush()) run inside realMain
    before main calls os.Exit with the returned code, so even
    error paths drain the pipe.