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
- Block confirmation feedback:
Potential mined blockon mine, thenCONFIRMEDorORPHANEDafter 12s network verification - New
addressconsole command to display your mining wallet address
- 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/metricsAPI endpoint for real-time performance monitoring
restore-wallet --seedCLI: deterministic recovery from 24-word seed phrasenew-walletnow derives keys from the displayed seed phrase (PBKDF2 + ML-DSA-65)- Web wallet: removed misleading balance display and faucet
- Automatic block-based snapshot trigger every 1000 finalized blocks
- Cross-confirmation from seed nodes runs automatically
- 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-snapshotCLI 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
- 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-PeerIDheader (NAT-safe) - Block toast notifications, transaction deduplication
- MINIMUM_VERSION = 2.1.4
- Per-node Ed25519 signing keys, never exposed via API/git/logs
- Unsigned snapshot imports rejected
- 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
- Single
/network/statusdata 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
- 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
- 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_blocktakesreorg_lock(consistent with all write paths)
- Ed25519 release signature now mandatory (unsigned updates rejected)
- 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
- 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
- Node ID displayed prominently at startup
- Available via
curl http://localhost:9333/node/info
- "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
- 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
- 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::Cancelledhandled 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_modedefaults 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/1topic - 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/p2pAPI 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