Dashboard guide

The dashboard shows Furnace's own activity: what the engine does, what it costs, what is staked and what is distributed. Every tile names its source. This guide explains each number and how to check it yourself.

Ground rules

  1. Furnace activity only. Every engine number counts transactions from Furnace keepers or events from Furnace contracts. The dashboard doesn't show chain-wide activity.
  2. Every number has a source. Each tile ends with a source line naming the contract call, event or receipt it comes from.
  3. No projections. The dashboard has no APR, no APY and no projected yield. Distribution figures are past allocations.
  4. Gas is a cost. Gas paid always appears as spending, next to revenue.
  5. Amounts are in HYPE. No fiat conversions.

Preview and live data

The status badge in the header tells you which data the site is showing.

BadgeMeaning
Pre-launch · Preview dataFurnace contracts are not deployed. Engine, staking and distribution values are preview data generated in your browser to show how the dashboard reads. Each such tile and panel carries a striped Preview label, and a notice at the top of the dashboard says the same. None of these values are chain reads.
Testnet · LiveEvery value is read from Furnace contracts on Elysium Testnet (chain ID 99801).
Mainnet · LiveEvery value is read from Furnace contracts on Elysium mainnet.

The status bar's block height is real Elysium data in every mode. It's read directly from the network's RPC, along with a chain-ID check.

Headline tiles

TileWhat it countsSource
Engine txsTransactions sent by Furnace keeper addresses, all-time. The tile also shows the last 24 hours and the share of those that reverted.Sum of keeper nonces (eth_getTransactionCount)
Gas paidHYPE spent on gas by keeper addresses, reverted transactions includedΣ gasUsed × gasPrice over every keeper transaction, from the explorer's transaction index
Pools touchedDistinct pools the engine has operated on, all-timeFurnaceEngine.poolCount()
Stake TVLHYPE staked, equal to xFURNACE supply. Also shows the backing check.FurnaceStaking.totalSupply()
Weekly distributionHYPE sent to stakers in the most recent completed epoch. Accruing is the staker share collected so far for the next one.Distributor.epochAllocation(epoch) and pendingForStakers()

Each tile's sparkline covers the last 24 hours, in hourly buckets.

Gas completeness. Gas paid is checked against the keeper nonces. If the number of indexed keeper transactions doesn't yet equal the sum of nonces, the tile shows indexing until it catches up. Reverted transactions emit no events, which is why gas is counted from transaction receipts rather than from engine events.

Panels

Operations feed. The latest Operation events from FurnaceEngine: age, kind, pool address and transaction link. New rows highlight as they land.

Operations by kind. All-time count of each operation kind (quote maintenance, rebalance, arbitrage) from FurnaceEngine.operationCountByKind(kind).

Staking stream. The HYPE per day currently streaming to all stakers (rewardRate() × 86,400), when the current stream ends (periodFinish()), and the backing check.

Distributor inflows. All-time HYPE received by the Distributor, by source: engine revenue, external, treasury contribution, from Distributor.totalReceived(sourceKind). Treasury contributions are always on their own line and are never counted as revenue.

Weekly distributions. One row per completed epoch: epoch number, start date and HYPE sent to stakers.

Contracts. Every Furnace address with an explorer link: FurnaceStaking, Distributor, FurnaceEngine, the FURNACE token, the owner multisig and the keepers. Before deployment, each row reads not deployed. Only trust addresses shown here.

The backing check

FurnaceStaking must always hold at least as much HYPE as the xFURNACE supply. The dashboard compares the contract's HYPE balance (eth_getBalance) with totalSupply() on every read. It shows fully backed when the balance covers the supply and a red failure when it doesn't. The balance is normally a little higher than the supply, because it also holds the part of the current allocation that hasn't streamed out yet.

Check a number yourself

  • Engine txs: for each keeper address in the Contracts panel, read its nonce in your wallet or on the explorer, then add them up.
  • Gas paid: export a keeper's transaction list from the explorer and add up gasUsed × gasPrice for every row, failed rows included.
  • Pools touched, operations: call poolCount() and operationCountByKind(0|1|2) on FurnaceEngine from the explorer's Read contract tab.
  • Stake TVL and backing: call totalSupply() on FurnaceStaking and compare it with the contract's HYPE balance.
  • Distributions: filter Distributed events on Distributor. Each one records epoch, toStakers and toTreasury.

What the dashboard never shows

  • A projected or annualized return.
  • The Elysium sequencer-fee split next to Furnace numbers. That's chain design, covered in Elysium context.
  • Chain-wide totals presented as Furnace activity.