Unified consensus-rate control combining bitsQ primary controller, equalizer profiles, and anti-stall for ConvergenceX Proof-of-Work.
cASERT's bitsQ primary controller originally used an exponential moving average formula (half-life based), pioneered by Mark Lundeberg and Jonathan Toomim for Bitcoin Cash (November 2020 hard fork). Since block 5,175, bitsQ uses an avg288-based model: it compares the average of the last 288 block intervals against the 600s target. Since block 5,270, a dynamic cap scales with deviation (0% dead band at ±15s, then 0%/0.5%/1.0%/2.0%/3.0% max). Median removed from consensus (block 5,270+). Block 5,323 hotfix. The half-life exponential is preserved for pre-5175 blocks only. cASERT was designed by NeoB for SOST Protocol (2026), extending the controller with equalizer profiles and anti-stall decay into a unified consensus-rate control system for ConvergenceX.
| Property | Detail |
|---|---|
| Core formula | next_bitsq = anchor_bitsq * 2^(-td / halflife) |
| Time delta (td) | actual_time - expected_time (deviation from ideal schedule) |
| Exponential response | Difficulty doubles/halves every halflife period |
| SOST implementation | Integer-only cubic polynomial approximation of 2^x |
| Encoding | Q16.16 fixed-point arithmetic, no floating point in consensus |
| BITSQ mode (current) | avg288-based (block 5,175+): avg of last 288 intervals vs 600s target. Dynamic cap (5,270+): 0% dead band (±15s), 0%/0.5%/1.0%/2.0%/3.0% max. Median removed from consensus (block 5,270+). Block 5,323 hotfix |
| Median288 | Median removed from consensus (block 5,270+) |
| Legacy half-life | V1: 48h (genesis–1,449), V2: 24h (1,450–5,174). Preserved for historical blocks only |
| Legacy delta cap | V1: 6.25%, V2: 12.5% symmetric. Preserved for historical blocks only |
| TARGET_SPACING | 600s (10 minutes) |
cASERT is a unified three-layer consensus-rate control system: (1) the bitsQ primary controller provides difficulty adjustment (avg288-based since block 5,175, with dynamic cap since block 5,270), (2) equalizer profiles introduce discrete hardening levels when the chain runs ahead of schedule, and (3) anti-stall decay ensures liveness under sudden hashrate loss. ConvergenceX PoW has a stability_metric (gradient descent convergence) that can be tightened. cASERT monitors how far ahead of schedule the chain is and introduces discrete hardening levels to prevent fast-block attacks. The equalizer ceiling is height-gated: H13 pre-V12 (#5,750..#7,349), H20 from V12 (#7,350..#11,999), and H35 from V13 (#12,000+). Profiles H14–H20 activated at V12 #7,350; profiles H21–H35 activate at V13 #12,000 (full 43-profile range live from V13; margin=115).
| Profile | H= | Scale | K | Steps | Margin | Compute | |
|---|---|---|---|---|---|---|---|
| E7 | A | -7 | 1 | 1 | 1 | 200 | 1 |
| E6 | A | -6 | 1 | 1 | 2 | 195 | 2 |
| E5 | A | -5 | 1 | 2 | 2 | 190 | 4 |
| E4 | A | -4 | 1 | 2 | 3 | 185 | 6 |
| E3 | A | -3 | 1 | 3 | 3 | 180 | 9 |
| E2 | A | -2 | 1 | 3 | 4 | 175 | 12 |
| E1 | A | -1 | 1 | 4 | 4 | 170 | 16 |
| B0 | A | 0 | 1 | 4 | 4 | 165 | 16 |
| H1 | A | +1 | 1 | 4 | 5 | 160 | 20 |
| H2 | A | +2 | 1 | 5 | 5 | 155 | 25 |
| H3 | A | +3 | 1 | 5 | 6 | 150 | 30 |
| H4 | A | +4 | 1 | 6 | 6 | 145 | 36 |
| H5 | A | +5 | 2 | 5 | 5 | 140 | 50 |
| H6 | A | +6 | 2 | 5 | 6 | 135 | 60 |
| H7 | A | +7 | 2 | 6 | 6 | 130 | 72 |
| H8 | A | +8 | 2 | 6 | 7 | 125 | 84 |
| H9 | A | +9 | 2 | 7 | 7 | 120 | 98 |
| H10 | A | +10 | 2 | 7 | 8 | 115 | 112 |
| H11 | A | +11 | 2 | 8 | 8 | 115 | 128 |
| H12 | A | +12 | 2 | 8 | 9 | 115 | 144 |
| H13 | A | +13 | 2 | 9 | 9 | 115 | 162 |
| H14 | A* | +14 | 2 | 9 | 10 | 115 | 180 |
| H15 | A* | +15 | 2 | 10 | 10 | 115 | 200 |
| H16 | A* | +16 | 2 | 10 | 11 | 115 | 220 |
| H17 | A* | +17 | 2 | 11 | 11 | 115 | 242 |
| H18 | A* | +18 | 2 | 11 | 12 | 115 | 264 |
| H19 | A* | +19 | 2 | 12 | 12 | 115 | 288 |
| H20 | A* | +20 | 2 | 12 | 13 | 115 | 312 |
| H21 | A** | +21 | 2 | 13 | 13 | 115 | 338 |
| H22 | A** | +22 | 2 | 13 | 14 | 115 | 364 |
| H23 | A** | +23 | 2 | 14 | 14 | 115 | 392 |
| H24 | A** | +24 | 2 | 14 | 15 | 115 | 420 |
| H25 | A** | +25 | 2 | 15 | 15 | 115 | 450 |
| H26 | A** | +26 | 2 | 15 | 16 | 115 | 480 |
| H27 | A** | +27 | 2 | 16 | 16 | 115 | 512 |
| H28 | A** | +28 | 2 | 16 | 17 | 115 | 544 |
| H29 | A** | +29 | 2 | 17 | 17 | 115 | 578 |
| H30 | A** | +30 | 2 | 17 | 18 | 115 | 612 |
| H31 | A** | +31 | 2 | 18 | 18 | 115 | 648 |
| H32 | A** | +32 | 2 | 18 | 19 | 115 | 684 |
| H33 | A** | +33 | 2 | 19 | 19 | 115 | 722 |
| H34 | A** | +34 | 2 | 19 | 20 | 115 | 760 |
| H35 | A** | +35 | 2 | 20 | 20 | 115 | 800 |
43 profiles E7(-7) through H35(+35). H10–H35 margin=115. Compute = scale × k × steps.
A = Active pre-V12 (#5,750..#7,349) — 21 profiles E7 through H13.
A* = Active from V12 (#7,350..#11,999) — 7 additional profiles H14 through H20 (V12 ceiling, 28 active total).
A** = Active from V13 (#12,000+) — 15 additional profiles H21 through H35 (V13 ceiling, full 43-profile range active; this closes the equalizer calibration started in V6).
R = Reserved — previously (pre-V13) the upper segment was reserved for future activation as network hashrate grows; from V13 / block 12,000 no equalizer profile remains reserved. Relief valve: V8 single E7 cliff at 605 s (5,750+) → V9 staged drop 3/60 s from 540 s (6,550+) → V10 granular drop 1/60 s from 600 s (6,700+). Floor stays at E7.
V6 calibration (5,050): lag cap H ≤ lag, live lag (disabled at V10), anti-stall 60 min. bitsQ avg288-based (5,175+), dynamic cap (5,270+). V13 (12,000+) ceiling expansion to H35 completes the cASERT equalizer calibration.
The equalizer operates bidirectionally: E7–E1 ease stability (only after 6h extra at B0), B0 is the baseline, H1–H35 harden when blocks are fast. All 43 profiles defined. Pre-V12 (#5,750..#7,349): 21 active E7–H13, 22 reserved H14–H35. V12 (#7,350..#11,999): 28 active E7–H20, 15 reserved H21–H35. V13 (#12,000+): 43 active E7–H35, 0 reserved — full equalizer range live. Safety rules cap at B0 when behind schedule or with <10 blocks. Slew rate: ±1 profile level per block (V6, block 5,000+).
43 profiles E7(-7) through H35(+35). Each profile has independently tuned scale, k, steps, and margin. Higher profiles impose stricter stability_metric thresholds on ConvergenceX, making it progressively harder to produce fast blocks. H5–H35 use scale=2 (V6 calibration). H35 is the hardest reserved profile (k=20, steps=20, margin=115).
If no block is found for an extended period, the cASERT level decays to B0 via zone-based rates. Activation: always 7,200s (2 hours) since V3.1. Easing profiles E1–E4 activate only after 6 hours extra at B0. This prevents mining deadlock when hashrate drops suddenly.
After activation, decay uses current level zone (not original):
H35→...→H7: FAST (600s/level = 10min/level) — 60 min
H6→H5→H4: MEDIUM (900s/level = 15min/level) — 45 min
H3→H2→H1: SLOW (1200s/level = 20min/level) — 60 min
Decay stops at B0. Easing E1–E4 only after 6 hours extra at B0.
| Property | Detail |
|---|---|
| Exponential moving average formula | 2^(-td / halflife) — same mathematical approach |
| Anchor-based calculation | Uses first block of epoch as anchor reference |
| Q16.16 fixed-point encoding | Same integer representation, no floating point |
| Global difficulty clamps | MIN_BITSQ / MAX_BITSQ bounds enforced |
| Per-block retargeting | Every block, not every N blocks |
| Epoch structure | BLOCKS_PER_EPOCH = 131,553 blocks (~2.5 years) |
| Version | Block | Changes |
|---|---|---|
| V1 | Genesis | 48h half-life, 6.25% delta cap, ±1 slew rate |
| V2 | 1,450 | 24h half-life, 12.5% delta cap |
| V3 | 4,100 | Slew rate ±1 → ±3, lag floor (lag/8 minimum profile), improved equalizer responsiveness |
| V3.1 | 4,110 | Stored profile_index from BlockMeta (prevents slew rate bypass), anti-stall always 7,200s |
| V4 | 4,200 | Ahead Guard: clamps bitsQ relaxation to 1.56%/block when chain ≥16 blocks ahead (H8+). Hysteresis: enter ≥16, exit ≤8 |
| V6 | 5,000 | Slew rate ±3 → ±1, H10–H35 scale=2 (V6 calibration), H35 hardest (k=20, steps=20, margin=115) |
| V7 avg288 | 5,175 | bitsQ switches to avg288-based: avg of last 288 block intervals vs 600s target. Half-life exponential no longer used (preserved for historical blocks only) |
| V7 dyncap | 5,270 | Dynamic cap: 0% dead band (±15s), 0%/0.5%/1.0%/2.0%/3.0% max scaling with deviation. Median removed from consensus (block 5,270+). Block 5,323 hotfix |
| V8 cliff | 5,750 | Single-step relief valve: profile drops to E7 after 605 s without a block. H13 ceiling (was H12). Removes H10/H11 dead-zones during stalls. |
| V9 staged | 6,550 | Staged relief cascade: drop 3 profile levels every 60 s starting at 540 s elapsed. Floor stays at E7. Future-drift cap MAX_FUTURE_DRIFT_STAGED=60 s. |
| V10 granular | 6,700 | Granular relief cascade: drop 1 profile level every 60 s starting at 600 s elapsed. Lag-advance disabled at this height — lag is computed strictly from chain.back().time, validation deterministic w.r.t. block.timestamp. Floor stays at E7. No supply / reward change. |
| V11 Phase 2 | 7,100 | Consensus surface upgrade alongside cASERT: SbPoW (Signature-Bound PoW) activation — every valid block requires a Schnorr-style signature from the miner identity key over the block header, making pool topologies that delegate work without sharing the key cryptographically self-defeating. DTD lottery activates simultaneously (bootstrap 2-of-3 cadence; permanent 1-of-3 cadence opens at V11_PHASE2_HEIGHT + LOTTERY_HIGH_FREQ_WINDOW = 7,100 + 5,000 = 12,100). No change to cASERT bitsQ math or to the equalizer profile table; cASERT continues to feed powDiffQ to ConvergenceX exactly as before. Anti-pool primary defense. |
| V12 | 7,350 | Equalizer hardening ceiling rises H13 → H20. Active profile set grows from 21 (E7..H13) to 28 (E7..H20). 15 profiles H21..H35 remain reserved for V13. validator_profile_ceiling_at(height) returns H20 from this height. |
| V13 | 12,000 | Coordinated hard fork combining four consensus-level changes. (1) cASERT equalizer ceiling rises H20 → H35 — the full 43-profile range E7..H35 becomes active for the first time, closing the equalizer calibration started in V6. (2) DTD lottery cooldown 5 → 6: lottery_exclusion_window_at(height) returns 6 for height ≥ V13_HEIGHT, restoring deterministic 2-firing exclusion under the permanent 1-of-3 cadence that opens at block 12,100. (3) Future-timestamp drift cap 60 s → 30 s: max_future_drift_at(height) returns 30 for height ≥ V13_HEIGHT — NTP synchronisation strongly recommended post-V13; any host whose clock is more than 30 s ahead of true time will produce blocks that every validator rejects. (4) Beacon Phase II-A activates: BEACON_PHASE2A_ACTIVATION_HEIGHT = V13_HEIGHT. RC1 metadata signed (release_status = signed_metadata_only). DTD flip at 12,100 is automatic and verified. |
| V14 fallback | 15,000 // TARGET | Proposed final hard fork in this cycle, not guaranteed. No cASERT bitsQ or equalizer change planned. Carries the spend-side Gold Vault governance bundle deferred from V13: 5-defense Gold Vault model (purpose restriction + dual destination whitelists + per-spend cap + rate limiting + ≥90% block-based miner signaling over a 67-block window, ceil 61) plus the Transitional Guardian role (authorise / veto with 10-block pronouncement window after signaling closes; silence ⇒ miner result prevails; auto-disconnect at block 25,000 implemented in V13 source from day one, no future fork required). Carries PoPC + Escrow automatic lifecycle (POPC_ACTIVATION_HEIGHT consensus gate, deterministic per-block audit scheduler, auto-slash, auto-settlement, Ethereum bridge against deployed SOSTEscrow). Activates only if the corresponding V13-tracked readiness gates close in time; otherwise PoPC + Escrow + Vault governance remain application-layer (accumulation side unaffected — 25%/block to both reserve addresses continues unchanged since genesis). See docs/V13_PUBLIC_SCOPE_UPDATE.md, docs/V13_GOLD_VAULT_GOVERNANCE_GATES.md, docs/V13_POPC_ESCROW_AUTO_ACTIVATION_GAPS.md. |
All forks are forward-only (no regenesis). Nodes enforce fork rules based on block height. V14 fallback at block 15,000 is the proposed next coordinated hard fork in this cycle (target, not guaranteed) and is the deferral destination for PoPC + Escrow + Gold Vault spend-side governance from the V13 review; it adds no new cASERT bitsQ or equalizer rule and is shown above for fork-history completeness.
| Feature | Description |
|---|---|
| Anti-stall decay | Decay activates after 7,200s (always 2 hours) without a block — zone-based, proportional, no ceiling |
| Level system | Discrete levels (not continuous) for deterministic consensus — any two nodes compute the same level |
| Floor at B0 | Chain always gets at least B0 stability requirements, even when behind schedule |
| Stateless recalculation | Any node can compute the cASERT level from the chain alone, no extra state needed |
| ConvergenceX integration | cASERT adjusts the stability_metric threshold, not the PoW target directly |
| Contraction coefficient | c = 7/10, ensuring d_final <= 0.7 * d_initial + margin |
The anti-stall decay ensures liveness under sudden hashrate loss. If no valid block arrives for DECAY_START seconds, the cASERT hardening is gradually reduced. This decay is deterministic and computed from the timestamp of the previous block, making it fully verifiable by all nodes.
| Condition | Response |
|---|---|
| Stall < activation threshold | No decay — cASERT level applies at full scale |
| Stall >= activation threshold | decay_factor reduces cASERT scale progressively |
| Result | Mining continues even if hashrate drops dramatically |
| Parameter | Value | Description |
|---|---|---|
| BITSQ mode (current) | avg288-based (5,175+) | Compares avg of last 288 block intervals vs 600s target. Half-life exponential preserved for pre-5175 blocks only |
| BITSQ dynamic cap | 0%/0.5%/1.0%/2.0%/3.0% (5,270+) | Dead band ±15s (0%), then scales with deviation. Median removed from consensus (block 5,270+). Block 5,323 hotfix |
| Legacy HALF_LIFE | V1: 172,800s (48h), V2: 86,400s (24h) | Preserved for historical blocks: V1 genesis–1,449, V2 1,450–5,174 |
| Legacy DELTA_CAP | V1: 6.25%, V2: 12.5% | Preserved for historical blocks: V1 genesis–1,449, V2 1,450–5,174 |
| TARGET_SPACING | 600s | 10-minute target between blocks |
| BLOCKS_PER_EPOCH | 131,553 | Blocks per difficulty epoch (~2.5 years) |
| GENESIS_BITSQ | 765,730 | Initial difficulty in Q16.16 (11.6841, calibrated) |
| MIN_BITSQ | 65,536 | Minimum difficulty (1.0 in Q16.16) |
| MAX_BITSQ | 16,711,680 | Maximum difficulty (255.0 in Q16.16) |
| CASERT_H_MIN / H_MAX | -4 / 35 | Profile range: E7 (deep easing) to H35 (max hardening); 43 profiles. Pre-V12 (#5,750..#7,349): 21 active E7–H13. V12 (#7,350..#11,999): 28 active E7–H20. V13 (#12,000+): 43 active E7–H35 (full range). |
| CASERT_K_R | 0.05 | Instantaneous rate gain (was 0.25) |
| CASERT_K_L | 0.40 | Schedule lag gain — dominant (was 0.10) |
| CASERT_K_I | 0.15 | Integrator gain (was 0.05) |
| CASERT_K_B | 0.05 | Burst score gain (was 0.30) |
| CASERT_K_V | 0.02 | Volatility gain (was 0.10) |
| SLEW_RATE | ±1/block (V6+) | Max profile change per block (V3: ±3, V6 block 5,000: returned to ±1) |
| ANTISTALL_FLOOR | 7,200s | 2-hour minimum before anti-stall decay activates |
| ANTISTALL_DECAY | zone-based | H35–H7: 600s/lvl, H6–H4: 900s/lvl, H3–H1: 1200s/lvl. Decays to B0. E1–E4 after 6h at B0. |
| Safety: behind schedule | cap B0 | Never harden when chain is behind schedule (lag ≤ 0) |
| Safety: <10 blocks | cap B0 | Require 10 blocks before any hardening |
| CX_C_NUM / CX_C_DEN | 7/10 | Convergence ratio for stability test |