Development Log

Every release, every change, transparently documented

v2.1.6 latest
April 15, 2026
Sync Recovery (critical fix)
  • Fixed infinite sync loop after corrupted snapshot restore — nodes now auto-detect and reset
  • Startup sanity check: if chain data is corrupted (cumulative_work inconsistent), auto-wipe and fresh sync
  • Stale blocks are now cleared from DB during chain reset (prevents poisoned work calculations)
  • Patch D exception: reset suppressor no longer blocks recovery when chain is clearly broken
Mining
  • Block confirmation feedback: Potential mined block on mine, then CONFIRMED or ORPHANED after 12s network verification
  • New address console command to display your mining wallet address
Network
  • MINIMUM_VERSION bumped to 2.1.6 — all nodes will auto-update
  • Blind zone reorg detection: auto-reset instead of infinite loop when blocks can't be traced
v2.1.5
April 15, 2026
Mining & Sync Efficiency
  • Fork recovery path shortened from 6 retries to 2 per event (67% reduction)
  • Wasted retry time reduced from ~12.5s to ~2.5s per fork recovery (~10s saved per event)
  • Average fork recovery latency: 43ms (new instrumented metric)
  • New GET /mining/metrics API endpoint for real-time performance monitoring
Wallet
  • restore-wallet --seed CLI: deterministic recovery from 24-word seed phrase
  • new-wallet now derives keys from the displayed seed phrase (PBKDF2 + ML-DSA-65)
  • Web wallet: removed misleading balance display and faucet
Snapshots
  • Automatic block-based snapshot trigger every 1000 finalized blocks
  • Cross-confirmation from seed nodes runs automatically
Logging & Observability
  • Verbose sync messages moved from WARN to DEBUG
  • libp2p gossipsub noise filtered
  • COMMITMENT_ROOT_MISMATCH: enriched diagnostic payload for investigation
  • MINIMUM_VERSION = 2.1.5
v2.1.4 patch
April 14, 2026
Verified Snapshot System
  • Ed25519 signed snapshot manifests with multi-seed cross-confirmation
  • restore-snapshot CLI command — strict 4-step verification: producer signature, 2+ seed confirmations, SHA256 integrity, state root recalculation
  • 5 new API endpoints: /snapshot/latest, /snapshot/manifest/:height, /snapshot/history, /snapshot/export, /snapshot/confirm
  • Public snapshot repository: tsn-snapshots
  • Rolling 24h retention — never deletes the last available snapshot
  • Full 7-node network restore tested from GitHub-published snapshot
Explorer
  • New Snapshots tab — manifest details, seed confirmations, trust model
  • P2P freshness tracking (height_updated_at) — no fake sync status on stale data
  • Miner identification via X-TSN-PeerID header (NAT-safe)
  • Block toast notifications, transaction deduplication
Network
  • MINIMUM_VERSION = 2.1.4
  • Per-node Ed25519 signing keys, never exposed via API/git/logs
  • Unsigned snapshot imports rejected
Testing & Audits
  • SHA256 3-point coherence audit: export = download = published artifact
  • Signature verification audit: producer + 4 seed confirmations validated
  • Full network restore: 7 nodes wiped, restored from GitHub snapshot, all checks passed
  • State root recalculation verified on every node
  • DB persistence audit: block_heights tree fix for CLI restore
  • 1-hour stability observation: 13 checks, 0 failures, 382 blocks, 2 confirmed transactions
v2.1.3 patch
April 13, 2026
Network — 12 Patches
  • Fixed permanent fork caused by ANCESTOR_IS_FALLBACK guard blocking rollback
  • 15s GossipSub mesh formation delay post-fast-sync
  • HTTP fallback for orphan blocks (3s P2P timeout)
  • Separate GossipSub topic for block responses (dedup fix)
  • Tip broadcast every 10s + immediate after block accept
  • Ghost peer blacklist (Kademlia re-add prevention)
  • Snapshot cache invalidation after chain reset
  • Reorg state cleanup (prev_block_states cleared)
  • P2P propagation_source height tracking
Explorer
  • Single /network/status data source (no mixed HTTP/P2P)
  • Demo mode removed — real data only
  • Block time in HUD, enriched tooltips, seed visual distinction
  • Recent blocks sidebar, 6s refresh
Testing
  • 10+ miner stop/wipe/restart stress tests
  • 62 min continuous run: 16 reorgs, 2 slow-path rollbacks, 0 mismatches
  • Fork detection audit: header-based fork detection tested against deliberate chain splits
  • Post-deploy verification: all 7 nodes checked — height, hash, sync status
  • Reorg safety: verified rollback + re-sync produces identical state root
v2.1.2 patch
April 12, 2026
Consensus
  • Reorg state restoration uses cached rollback (deterministic, no replay corruption)
  • Missing block during startup triggers auto-wipe + re-sync (no crash loop)
  • Orphan pool evicts oldest instead of rejecting new blocks
Network
  • HTTP relay: fire-and-forget with semaphore (max 8), no API blocking
  • Ghost peer cleanup after 5 failures, max 50 HTTP peers
  • Sync prioritizes seed nodes for large batch downloads
  • receive_block takes reorg_lock (consistent with all write paths)
Security
  • Ed25519 release signature now mandatory (unsigned updates rejected)
UX
  • Interactive console: id, status, peers, version, difficulty, uptime, help
  • Commands in violet to distinguish from logs
  • MINIMUM_VERSION = 2.1.2
v2.1.1 patch
April 11, 2026
Solo Fork Auto-Heal
  • Nodes >100 blocks ahead of all peers auto-wipe and resync
  • Forces auto-update for external miners stuck on isolated chains
  • MINIMUM_VERSION = 2.1.1
Explorer
  • SYNCING label only for nodes >50 blocks behind
  • P2P peer heights update on every block received
v2.1.1 latest
April 11, 2026
Solo Fork Auto-Heal
  • Nodes that are >100 blocks ahead of all peers are detected as solo forks and auto-resync
  • Forces auto-update for external miners stuck on isolated chains
  • MINIMUM_VERSION = 2.1.1
Peer ID Visibility
  • Node ID displayed prominently at startup
  • Available via curl http://localhost:9333/node/info
Explorer
  • "SYNCING" label only for nodes >50 blocks behind
  • P2P peer heights refresh on every block received
v2.1.0 audit
April 11, 2026
Full Security Audit — 20 bugs identified, 16 fixed

Complete code audit of 96,000 lines of Rust. Three parallel analysis agents covered consensus, network, and configuration.

Critical Fixes
  • Watchdog reset now takes reorg_lock — was corrupting sled DB causing crash-loops on all 5 nodes
  • Mining cancel on HTTP-received blocks — was causing stale blocks and forks
  • P2P block handler takes reorg_lock — race condition with miner fixed
  • Watchdog requires 2+ HTTP-verified peers before auto-wipe
  • Commitment tree: V1/PQ dev-fee append decoupled in apply_coinbase
Other Fixes
  • Graduated difficulty tolerance post fast-sync (±50/25/10%)
  • LRU saves 45 blocks after rollback (was 5)
  • Atomic nullifier replacement via sled batch
  • Snapshot cross-verified with 2nd peer
  • Fork detection via binary search
  • Sync loop capped at 50 iterations per peer
  • Release signing key rotated
Infrastructure
  • Monitoring dashboard with health scoring and alerting
  • Network watchdog with automated diagnostics
  • MINIMUM_VERSION = 2.1.0
v2.0.8 patch
April 10, 2026
Fork Detection Hardening
  • Solo fork detection requires peers h>10 and gap>100
  • wait_for_initial_sync: if local > peer + 5, start mining (don't reset)
  • Watchdog only triggers on peers with real chain data (h>100)
  • MINIMUM_VERSION enforced at 2.0.8
v2.0.7 patch
April 10, 2026
Relay Dedup + Stability
  • LRU dedup cache prevents relaying the same block multiple times
  • 3s timeout on all relay HTTP calls — fixes FD exhaustion ("Too many open files")
  • Finalization bypass when rollback is blocked by checkpoint
  • Mining panic fix — JoinError::Cancelled handled gracefully
v2.0.6 patch
April 10, 2026
Self-Healing Nodes
  • Auto-heal: watchdog detects peers >20 blocks ahead, triggers wipe + fast-sync
  • auto_heal_mode defaults to automatic
  • Auto-update binary detection fixed
  • SHA256 checksum required for auto-update installs
v2.0.5 patch
April 10, 2026
P2P Block Sync
  • Block request/response via GossipSub tsn/block-request/1 topic
  • NAT-friendly: miners behind NAT can sync without HTTP fallback
  • Fixed IP leak in relay error logs
  • Standardized auto-update asset naming
v2.0.4 patch
April 10, 2026
Fork Resolution + Explorer Fix
  • Tip block preserved in LRU after rollback (fixes fast-synced nodes)
  • Orphan sync throttled (max 1x/10s with mutex)
  • SharedPeerList for instant /peers/p2p API response
v2.0.3 patch
April 10, 2026
P2P Auto-Discovery
  • Nodes auto-discover HTTP addresses via libp2p Identify protocol
  • Miners behind NAT work without manual configuration
  • CI GitHub Actions for multi-platform builds (Linux, macOS, Windows)
v2.0.2 patch
April 10, 2026
Performance Overhaul
  • Zero-allocation Poseidon2 hash — stack buffers instead of heap (16T: 1.80 MH/s, 240T: 13.3 MH/s)
  • Concurrent block broadcast — overhead reduced from 22s to 3.5s
  • All IPs masked in logs (peer_id, masked_addr, sanitize_error)
  • is_contactable_peer() filters phantom peers in all HTTP paths