Skip to content

Titan v2.0.0

Latest

Choose a tag to compare

@0xfinetuned 0xfinetuned released this 20 Oct 16:16

⚠️ Breaking changes

  • DB schema v2 — re-index required. Rune tx keys are now big-endian. Remove the titan-data volume before upgrading from v1.x (and before rolling back to v1.x).
  • GET /address/{address} returns { value, runes, output_count }; outputs moved to GET /address/{address}/outputs?skip&limit.
  • GET /mempool/txids is paginated (default/max 1000).
  • GET /mempool/entries/all is replaced by GET /mempool/entries?skip&limit.
  • The Rust client (arch-titan-client) and TS SDK are updated to match.
  • Docker/compose no longer expose Bitcoin RPC or ship default passwords; BITCOIN_RPC_PASSWORD must be set.

Correctness and durability

  • RocksDB: WAL always on, flush covers every column family, CF tuning applied to data CFs, rollback removes rune tx rows, exact-match address lookups, no panics on corrupt values; rocksdb crate upgraded (builds on GCC 16).
  • Updater: real writer lock for read-modify-write, coherent rune cache, fatal background write failures, mainnet genesis rune, atomic and off-by-one-free reorgs, RBF-safe mempool reverts, no leaked pre-index txids or fetcher threads, RPC errors retried.
  • Address outputs of a just-confirmed transaction still in the mempool index are listed once, so pages match output_count.
  • /status and /tip return 503 before the first block is indexed.

Hardening

  • HTTP body limits, corrected error status codes, bind failures abort startup, panic hook limited to the indexer thread, enforced --bitcoin-rpc-limit, env-configurable options.
  • Webhooks: bearer auth, delivery caps, retries only on network errors / 408 / 425 / 429 / 5xx; endpoints with credentials or longer than 2048 bytes are rejected; only public unicast targets allowed (blocks NAT64, 6to4, Teredo, IPv4-compatible and benchmarking ranges).
  • TCP subscriptions: connection caps and timeouts.

Clients, infra, CI

  • Client fixes: URLs, JSON content type, backoff, heartbeat, resubscribe; TS types aligned with server JSON.
  • New CI workflow: fmt, clippy -D warnings, tests, TS lint/build.

Artifacts

  • Docker: ghcr.io/arch-network/titan:2.0.0 (also 2.0, 2)
  • crates.io: arch-titan-types-core, arch-titan-types-api, arch-titan-client @ 2.0.0

Full changelog: v1.3.5...v2.0.0