Chapter 07 · Beginner guide
Proving the work
Noise, tickets and a certificate anyone can check
On this page 8 sections
Multiplying matrices is the easy part to describe. The hard part is the proof.
How does the rest of the network know a miner really did the work, without redoing it and without even seeing the matrices? This page follows one miner through the whole puzzle, simplified but in the right order.
Why can’t miners just reuse old answers?
If the puzzle were only “multiply two matrices”, a miner could do one big multiplication and present it again for every block. Or it could pick special matrices that are suspiciously easy to multiply.
Pearl blocks both tricks with noiseLow-rank noise: Random-looking numbers a miner must add to both matrices before multiplying. No one can predict them in advance, and because they have low rank (128) they are cheap to remove afterwards.: random-looking numbers that must be added to both matrices before multiplying.
The noise isn’t chosen by the miner. It’s computed from the block the miner is working on and from fingerprints of the two matrices. Change a single transaction, the time, or one number in either matrix, and the noise comes out different. So every attempt needs fresh work, and there’s nothing to prepare in advance.
What is the noise, exactly?
The noise starts from two noise seedsNoise seed: One of two random-looking values made from the job key and fingerprints of the two matrices (and, since block 99,000, their sizes). Each seed grows into one noise matrix., random-looking values made with the BLAKE3 hash function. Each seed is stretched into a grid of noise for one matrix.
The grids are built cheaply, as a thin random matrix times a simple pattern of plus and minus ones. Mathematicians call that “low rank” (here, rank 128), and it means the noise is cheap to add and just as cheap to remove afterwards.
How does a multiplication become lottery tickets?
The answer grid is cut into small patches called tilesTile: A small patch of cells in the output matrix: 2 × 64 cells in the official GPU miner, though miners may choose other shapes (block 130,827 used 8 × 16). Each tile of a multiplication becomes one lottery ticket., of 128 cells each in the official miner.
Each answer cell is a long sum of multiply-and-add steps. While the GPU works through those sums, it pauses every 128 steps and folds the tile’s running totals into a short record, a kind of diary of the work in progress. That diary is the tile’s transcriptTranscript: A tile's running diary: every 128 steps along the long sums, the tile's running totals are folded into a 64-byte record. The ticket is a hash of it, so it depends on the work along the way, not just the final answer..
When the tile is finished, the diary is hashed into a 256-bit number. That number is a lottery ticketTicket: A 256-bit BLAKE3 hash of a tile's transcript. It wins a block if, read as a number, it is at most the target times the work that tile cost.. A big multiplication produces millions of them.
Why a diary and not just the final answer? Because a final answer can be faked cheaply from an old one, but the running totals along the way can’t, as far as anyone knows. To get the diary, you have to do the multiplication.
How does a ticket win?
The network sets a targetTarget: The number a winning lottery ticket must not exceed. On Pearl the bar is the target times the work the ticket cost; the block hash is never compared with it.. A ticket wins if, read as a number, it is no bigger than the target times the amount of work that tile cost.
That scaling is deliberate: it gives every multiply-accumulate the same tiny chance of winning, however the miner shapes its matrices.
What happens, step by step?
Here is the whole puzzle in order. The interactive miner below the list runs these steps on tiny matrices.
-
Start from a block template
The miner prepares a block: previous block, transactions, time and target. No nonce.
-
Choose two matrices
Any two grids of whole numbers in the range [−64, 64]. In the official miner, they come from a real AI model.
-
Fingerprint everything
BLAKE3 hashes the block template into a job key, then uses it to fingerprint both matrices.
-
Roll the noise
The fingerprints become two noise seeds, and the seeds become the noise.
-
Multiply, keeping a diary
The GPU multiplies the noisy matrices. Every 128 steps, each tile’s running totals go into its diary.
-
Turn diaries into tickets
Each finished tile’s diary is hashed into a ticket.
-
Check for a winner
Each ticket is compared with the scaled target. Almost all lose.
-
Prove the winner
The pool’s software turns the winning tile into the block’s certificate.
-
Remove the noise
The miner subtracts the noise’s effect and recovers the product of its original matrices, the useful answer.
What is the certificate?
The miner’s pool receives the winning tile’s ingredients: a couple of rows from one matrix, a few dozen columns from the other, and the fingerprint data proving they belong. Its software turns them into a certificateCertificate: The proof of work that travels in front of every block: about 60 KB, mostly a zero-knowledge proof. Any node can check it in milliseconds without seeing the miner's matrices., which takes several seconds on a good computer.
The certificate is about 60 KB. Almost all of that is a zero-knowledge proofZero-knowledge proof: A proof that convinces you something is true without showing the private data behind it. Pearl's certificate proves a ticket came from real matrix work without revealing the matrices., which says, in effect: “rows matching these fingerprints, plus this public noise, really produce this winning ticket”.
The certificate rides in front of the block, and the block header carries a 32-byte fingerprint of its public part, the proof commitment. That ties the proof to this exact block.
What does “zero-knowledge” mean?
It means proving something is true without revealing why it’s true.
Here’s a classic picture of the idea. You’ve found Waldo in a huge Where’s Waldo poster, and want to prove it without giving away where he is. So you cover the poster with a big sheet of cardboard that has one small hole, and line the hole up with Waldo. Your friend sees Waldo through the hole, and learns nothing about where on the poster he’s standing.
Pearl’s proof does the same with arithmetic. Nodes learn that a winning ticket came from honest matrix work, and nothing about the matrices themselves. (The real math is nothing like cardboard; this is only the idea.)
How fast can anyone check it?
Very fast. In tests run for this site on an Apple M5 Max processor, building a proof took 5.7–17 s, while checking one took 7–21 ms.
That gap is the point: mining is slow and expensive, checking is quick and nearly free, so every node can verify every block for itself.
- Certificate on mainnet
- 59,768 bytes
- Of which the proof
- 59,560 bytes
- Time to check
- 7–21 ms
- Apple M5 Max CPU
- Time to prove
- 5.7–17 s
- once per block, not per ticket
Make a guess
A miner finishes a huge multiplication, but none of its tickets win. Can it reuse the same result for the next block?
Think of your answer first, then check it.
Answer No.
The next block has a different template: a new previous block, at least. That changes the job key, so the noise seeds change, so the noise changes, so every diary and every ticket changes. The old work is spent, like scratched lottery cards.
One question is left from the ticket rule: who sets the target, and why does it keep changing? That’s the next page.