← All posts
9 min read

Spec 183 is live: the energy gate now retargets on the work itself

Spec 183 is live via the governance multisig: the VQE energy gate now retargets on how many solves each block took, not the clock. What was wrong, what changed, the rehearsal, and every node verified.

Three days ago we published how VQE-gated block production works and included an honest footnote: the energy gate's difficulty knob, alpha, had been sitting at its floor since the gate went live in September, and the loop meant to move it could not. Today that is fixed on the live chain.

What was wrong

The gate requires every block's variational proof to reach a quality threshold, alpha, against a rigorous bound. Alpha was meant to retarget like any proof-of-work difficulty: tighten when blocks come too fast, ease when they come too slow, measured against a 3.3 second target over a 144-block window.

Two facts made that loop inert. First, the 3.3 second target equals the Aura slot, and under single-leader authoring a block can never arrive faster than one slot, so the tighten branch was unreachable by construction. Second, the live cadence is three to four slots per block, because only one of the four validators authors today and the elected leader usually misses its turn, so the loop read "slow" on every window and eased alpha down to the floor, where it stayed.

At the floor the gate still did its one essential job: a trivial all-zero proof has a negative quality score and fails at any positive alpha. But an honest first attempt passed on almost every block, and the difficulty-on-quality mechanism we had built was live and idle.

What changed

Spec 183 steers alpha on the work instead of the clock. Every accepted proof carries the nonce that passed, and nonces are tried from zero, so nonce + 1 is the number of solves the author needed. The runtime now keeps a rolling window of those counts, capped at 64 each, and every so often looks at the window's median:

  • Median below 2, meaning the first attempt passes on most blocks: tighten alpha by 25 basis points. This needs a full 36-sample window and runs at most every 36 mined blocks, so it cannot outrun its own evidence.
  • Median above 6, meaning honest authors are grinding too long: ease by 25 basis points. This needs only 6 samples and may run every 6 mined blocks, because easing is the safe direction and a too-tight gate should recover in minutes, not hours.
  • Otherwise hold. The clamp of 0.35 to 0.58 on alpha is unchanged.

There is deliberately no wall-clock term left. The gate's whole cost is attempts multiplied by solve time, and the attempts median is that cost: a median of 6 is under a second of optimisation at 130 milliseconds a solve, which cannot make a 3.3 second slot late. Any clock term would reintroduce the defect above.

The signal is hard to game in the harmful direction. A miner cannot under-report attempts, because the nonce is bound into the Hamiltonian and the seal. Skipping nonces to over-report can only ease the gate, needs a majority of the window to move the median, and is bounded by the clamp.

How it was rehearsed

The change is a pure runtime upgrade: one new storage item, no new call, no migration. The miner already reads alpha through the runtime API, so no node binary had to change.

We ran it three times on a two-validator scratch chain with the fork heights lowered. The first run was discarded before it counted: a build flag had quietly embedded a stale runtime, and the chain reported the wrong spec. The rehearsal script now refuses to start unless the scratch node reports the spec under test. The second run exposed a real weakness: the gate it inherited was too tight for that regime and a symmetric 36-sample rule could not ease it within the run. That is where the asymmetry above came from. The third run, with the asymmetry in place, eased alpha one step every six blocks from a median of 11 down into the band and then held, with 173 proofs accepted and zero rejections.

The upgrade, and every node checked

The upgrade was dispatched through the 2-of-3 sudo multisig. The upgrade tool first ran the new guard added after last week's bridge review, which refuses any runtime that does not bump the spec version or that would remove the bridge escrow pallet while escrow is non-zero. The call landed at block 2,442,669, and within one block every node was executing the new runtime.

We then rolled a matching node binary to the whole fleet, so that every node's built-in runtime is byte-identical to the one enacted on-chain. The binary was built with the runtime stage enabled, its embedded runtime checked against the on-chain one by hash, and published as the release node-spec183-2026-10-18. The roll went one node at a time, keyless nodes first and the block author last, with finality confirmed advancing before each next step. With four GRANDPA voters and a threshold of three, finality never paused; block production paused only for the seconds the author took to restart. Every host keeps the previous binary beside the new one for rollback.

SNAPSHOT, read on each machine after the roll:

NodeRoleRuntime specHeightRunning binary
Alice, dropletAuthor, voter1832,442,848c2d8fad8
Bob, dropletVoter1832,442,848c2d8fad8
Charlie, IntelVoter1832,442,848c2d8fad8
Dave, desktopVoter1832,442,848c2d8fad8
Full node, IntelNo keys1832,442,848c2d8fad8
Standby, desktopNo keys1832,442,848c2d8fad8

Every running process was hashed directly, not just the file on disk. Finality gap held at 8 to 11 blocks throughout, proofs kept being accepted, the public RPC at rpc.qbc.network reports spec 183, and the bridge escrow was untouched at 3.076 QBC. Alpha reads 3500, the floor, and the attempts window is empty, because the new loop is inert until mining height 1,800,000, about eight days away at the current cadence. From there, expect alpha to step up 25 basis points every 36 mined blocks until honest authors need two to six solves per block.

The whitepaper now carries the live validity rule, the energy gate and the retargeting rule in its consensus section, and marks the original energy-below-difficulty rule as historical.

What this does not change

The three-to-four-slot cadence is the single-author topology, not the gate, and opening authoring to the other validators is a separate decision. The gate still does not make the ansatz reach a ground state. And the bridge, the warp-join regression and the external audit are exactly where last week's state post left them.

The runtime source, the design note with the band derivation, and the rehearsal record are in the repository under docs. If alpha does not move off the floor within a few hundred blocks of height 1,800,000, that is a bug, and we want to hear about it.

ShareXLinkedIn

Written by

A
Ash Brown@blockartica
Founder, SusyLabs / QuantumAI Blockchain

Building the post-quantum AI-native L1 with permissionless on-chain training cycles. Writes about consensus, attestation, and the gap between what ships and what's claimed.

Related posts

15 min read

State of the network, October 2026

A full account of where QuantumAI Blockchain stands today across all three layers: the post-quantum L1, the QVM with QBC bridged one to one, and AethersMind. What is live, what was fixed this month, what we found when we attacked our own bridge, and what is still not done.