Skip to content

v0.7.3

Choose a tag to compare

@janx janx released this 07 Sep 05:50
· 1207 commits to main since this release

v0.7.3 restores historical did:ckb indexing, fixes intermittent DAO listing errors, and expands the opt-in peer crawler with resumable rounds and inspectable discovery and session evidence.

Goal

  • Preserve protocol facts throughout bulk sync, keep API reads coherent while the indexer advances, and make locally observed CKB peer evidence available through the API, web UI, and TUI.

Principle Alignment

  • CKB Native: did:ckb identities and their historical outpoint mappings are derived from chain data through the existing protocol-facts parser.
  • Local First: the crawler checkpoints its work in local RocksDB and resumes across execution slices and process restarts. Network observations remain separate from replayable chain data.
  • Agent Friendly: verification exposes check selection and endpoint overrides, and peer endpoints expose typed observations and their provenance.
  • Store ownership: corrected identity writes target the indexer-owned domain store. Crawler state and observations target the crawler-owned network store. The append-only cell-payload format and write-once semantics are unchanged; APIs remain read-only.

Result

  • Retain did:ckb facts during bulk sync. The binary bulk parser now carries did:ckb protocol facts into identity materialization. This fixes missing historical identities and the later live-sync failure when one of their cells is consumed. An exhaustive match prevents future protocol-backed tags from silently dropping their facts, with a regression using a real testnet cell.
  • Keep secondary-store reads coherent. Each HTTP request pins one read view while RocksDB catch-up is coordinated across secondary stores. DAO status listings now resolve their index rows and deposits through the same view, fixing intermittent HTTP 500 responses during normal withdrawal transitions. The cycles long-poll releases its pin before waiting for new data.
  • Make verification selectable. ckbadger verify exposes --checks, --no-explorer, output format, sampling controls, endpoint overrides, and cache configuration. Unknown checks, checks above the selected depth, and ambiguous orchestrator-level endpoint overrides fail explicitly. The suite now includes an exact DAO status-index cross-check, bringing it to 57 checks.
  • Resume and finish crawl rounds. Durable frontiers, bounded concurrent dialing, fair alias retries, and atomic checkpoints preserve progress across slices and restarts. A completed snapshot is published only after the round drains; crawl --once now completes one whole logical round. Discovery aliases are canonicalized and validated consistently at scheduling and publication.
  • Inspect peer evidence. The API, web UI, and TUI expose Discovery advertisements, advertiser provenance, per-address dial outcomes, and direct sessions reported by the configured local CKB node. Peers observed only through direct sessions remain visible. Session direction is relative to that local node, and RPC session addresses are kept separate from reusable dial aliases. The observer's genesis hash must match the configured network.

Upgrade instructions

Re-sync required: yes. Earlier bulk syncs omitted did:ckb identity rows and outpoint mappings in the domain store. Stop ckbadger, purge the affected chain stores or initialize a fresh work directory, then start v0.7.3 and sync from genesis. Existing databases are not repaired or backfilled by this release.

Existing crawler installations also need these changes:

  1. Rename [crawler].round_budget_secs to [crawler].slice_budget_secs in each network's configuration. The old key is rejected.
  2. Recreate the network primary and its API secondary, then crawl again. Default mainnet paths are work/mainnet/data/network and work/mainnet/data/network-api-secondary. The network schema is incompatible with previous serialized values, and a chain purge does not clear this separate observation store.
  3. Update API clients from /api/v1/network/nodes to /api/v1/network/peers, including detail routes. History metrics totalNodes and reachableNodes become verifiedPeers and reachablePeers; summary and peer response fields also change. See the network API contract.

Validation

  • The release workflow passed and published the Linux x86_64 archive and SHA-256 checksum.
  • The downloaded archive passed sha256sum -c; the packaged binary reports ckbadger 0.7.3@86135d398027.
  • Frontend production build, TypeScript checking, and lint passed.
  • CI for the tagged commit is not green: 803 frontend tests passed and one script-detail test failed (renders zero-deployment versions without synthesizing fake deployment rows). Rust Clippy failed on the Rust 1.98 chunks_exact_to_as_chunks lint in crates/ckbadger-store/src/stats_ops.rs:49, so the Rust test step did not run.
  • A targeted local run of pnpm exec vitest run __tests__/pages/script-detail.test.tsx passed all five tests on the tagged commit; this does not replace the full CI result above.

Full changelog: v0.7.2...v0.7.3