§ 08 · Mining
Hashrate
On Pearl, one "hash" is one multiply-accumulate
On this page 6 sections
In Bitcoin, hashrateHashrate: How much mining work happens per second. On Pearl it counts multiply-accumulates, not hashes, even though explorers label it H/s. 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-accumulateMultiply-accumulate: One multiplication added onto a running total. A big matrix multiplication is billions of them, and Pearl's hashrate counts them.: 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.
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:
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:
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:
- 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 |
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:
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”.