Activity Overview

Commits and releases over time

  • Commits
  • Releases
  • Authors

Repository Explorer

5 commits in all time Jun 08, 2026 02:12 – Sep 06, 2026 02:12 UTC
urtho blocksrv
Rate limit latest.json writes to one per 5 seconds
During a backfill the pointer writer wrote latest.json on every advance,
tens of thousands of overwrites per hour. Writes are now spaced by
seaweed.latest_interval (default 5s); kicks in between coalesce and the
final value is still flushed on shutdown.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RxR4odmoXozJ4UFUsjufir
Git Commit 5387c076 Branch main Document 6/133 ++ 49 --
urtho blocksrv
Align error responses with algod's message format
Error bodies are now {"message": "...", "data": {...}} like algod's
ErrorResponse, with algod's wording: unknown rounds answer
"failed to retrieve information from the ledger" (404), deltas
"failed retrieving State Delta: round N not found" (404), malformed
round parameters "Invalid format for parameter round: ..." (400).
Storage failures answer 500 with the cause under data.error.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RxR4odmoXozJ4UFUsjufir
Git Commit dd33e792 Branch main Document 5/107 ++ 35 --
urtho blocksrv
Add SeaweedFS S3 backend, remote import and /v2/status
Storage backend is now selected with store.backend (pebble, the default,
or seaweed). The seaweed backend writes one raw BlockData object per
round through the S3 gateway, laid out for direct serving:

  <prefix>blockdata/AAA/BBB/CCC/AAABBBCCCDDD.msgp  (immutable cache headers)
  <prefix>genesis.msgp
  <prefix>latest.json                              ({"last-round":N,...})

Objects are stored uncompressed on purpose; BTRFS zstd on the volume
server compresses consecutive blocks better than per-object gzip.

Shared pieces moved out of the pebble package: store/rounds (last-round
tracker, long-poll bulletin, binary search) and store/blockcodec.
The Ledger interface gains Close, HasLedgerBlock and small meta values.

New importer package: import.from mirrors genesis and rounds from
another blocksrv (skipping rounds already stored, persisting progress,
optionally following the source's tail) to migrate pebble deployments
to SeaweedFS without stopping the exporter. GET /v2/status reports the
last round and genesis identity.

Behaviour changes: unknown rounds answer 404 instead of 400, storage
failures answer 500, a genesis for a different network answers 409,
the pebble DB is closed on shutdown and its last-round pointer is
heal-checked at startup.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RxR4odmoXozJ4UFUsjufir
Git Commit a3ee4228 Branch main Document 31/3,517 ++ 359 --
urtho blocksrv
PQ bump
Git Commit ac2af7a1 Branch main Document 3/4 ++ 4 --
urtho blocksrv
PQ update
Git Commit fcb24e07 Branch main Document 4/29 ++ 95 --