Repository navigation
⚠️ Breaking changes
- DB schema v2 — re-index required. Rune tx keys are now big-endian. Remove the
titan-datavolume before upgrading from v1.x (and before rolling back to v1.x). GET /address/{address}returns{ value, runes, output_count }; outputs moved toGET /address/{address}/outputs?skip&limit.GET /mempool/txidsis paginated (default/max 1000).GET /mempool/entries/allis replaced byGET /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_PASSWORDmust 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;
rocksdbcrate 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. /statusand/tipreturn 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(also2.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