Unified consensus-rate control combining bitsQ primary controller, equalizer profiles, and anti-stall for ConvergenceX Proof-of-Work.
cASERT's bitsQ primary controller uses an exponential moving average inspired by BCH's ASERT algorithm (designed by Mark Lundeberg and Jonathan Toomim, November 2020 hard fork). cASERT was designed by NeoB for SOST Protocol (2026), unifying the exponential controller with equalizer profiles and anti-stall decay into a single 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_HALF_LIFE | 172,800s (48 hours) |
| Per-block delta cap | 6.25% |
| TARGET_SPACING | 600s (10 minutes) |
cASERT is a unified three-layer consensus-rate control system: (1) the bitsQ primary controller provides exponential difficulty adjustment, (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.
| Profile | H= | Scale | K | Steps | Margin | Compute |
|---|---|---|---|---|---|---|
| E4 | -4 | 1 | 3 | 2 | 280 | 6 |
| E3 | -3 | 1 | 3 | 3 | 240 | 9 |
| E2 | -2 | 1 | 3 | 4 | 225 | 12 |
| E1 | -1 | 1 | 4 | 4 | 205 | 16 |
| B0 | 0 | 1 | 4 | 4 | 185 | 16 |
| H1 | +1 | 1 | 4 | 5 | 170 | 20 |
| H2 | +2 | 1 | 5 | 5 | 160 | 25 |
| H3 | +3 | 1 | 5 | 6 | 150 | 30 |
| H4 | +4 | 1 | 6 | 6 | 145 | 36 |
| H5 | +5 | 2 | 5 | 5 | 140 | 50 |
| H6 | +6 | 2 | 5 | 6 | 135 | 60 |
| H7 | +7 | 2 | 6 | 6 | 130 | 72 |
| H8 | +8 | 2 | 6 | 7 | 125 | 84 |
| H9 | +9 | 2 | 7 | 7 | 120 | 98 |
| H10 | +10 | 3 | 7 | 6 | 115 | 126 |
| H11 | +11 | 3 | 7 | 7 | 110 | 147 |
| H12 | +12 | 3 | 8 | 7 | 105 | 168 |
17 profiles E4(-4) through H12(+12). Active: E4–H9 (CASERT_H_MAX=9). H10–H12 defined in code but capped at H9. Compute = scale × k × steps (relative CX work multiplier).
The equalizer operates bidirectionally: E4–E1 ease stability (only after 6h extra at B0), B0 is the baseline, H1–H9 harden when blocks are fast. H10–H12 are defined but capped at H9. Safety rules cap at B0 when behind schedule or with <10 blocks. Slew rate: ±1 profile level per block.
17 profiles E4(-4) through H12(+12). 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. H10–H12 are defined in code but capped at H9.
If no block is found for an extended period, the cASERT level decays to B0 via zone-based rates. Activation: dynamic — max(ahead × 600s, 2h). 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):
H9→H8→H7: FAST (600s/level = 10min/level) — 30 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) |
| Feature | Description |
|---|---|
| Anti-stall decay | Decay activates after max(ahead 00D7 600s, 7200s) without a block 2014 proportional, no ceiling |
| Level system | Discrete levels (not continuous) for deterministic consensus — any two nodes compute the same level |
| Floor at L1 | Chain always gets at least L1 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_HALF_LIFE | 172,800s | 48-hour half-life for bitsQ exponential adjustment |
| BITSQ_DELTA_CAP | 6.25% | Per-block relative delta cap for bitsQ adjustment |
| 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 / 9 | Profile range: E4 (deep easing) to H9 (max hardening); H10–H12 defined but capped |
| 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 | Max profile change per block (prevents oscillation) |
| ANTISTALL_FLOOR | 7,200s | 2-hour minimum before anti-stall decay activates |
| ANTISTALL_DECAY | zone-based | H9–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 |