Four bits of maths run the whole chain: a hyperbola for supply, a lottery for blocks, a ratio for your income, and a matrix trick for useful work. Each one comes from the Pearl source code, and every Pearlascope number is recomputed below from live data, with a link to where it sits on the site.
Bitcoin pays 50 BTC per block and halves every 210,000 blocks, so its supply is a geometric series: \(21\text{M} = 210{,}000 \times 50 \times \sum_{k\ge0} 2^{-k}\). Pearl drops the halvings. The block reward in validate.go → CalcBlockSubsidy is:
Look at \(K\): it's the number of 194-second blocks in four years. Now split the fraction into partial fractions, \(\frac{K}{(h-1+K)(h+K)} = K\left(\frac{1}{h-1+K} - \frac{1}{h+K}\right)\), and add up every block from 1 to \(H\). Almost everything cancels (that's a telescoping sum):
That's a hyperbola (the same shape as Michaelis–Menten in biology). Three things fall out of it:
Let \(B = 365 \cdot 86400/194 \approx 162{,}556\) be a year of blocks. The supply growth over the next year is:
At today's height that's —. The \(h\) in the denominator is why the early years are brutal: the chain is only about six months old, so the supply is still small next to what's coming.
On Pearlascope: The dilution wallHero: Minted per dayValuation ladder: supply in 12 monthsMining is a lottery. Each attempt produces a 256-bit number, and you win if it's below a target. If attempts behave like uniform random draws, one attempt wins with probability \(p = \text{target}/2^{256}\), so the expected number of attempts per block is \(1/p\).
Difficulty is just the target turned upside down: \(D = T_1/\text{target}\), where \(T_1\) is the easiest target the chain allows. Pearl's mainnet sets PowLimitBits = 0x1b00ffff, which decodes to \(T_1 = \texttt{0xffff}\cdot 2^{8(\texttt{0x1b}-3)} = 65535 \cdot 2^{192}\). So:
Bitcoin uses 0x1d00ffff and gets \(D\cdot 2^{32}\). Same structure, two bytes over, so a Pearl "attempt" is a unit \(2^{16}\) times finer. (That's also why HeroMiners quotes a difficulty \(2^{16}\) times bigger than the chain's: different unit, same number.) prlstats publishes the exact factor as work_per_diff = 281,479,271,743,489, which is \(2^{64}/65535\) to the digit.
Blocks target one every \(T = 194\) s. If the chain is on schedule, network hashrate is attempts per block divided by seconds per block:
With D = —, that's —
Hashrate itself can't be observed. You only see blocks arrive. Block arrivals are a Poisson process, so if you count \(n\) blocks over time \(t\), the estimate \(\hat H = n D 2^{48}/t\) carries a relative error of about \(1/\sqrt{n}\). That's why the three numbers you'll see for Pearl's hashrate disagree:
The explorer's 50-block window is the noisiest by far. Pearlascope uses the difficulty-implied number because it matches the 194-second schedule the daily mint is also computed on, so the calculator's inputs are consistent with each other.
Pearl retargets every block with a WTEMA filter (weighted-target exponential moving average). In its standard form, each block nudges the target by its own solve time \(t\):
A fast block (\(t < T\)) lowers the target a hair, which raises difficulty. With a one-week constant, a sudden jump in hashrate shows up as blocks arriving early for days before difficulty fully absorbs it. That's happening right now: —.
On Pearlascope: Calculator, "EH/s, from difficulty"Hashrate chartIf your card makes \(H\) attempts a second, your expected share of blocks is \(H/H_{\text{net}}\). Multiply by the reward and by blocks per day, \(86400/T\), and watch \(T\) cancel:
Your income depends only on your speed, the reward and the difficulty, not on the block time. An RTX 4090 at 305 TH/s earns — PEARL a day (before pool fees).
For the 4090 at $0.08 to $0.15 per kWh, that's — per PEARL. This is the "gaming card" floor in the thesis.
Solo, you win blocks at Poisson rate \(\lambda = (H/H_{\text{net}})\cdot 445\) per day. For one 4090 that's a block every — on average, and only a — chance of winning anything in a month: \(1-e^{-30\lambda}\). A pool swaps that lottery for a steady trickle at the same expected value, minus a fee.
Hold the network hashrate flat. The reward decays as \(r(t) = r_0\left(\frac{h_0}{h_0 + \beta t}\right)^2\), where \(h_0 = h+K\) and \(\beta \approx 445\) blocks a day. Integrate to get the total coins mined by day \(t\):
So a card has a lifetime ceiling even before anyone else joins. For a 4090 at flat network hashrate that's about — PEARL, ever. Payback is the first \(t\) where cumulative PEARL × price − cumulative power cost ≥ card price. Pearlascope solves it day by day, and it also stops if the daily reward falls under the power bill.
Big caveat: in practice the network hashrate doesn't stay flat. If it doubles, your share halves. The Pearlascope payback assumes difficulty is frozen, so treat it as a best case.
On Pearlascope: Mining calculatorPayback chartThe gap FP8 has to closeThe founding paper (arXiv 2504.09971) asks a hard question: can mining be a real computation, chosen by the miner, with almost no extra cost? Its answer is matrix multiplication, the core operation of AI, with \(1+o(1)\) overhead.
Here's the problem the paper solves. If miners pick their own matrices \(A, B\), a cheater picks easy ones (zeros, repeats) and wins the lottery cheaply. The fix is to add random low-rank noise, derived from the block, so every product looks random. Take \(E = UV^{\top}\) and \(F = PQ^{\top}\) with rank \(r \ll n\):
The miner multiplies the noisy matrices (about \(n^3\) work, the same as the job itself), hashes pieces of the computation as lottery tickets, and then recovers the real answer:
Every correction term is a product with a thin \(n\times r\) matrix, so it costs \(O(n^2 r)\). The overhead ratio is:
For big AI matrices that's close to free. The paper conjectures security by reducing it to solving a batch of low-rank random linear equations. You can see the parameter in the live code: the RankPenaltyForkHeight rule requires a proof's noise rank to meet a minimum, and scales the jackpot bound with it.
The lottery hashes intermediate results, so a verifier must reproduce them bit for bit. Floating-point addition isn't associative. FP8 (E4M3) has 3 mantissa bits, so between 16 and 32 it can only store every second integer. Watch:
(17 is exactly halfway between 16 and 18, and round-to-nearest-even picks 16.) Different GPUs add in different orders, with different accumulator widths, so they get different bits. That's why the FP8 proposal is tied to specific architectures (Hopper and Blackwell) and has miners declare their hardware, and why older chips without matching FP8 behaviour fall out.
On Pearlascope: Thesis, "The fix: FP8"Useful Work WatchMarket cap = price × circulating supply. FDV = price × 2.1B. Because supply grows — in a year, a market-cap target has to be divided by next year's supply, not today's:
Same cap, fewer dollars per coin. That's dilution in one line. Pearlascope's bear, base and bull prices (—) are exactly this division. One more number shows the pressure on price: each day's new coins are worth — of a day's trading volume.
On Pearlascope: Bear / Base / Bull cardsWhere the price could landRecomputed in your browser from data.json (the same file the site reads) using the formulas above, so this table re-checks itself on every refresh.
| Number on the site | Where | Formula | Site shows | Recomputed |
|---|
Sources: Pearl node source (node/blockchain/validate.go CalcBlockSubsidy, chaincfg/params.go mainnet params), prlstats.com /api/status, prlscan, CoinGecko pearl-2, Blockworks Research, arXiv 2504.09971. Not financial advice.