Technical Note: SN80 Production Environment h60 Hashrate Anomaly (2026-06-07)
Target of Anomaly: hotkey 5F4g2C8kqVkFCgF9HCmBPckJq4FwEYbQvTLXBYdkMYzZpjwQ, primarily contributed by worker ...hotkey.1
Symptoms: The 09:37 UTC snapshot showed h60 ≈ 41930 GH (~42 TH/s), h5 ≈ 35 GH, and h24 ≈ 2244 GH. Under the same hotkey, wkrs=4, but the anomaly was heavily concentrated on .1.
Root Cause Overview
This was a single-worker connection-level incident caused by a combination of a miner submit flood and F2Pool VarDiff (variable difficulty) dynamic adjustments. It was not a pool-wide outage, nor an error in the proxy hashrate formula.
1. Submit Flood (.1 worker)
Between 09:25 and 09:30 UTC, .1 had approximately 15,000 shares accepted within about a 15-minute window (peaking at around 9,383 shares/minute at 09:27, compared to a normal rate of ~30 shares/minute). The uniq_ratio was 1.0, and the block_hash for each share was unique. This indicates high-frequency submissions of distinct nonces rather than an expired replay of a single job.
2. F2Pool VarDiff (Isolated to this connection)
Overly dense submissions triggered VarDiff, driving the pool_difficulty of .1 up from 4,194,304 (2²²) to between 268 million and 537 million (2²⁸ to 2²⁹). During the same period, the pool_diff for rig1 and rig05 under the same hotkey remained at 4,194,304. This demonstrates that VarDiff is applied per F2Pool worker connection, rather than being a global adjustment for the hotkey or the entire pool.
3. Why h60 was Artificially Inflated
Displayed Hashrate: h60 = sum(pool_difficulty) × 65536 / 3600.
After VarDiff spiked the pool_difficulty, a large volume of accepted shares accumulated based on this high difficulty, inflating h60 to ~41,930 GH. The actual_difficulty for individual shares remained around 68–131, meaning it did not represent a genuine 42 TH/s physical hashrate.
4. Reward Metric (share_value)
LTC/DOGE payout distribution utilizes share_value = sum(actual_difficulty), independent of h60 or pool_difficulty. Although the share_value rose due to the surge in accepted shares—causing that day's reward allocation percentage to be temporarily higher—it was not amplified millions of times by the pool_diff. Payouts were still calculated strictly by accumulating the actual_difficulty of the accepted shares.