Hashrate
{formatHashrate(data.hashrate_hs_1m)}
5m {formatHashrate(data.hashrate_hs_5m)} · 1h {formatHashrate(data.hashrate_hs_1h)} · 24h {formatHashrate(data.hashrate_hs_24h)}
{#if bestGlow}
New best share! Previous: {formatDifficulty(bestPrevValue)}
{/if}
Best share
{formatDifficulty(data.best_diff)}
100} class:unlucky={luckPct > 0 && luckPct < 100} title="Luck = best share / total work. 100% means your best share matches the work done. Above 100% is lucky (found a harder share than expected), below is unlucky." > {luckLabel} luck
{#if bestGlow}
Nice
{/if} {#if data.best_diff > 0}
Inspect
{/if}
Block latency
{#if latencyCount > 0}
{latencyAvg}ms
last {latencyLast}ms · {formatWork(staleWork)} wasted ({latencyCount} blocks)
{:else}
—
waiting for the next block
{/if}
Network
{formatHashrate(data.network_hashrate_hs)}
pool share {(poolShare * 1e9).toFixed(2)} ppb
Difficulty
{formatDifficulty(data.chain?.difficulty ?? 0)}
network target
Block height
{height ? height.toLocaleString() : "—"}
{data.chain?.chain === "main" ? "mainnet" : data.chain?.chain ?? "—"} {#if data.peer_count > 0}  · {data.peer_count} peers {/if}
Block reward
{data.next_block_reward_btc ? data.next_block_reward_btc.toFixed(4) : "—"} BTC
subsidy + fees (next block)
Total work
{formatWork(totalHashes)}
round effort {roundEffort.toFixed(1)}% of current difficulty
Expected block
{formatDuration(expected)}
uptime {formatUptime(data.uptime_seconds)}
Next adjustment
0} class:down={diffPct < 0} >{diffPctLabel}
{retarget.remaining} blocks · ~{retarget.eta}