Skip to content

Keryx-node-v1.4.8-PoM

Latest

Choose a tag to compare

@slashkrx slashkrx released this 17 Aug 11:48

⚠️ Mandatory upgrade. This release arms the H7 hardfork and fixes a crash that puts a restarted node into a boot loop. Every node must be on v1.4.8 before the gate.

H7 activates at DAA 77,525,000 — around 18:00 UTC on 17 Aug 2026

The exact wall-clock depends on block rate; the DAA score is what decides. From the gate, nodes below v1.4.8 are rejected at the P2P handshake and cannot follow the chain.

What H7 changes

H7 retunes the service bond so the audit stops penalising miners for losing a race rather than for failing to serve.

  • Response window — every cohort member now gets a 3,000 DAA base (~5 min) to see and serve a request, up from 300 DAA (~30 s). A rig that is restarting or still loading a model is no longer struck for it.
  • Cohort eligibility — tightens to 3,000 DAA past a miner's last proven tier block, down from 6,000, so a miner that has stopped producing leaves the cohort sooner.
  • First miss — a uniform 5-claim burn for every identity. A young identity no longer loses its entire pending vault on a single miss.
  • Standing — probation-only. A strike still costs its burn but no longer demotes the miner to the floor tier reward rate.
  • Strike rate limit — a served response no longer disarms the one-strike-per-interval limit.

Escalation past the first miss is unchanged: second miss slashes the pending vault, third suspends.

Fixed: crash loop after a restart

A node stopped for a few minutes and restarted could panic on the virtual-processor thread with KeyNotFound(ChainHashByIndex/0000000000000000) and never recover, since restarting reproduced the same state. The reward and cohort window searches could fall back to a search floor of zero when a block's committed pruning point had already left local retention — which is the normal situation during a restart catch-up, because a node prunes ahead of the blocks it re-validates.

Both searches now clamp their floor to retained history. If a window genuinely reaches below the pruned horizon, the node now fails with an explicit message asking for a resync instead of computing a divergent value.

Archival nodes were never affected. Any node currently stuck in this loop is fixed by upgrading — no resync needed.

Also in this release

  • Mempool — one AiResponse is now admitted per responder per request, instead of one per request. A miner is no longer shut out because another miner's response was mined first. This is live on upgrade, not gated.
  • RPC — getServiceStrikes now returns requestHash on each entry of pendingBurns, identifying which request went unanswered.