§ 08

§ 08 · Mining

Hashrate

On Pearl, one "hash" is one multiply-accumulate

In Bitcoin, hashrate means what it says: SHA-256 hashes per second. Pearl explorers show a hashrate too, in the same units, “EH/s” for the network and “TH/s” per GPU. But on Pearl, the thing being counted isn’t a hash. It’s a multiply-accumulate: one multiplication added onto a running total, the basic step of a matrix multiplication.

This page shows why that is, how the number is estimated, and what it means for one GPU.

Try it

Put in a GPU’s speed and see how long it would take, on average, to find a block at today’s difficulty.

Mining odds

How long one GPU would wait, on average, for a block

Total: 600 TMAC/s

Average wait for one block

218 d 1 h

1.13 × 10²² multiply-accumulates per block (difficulty × 2.815 × 10¹⁴) ÷ 600 TMAC/s

Chance of at least one block in…

a day 0.46%
a week 3.16%
a month 12.9%
a year 81.2%
Network, by design
445 blocks/day
one every 194 s
Network rate
64.9 EMAC/s
snapshot, Oct 20, 2026
Your share
0.00092%
≈ 0.0041 blocks/day

Estimate, not advice Averages only: a block is luck, so the real wait can be much shorter or longer. GPU speeds are rough figures from pool data (arXiv 2606.04819), not benchmarks. This ignores pools, costs and prices. Many miners join a pool for small, steady payouts instead.

Runs in your browser · asks PRLScan only if you press “Use live” src/data/facts.ts · MINING.macsPerDifficulty

How is hashrate estimated?

Nobody counts it. A node or explorer looks at recent blocks, adds up the expected work each one represents, and divides by the time they took. Pearl’s node does exactly what Bitcoin’s does, over the last 120 blocks by default:

hashrate≈∑recent blockswork(bits)time between the first and last of them,work(bits)=2256target+1\text{hashrate} \approx \frac{\sum_{\text{recent blocks}} \text{work}(\text{bits})}{\text{time between the first and last of them}}, \qquad \text{work}(\text{bits}) = \frac{2^{256}}{\text{target} + 1}

The work of a block is the number of attempts you’d expect to need, on average, to beat its target. In Bitcoin an attempt is one hash. The question is what an attempt is on Pearl.

Why is a “hash” a multiply-accumulate?

Because of how the ticket bar is scaled. A ticket from a tile of h·w cells, each summed over L steps, costs W = h·w·L multiply-accumulates, and it wins if it’s at most the target times W. So:

Pr⁡[ticket wins]≈T⋅W2256⟹𝔼[multiply-accumulates per block]=WPr⁡[win]≈2256T\Pr[\text{ticket wins}] \approx \frac{T \cdot W}{2^{256}} \quad\Longrightarrow\quad \mathbb{E}[\text{multiply-accumulates per block}] = \frac{W}{\Pr[\text{win}]} \approx \frac{2^{256}}{T}

W cancels. Whatever the tile shape or matrix size, the expected number of multiply-accumulates per block is 2²⁵⁶ ÷ T, which is exactly the “work” number the node already adds up. So the node’s hashes per second are multiply-accumulates per second. Pearl’s INT whitepaper describes the difficulty the same way, as an “acceptance probability per int8 multiply-add”.

Two refinements:

  • These are multiply-accumulates on the noisy 8-bit matrices, the ones actually multiplied.
  • They’re counted at the reference noise rank, 128. Since the rank penalty, a miner using rank r above 128 needs r/128 multiply-accumulates per unit of credited work.

Pearl’s software still calls the result “hashes per second”; the multiply-accumulate reading follows from the ticket rule rather than from a label in the code. It’s the natural reading, but it is an interpretation.

How much work is a block?

Pearl’s difficulty compares a target with the easiest one, bits 0x1b00ffff. Plugging that in:

work≈difficulty×26465,535≈difficulty×2.815×1014\text{work} \approx \text{difficulty} \times \frac{2^{64}}{65{,}535} \approx \text{difficulty} \times 2.815 \times 10^{14}
2⁶⁴ ÷ 65,535 = 281,479,271,743,489: the work of a difficulty-1 block, such as block 1.
Difficulty, 2026-10-20
40,157,376
bits 0x176af3a6
Work per block
≈ 1.13 × 10²²
multiply-accumulates
Per second, at 194 s
≈ 5.83 × 10¹⁹
if blocks were on schedule

That last number is about 58 EH/s. Blocks were actually coming faster than 194 seconds that day (174.3 s on average over 144 blocks), which pushes the estimate up: PRLScan’s difficulty-based figure was 6.49 × 10¹⁹ per second, and MiningBoard showed 65.61 EH/s. Different averaging windows give slightly different numbers, but they agree on the scale.

Right now, from PRLScan:

Live figure Value
Network rate 64.9 quintillion multiply-accumulates per second
Difficulty 40.16 million
Average block time, last 144 blocks 174.3 seconds

Pearl, right now

Snapshot from Oct 20, 2026 · asking PRLScan…

Block height
130,827
Difficulty
40.16M
Avg block time · 144
174.3s
Network rate
64.9EMAC/s

Time between the last 20 blocks — 194 s target

Blocks arrive at random: gaps of a few seconds and of ten minutes are both normal. The average is what difficulty steers toward 194 s.

Network rate counts multiply-accumulates per second, not hashes PRLScan · refreshes every minute while visible
Going deeper A neat coincidence of sizes

2⁶⁴ ÷ 65,535 is just over 2⁴⁸, and 2⁴⁸ multiply-accumulates is exactly one multiplication of the shape block 130,825 declared: 131,072 × 8,192 times 8,192 × 262,144 (2¹⁷ × 2¹³ × 2¹⁸). So, roughly, Pearl’s difficulty counts how many multiplications of that size the network performs, on average, per block: about 40 million on 2026-10-20.

What does that mean for one GPU?

Pool data collected for a 2026 study lists NVIDIA H100 workers at about 500 to 700 TH/s and RTX 3090 workers at 75 to 120 TH/s. On Pearl, “TH/s” means trillions of multiply-accumulates per second. Estimates only, from those figures and the difficulty above:

GPU, as reported Rate Expected time to a block, alone
H100 about 600 TH/s about 218 days
RTX 3090 about 100 TH/s about 1,308 days

Each 2 × 64 × 8,192 ticket wins with probability about 9.3 × 10⁻¹⁷. That’s why almost everyone mines in pools.

Make a guess

Bitcoin's network reports a far bigger number of EH/s than Pearl's 65. Is Bitcoin's network doing more work?

Think of your answer first, then check it.

Answer The numbers can't be compared.

Bitcoin’s “H” is one SHA-256d evaluation of an 80-byte header, done by special-purpose chips. Pearl’s “H” is one 8-bit multiply-accumulate on a GPU’s tensor cores, a much smaller step. Same label, different units. Compare energy or hardware, not the H/s figures.

What doesn’t the number count?

It counts the multiply-accumulates that buy tickets. Real miners do more:

  • Commitments and noise: fingerprinting both matrices and generating the noise, which grows with the matrix sizes.
  • Denoising, for miners who keep the product: about 2r/k extra, 3% at k = 8,192.
  • Proving a winning tile: seconds of CPU per block found.
  • Rank above 128, as above.

And the opposite caveat: the number says nothing about whether the work was useful. A multiply-accumulate on random numbers counts the same as one inside an AI model.

Code: work and hashes per second

CalcWork (node/blockchain/internal/workmath/difficulty.go:141-153 at v1.5.2, on GitHub), inherited unchanged:

node/blockchain/internal/workmath/difficulty.go Go
func CalcWork(bits uint32) *big.Int {
	difficultyNum := CompactToBig(bits)
	if difficultyNum.Sign() <= 0 {
		return big.NewInt(0)
	}
	// (1 << 256) / (difficultyNum + 1)
	denominator := new(big.Int).Add(difficultyNum, bigOne)
	return new(big.Int).Div(oneLsh256, denominator)
}

getnetworkhashps in rpcserver.go (node/rpcserver.go:2536-2613 at v1.5.2, on GitHub) sums that over the recent blocks and divides by the time between their timestamps. The scaling that turns it into multiply-accumulates is in the verifier, difficulty_adjustment_factor (zk-pow/src/api/sanity_checks.rs:189-194 at v1.5.2, on GitHub): “how much easier the jackpot bound is made … in proportion to the work one attempt costs”.

The codex

Suggested

Up and down arrows move through the results, Enter opens one, Escape closes. Anywhere on the site, slash or Command K opens this search, and the square brackets [ and ] go to the previous and next page.