v0.2.0 — resubmit scheduling, epoch decoupling
v0.2.0 — resubmit scheduling, epoch decoupling
FIXES A LIVE OUTAGE. 0.1.0 pinned EPOCH_S=604800 and a genesis timestamp
locally and required the payload's epoch to equal current-1. Neither matched
production (epoch_s=86400) or staging (3600), so every payload was rejected as
stale-epoch — with no error, no non-zero exit and a healthy heartbeat. Anyone
running 0.1.0 is setting no weights at all. Upgrade.
Changes:
-
Weights are resubmitted every 120 blocks for the whole epoch instead of once.
A validator that submits once per epoch passes activity_cutoff (~16.7h) long
before a daily epoch closes and drops out of Yuma consensus. 120 rather than
100 because SN53's on-chain weights_rate_limit is exactly 100, and our anchor
is the block read before submitting while the chain's is the block the
extrinsic executed in — always later. -
The validator is no longer epoch-aware. EPOCH_S, epoch_index() and
ENGY_SN53_GENESIS_TS are gone; the provider owns the timeline. Replay is
bounded by a monotonic guard on local state instead. -
The last submitted vector is cached and resubmitted during a provider
outage, so an outage past activity_cutoff cannot take the validator off
chain. Unbounded in time by design: the chain keeps the last weights either
way, so stopping costs only our own dividends. -
A burn paying out to an unexpected owner hotkey is flagged (warning, never a
rejection), and a fully-unregistered vector now names its likely cause
instead of reading as a chain error. -
Poll interval 600s -> 300s.
Operator notes:
- ENGY_SN53_GENESIS_TS is no longer read. Leaving it set is harmless.
- Required config is now just ENGY_SN53_API and ENGY_SN53_MASTER_HOTKEY.
- ENGY_SN53_RESUBMIT_BLOCKS overrides the 120-block cadence if a subnet's
weights_rate_limit ever exceeds it.
Known gap: prod genesis is 2026-07-22 00:00 UTC and the first epoch finalizes
25h later, while activity_cutoff is ~16.7h. Validators running from genesis
have nothing to submit until then. The fix is provider-side and tracked
separately.