qt: Overview "chain vitals" panel — height, difficulty + 7-day avg, net/pool hashrate, Great Ritual countdown + finale claimant link #62
Labels
No labels
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
SubGeniusFinance/Offerings-to-Cthulhu#62
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
The Overview page's right column is the Transgressions (recent transactions) list with nothing but dead spacer below it (
verticalSpacer_2). The wallet already knows almost everything a worshipper glances at the explorer for — height, difficulty, hashrate, and (since v2.0.0) the entire Great Ritual schedule. Put it on the Altar's doorstep instead.Cosmetic / wallet-only change. No consensus impact, no forced upgrade — targets the v2.1.x line.
Placement
src/qt/forms/overviewpage.ui, right column (verticalLayout_3): replaceverticalSpacer_2belowlistTransactionswith a styledQFramematching the existing Altar / Transgressions panels. Labels should keep the established register (Altar, Transgressions, Incantations, Tithing) — flavored label + plain-English tooltip, same pattern as today.Proposed rows
ClientModel::getNumBlocks()— already wired tonumBlocksChangedGetDifficulty(chainActive.Tip())via a newClientModelgetterGetDifficulty(pindex); recompute on new-block signalgetnetworkhashpsestimator fromrpcmining.cpp(last ~120 blocks), exposed viaClientModelRitualBonus()schedule — see belowPool hashrate — the one external dependency (decision needed)
The only row that can't come from the local chain state. Source would be the public Miningcore API:
GET https://pool.23skidoo.info/api/pools/offerings→pool.poolStats.poolHashrate, polled viaQNetworkAccessManagerevery ~60 s.Considerations:
Proposal: off by default, enabled via a Display option ("Show pool hashrate"), URL kept as a single constant, row shows
—when disabled or on any fetch failure/timeout. Alternative: drop this row entirely and keep the panel 100 % local. Decide before implementation.Great Ritual countdown (fully local)
The schedule is completely determined by height —
RitualBonus()(src/main.cpp:1219):FIRST_FINALE = 1,141,666,PERIOD = 263,000, 29-day rite of once-per-day special blocks before each finale. Expose a small helper (next finale height, blocks remaining, current rite phase + that day's bounty when inside the window); no behavior change to consensus code.Display states:
Next finale: block 1,141,666 — 69,591 blocks (~48 days)For reference at time of filing: tip ≈ 1,072,075, so the first post-fork finale is ~48 days out and the rite window opens at block 1,101,346 (~20 days out).
"Claimed by" — the address that solves the BIG block (fully local)
Once a finale height is buried in the chain, show:
Mechanics:
chainActive[F]→ReadBlockFromDisk→ coinbasevout[0]→ExtractDestination.vout[0]is the miner output (7/8 base + full ritual bonus) andvout[1]the Treasury split (src/miner.cpp:351-357), so no txindex is needed — one disk read per finale, cache the result.Caveats to bake in:
Non-goals
ClientModel).Sketch of files touched
src/qt/forms/overviewpage.ui— new frame in the right columnsrc/qt/overviewpage.{h,cpp}— wiring, refresh timer, formattingsrc/qt/clientmodel.{h,cpp}— getters: difficulty, 7-day avg, net hashrate, ritual status, finale claimantsrc/main.{h,cpp}— tiny read-only helpers exposing theRitualBonus()schedulesrc/qt/optionsmodel/optionsdialog— pool-hashrate opt-in (only if that row survives)Related: #8 (Mining tab), #18 (per-peer sync-height backport).
Scope update: the pool-hashrate row is dropped — the panel is now 100% local, no network I/O, which resolves the one open decision above.
Implementation is up on branch
feat/62-overview-chain-vitals(commit9a037588): "The Deep" panel in the Overview page's lower right — Depth (height), Vigilance (difficulty, current / 7-day mean), The Thrum (network hashrate), the Great Ritual finale countdown with rite-phase display, and the finale claimant's address linked to the explorer once the first finale has passed. Core side adds only read-only helpers (GetRitualStatus(),GetCoinbasePayoutAddress()); no consensus or RPC changes.