Skip to content

Releases: sierpeproject/sierpe

v1.12.0

Choose a tag to compare

@zkCaleb-dev zkCaleb-dev released this 30 Sep 20:02
a95c556

v1.12.0

Added — Movements carry txHash. New rows get it at derivation; rows
indexed before the migration are filled by the new idempotent
POST /v1/admin/movements/tx-hashes: local joins over rows the database
already trusts, then the remainder resolved from the public History
Archives in application order — no replay, no captive core, no retention
limit. Repeat the POST until done: true.

Additive release: nullable column, omitempty API field, cursors
untouched. Upgrade by bumping the image tag.

v1.11.0

Choose a tag to compare

@zkCaleb-dev zkCaleb-dev released this 30 Sep 19:28
48e8dbe
v1.11.0

v1.10.2

Choose a tag to compare

@zkCaleb-dev zkCaleb-dev released this 30 Sep 19:28
dd2a6e4
v1.10.2

v1.10.1

Choose a tag to compare

@zkCaleb-dev zkCaleb-dev released this 10 Sep 02:42
205eead
v1.10.1

v1.10.0

Choose a tag to compare

@zkCaleb-dev zkCaleb-dev released this 10 Sep 02:17
26b0654
v1.10.0

v1.9.0

Choose a tag to compare

@zkCaleb-dev zkCaleb-dev released this 08 Sep 15:56
dc9fb6e
v1.9.0

v1.8.0

Choose a tag to compare

@zkCaleb-dev zkCaleb-dev released this 07 Sep 23:37
7fc30ba

Changed

  • New gaps are trimmed against the open ones below them, and a resolving gap hands its clamped registrations to the deepest gap still open. Registrations arrive in batches over days and every batch clamps at its own ever-rising retention wall; untrimmed gaps overlapped on everything below the previous wall, so the archive leg replayed the same deep history once per batch — for a staged mainnet backfill that tripled the captive-core replay. An open gap is a standing promise to heal its range, so the trim leaves the un-vouched set exactly as it was, and the handoff keeps a late batch's declared coverage descending with the deeper heal instead of freezing at the shared floor.

Fixed

  • The events cursor now carries and enforces its kind. Every other endpoint stamped its cursors, but /events — the oldest codec — never did, so a cursor minted by a different endpoint whose fields happened to unmarshal was accepted. New events cursors carry kind: events; a foreign kind is rejected with 400; cursors minted before the stamp carry no kind and remain valid, so nothing in the wild breaks.

Upgrade

Pull ghcr.io/zkcaleb-dev/sierpe:v1.8.0 (or v1.8.0-full). No migration. Recommended before registering additional contract batches on an instance that already has open gaps. Railway template users: edit your service's image tag.

v1.7.0

Choose a tag to compare

@zkCaleb-dev zkCaleb-dev released this 07 Sep 23:37
fecca53

Changed

  • Backfill walks now share their scans. Chunks sit on an absolute 2000-ledger grid, and contracts whose next chunk is the same range form a group whose ledgers are fetched and extracted once — each contract still commits its own rows and watermark atomically, so a failed commit isolates to its contract while the rest keep their progress; the trailing contract retries through a one-entry scan cache instead of re-downloading the range. A contract walking alone is a group of one and behaves as before. This is what makes registering many contracts at once affordable: N same-range registrations previously cost N copies of every RPC download. sierpe_backfill_chunks_total and sierpe_backfill_ledgers_scanned_total now count scans actually performed (once per shared chunk).

Fixed

  • The getLedgers batch shrink (1.5.1) had no memory: every call restarted at the full batch size and re-paid the aborted oversized downloads against the body cap, silently multiplying the bandwidth of a heavy-range walk roughly four times (found on the first mainnet homelab deployment: ~1.75 MB of meta per ledger near the tip). The client now remembers the batch size that fit and probes 25% higher only after every 8 successful batches.

Upgrade

Pull ghcr.io/zkcaleb-dev/sierpe:v1.7.0 (or v1.7.0-full). No migration, no API change. Railway template users: edit your service's image tag.

v1.6.0

Choose a tag to compare

@zkCaleb-dev zkCaleb-dev released this 07 Sep 23:37

Added

  • Movements now store and serve the raw ContractEvent XDR they were decoded from (rawXdr on /v1/contracts/{id}/movements, migration 0011). The emitting token is usually not registered, so no events row exists to join to and the original bytes were unrecoverable from the database; consumers that re-emit movements into their own pipelines need the event itself, not the decode. Rows ingested before the migration have no stored event to backfill from and omit the field.
  • Archived contracts register. POST /v1/contracts with explicit kinds now accepts a contract whose instance is no longer live on chain (archived after TTL expiry — the RPC cannot tell that apart from one that never existed). It registers as classification unknown and the response carries a new warnings array saying so; history is still derived from whatever sources reach: an archived contract's past exists in the History Archives even when its instance does not. Without explicit kinds the 404 stands. Re-registering after a restore re-classifies.

Security

  • Toolchain pinned to go1.25.13 and vulnerable indirect dependencies upgraded (grpc 1.82.1, aws-sdk-go-v2 eventstream 1.7.8 / s3 1.97.3): clears every reachable finding govulncheck reported against binaries built from go1.25.0.

Upgrade

Pull ghcr.io/zkcaleb-dev/sierpe:v1.6.0 (or v1.6.0-full for the archive leg); migration 0011 applies itself at boot. Railway template users: edit your service's image tag — template updates never touch already-deployed instances.

v1.5.2

Choose a tag to compare

@zkCaleb-dev zkCaleb-dev released this 22 Aug 04:38
f5fdc9e
v1.5.2