Skip to content

Development Log

ComputeChain development timeline


January 21, 2026 — Deterministic slots and consensus stability

Critical update to slot system and block production:

  • genesis_time: Now persisted to DB and used as absolute reference for slot calculation
  • max_rounds_per_height: Round limit (devnet=10, testnet=42, mainnet=200) prevents infinite round growth
  • Deterministic slots: Removed monotonic/drift timestamp checks, slot computed strictly from genesis_time
  • missed_blocks guards: Protection against accumulation on large time gaps + winner exclusion from missed
  • blocks_expected: Now set for slot-0 proposers at epoch start
  • BlockValidator: Added slot validation for incoming blocks

January 20, 2026 — Relaxed validator scoring parameters

Fixed aggressive validator jailing issue:

  • epoch_length_blocks: 10 → 100 (more time for stats accumulation)
  • min_uptime_score: 0.75 → 0.5 (allows 50% miss rate)
  • max_missed_blocks_sequential: 10 → 20 (more tolerance before jail)

These changes prevent premature validator exclusion due to short-term network delays.


January 19, 2026 — Sync reliability and receipt indexing

Improved P2P sync (header range + snapshot chunks), added tx index fallback for receipts, and tightened state/tx determinism (tx hash fields + state_root coverage).


January 12, 2026 — Final pending state fix

Fixed pending_state synchronization after local block creation. Proposer now calls update_pending_state() immediately after adding block to chain. This ensures correct pending nonce for subsequent transactions.


January 10, 2026 — Gap-filling algorithm for nonce

Rewrote get_pending_nonce() using gap-filling algorithm. Now returns first missing nonce in sequence, not max+1. This prevents nonce gap accumulation and mempool deadlock.


January 9, 2026 — Include queued TX in pending nonce

Fixed pending nonce calculation — now includes transactions from pending_queue, not just main pool. Without this fix /nonce returned 0 while 50+ TX were queued.


January 8, 2026 — Ethereum-style pending state

Architectural change: mempool now manages pending state. Added /nonce/{address} endpoint for pending nonce. Simplified tx_generator — removed client-side NonceManager, throttling, account locks. Limit 64 queued TX per account (like Ethereum).


January 6, 2026 — Proposer promotion fix

Fixed promotion logic in proposer: transactions with future nonce no longer removed from pending_queue prematurely. Promotion now correctly moves TX to main pool when blockchain nonce catches up.


January 4, 2026 — Timeout settings for high load

Increased timeouts for high load mode. Smart timeout now adapts to current TPS. Raised throttling limit to prevent artificial throughput restriction.


January 3, 2026 — TPS degradation fix

Fixed TPS degradation during long-running tests. Added account locks to prevent race conditions. Improved broadcast validation and balance checks. Test now holds stable 50+ TPS.


December 27, 2025 — Pending queue deadlock

Fixed critical bug: promotion was called only for addresses from processed TX. With empty mempool, pending_queue was never processed → deadlock. Now promotion is called for ALL addresses in pending_queue.


December 26, 2025 — Test infrastructure simplification

Removed SSE dependency from tx_generator. SSE queue increased to 10000. NonceManager switched to periodic sync instead of event-driven. Removed 167 lines of code, system became more reliable.


December 25, 2025 — Cross-process EventBus

Fixed event delivery between processes. EventBus imported at module level (singleton). Added JSON serialization for SSE. Mempool now emits tx_failed on TTL expiry.


December 23, 2025 — TX TTL and events

Implemented TTL system for transactions (1 hour). SSE endpoint /events/stream for real-time events. Types: tx_confirmed, tx_failed, block_created. Sustained TPS: ~10-30.


December 22, 2025 — Prometheus metrics

Fixed metric duplication due to multiple imports. Added metrics: accounts_total, TX counters. Improved Grafana formatting. Created cleanup.sh and start_test.sh.


December 19, 2025 — NonceManager

Implemented NonceManager class for thread-safe nonce management. Pending TX tracking, automatic recovery on confirmation, timeout handling.


December 17, 2025 — Phases 1.2-1.3

Phase 1.2: Economic model v2 — centralized config, burn/mint tracking, 21-day unbonding period, validator commissions 0-20%.

Phase 1.3: State snapshots — auto-creation, gzip compression, SHA256 verification. CLI: cpc-cli snapshot create/list.


December 17, 2025 — Phase 1.1: Delegation

Proportional reward distribution to delegators. Formula: (stake / total) × (reward × (1 - commission)). API /delegator/{address}/rewards.


December 12, 2025 — Phases 1-3: Validators

Phase 1: Validator metadata (name, website, commission). TX UPDATE_VALIDATOR.

Phase 2: Delegation. TX DELEGATE/UNDELEGATE. Tracking total_delegated.

Phase 3: Graduated slashing (5% → 10% → 100%). UNJAIL mechanism (50k gas + 1000 CPC). Uptime filter 75%.


December 12, 2025 — UNSTAKE mechanism

Validators can withdraw stake. 10% penalty for unstake while jailed. Auto-deactivation at power=0. TX UNSTAKE (40k gas).


December 11, 2025 — Phase 0: Validator performance

Uptime and missed block tracking. Auto-jail after 10 missed blocks. 5% slash on jail. Performance score = 60% uptime + 20% stake + 20% penalties. Dashboard with real-time metrics.


November 28, 2025 — Genesis

First ComputeChain commit. Core: blocks, TX (TRANSFER/STAKE), ECDSA signatures, nonce, gas. Consensus: multi-validator PoA, round-robin. P2P network, CLI wallet, RPC API.


Statistics

  • Period: November 2025 — January 2026
  • Current TPS: 50-60 (stable)
  • Block time: 5 sec
  • Epoch: 100 blocks (~8 minutes)
  • Tests: 25+ (all passing)

Last updated: January 21, 2026