The pool is the only witness to what your rig did.
That is true at every mining pool, including this one. It is the thing the Glass Ledger exists to end.
Your rig guesses numbers against a target. The pool hands them out, collects the results and decides what counted. A short count and bad luck look identical from where you are standing, and you hold no second copy of anything.
So we write one. Once an hour the Bitcoin pool signs, for every rig, what it counted from it; and each time a new block appears, how fast fresh work went out. Below are the newest receipts, exactly as we signed them.
Pick a receipt on the left. The card says what it records in plain words; the bytes we signed sit one click below it.
A sample receipt
A sample line that nobody signed, so you can see the shape of a receipt before you give an address.
The bytes we signed
Hashed in your browser. This page does not check the signature. That is the one step you should not let us do for you. The key is published below, and the offline verifier is not released yet.
Nothing is stored on our side by looking. The address is the lookup key, and it is the same one your rigs already send us.
Three things get a receipt
Each covers something specific, and each says plainly what it does not cover. Receipts are written per rig, per window of time. They are not written per share, and we will not describe them that way.
Counted
For each of your rigs, each window, we sign what we counted from it. If that rig reports its own hashrate, the receipt carries the gap between the two figures, and only when the gap is wider than ordinary statistical noise does it say so.
We are not going to call noise a loss.
Useful
Work goes stale the moment somebody else finds a block. Each time we notice a new tip quickly, we sign how fast fresh work went out to you.
The occasional tip we catch only by polling gets no receipt. It would not be honest to sign for a speed we did not achieve.
Conserved
The moment a block is won here, a receipt records it going out to every node we reach, and names the coinbase transaction that pays you. Look that transaction up on any block explorer and you see the address for yourself.
It records a block after a rig finds one. It says nothing about when that happens: difficulty sets the odds, the same at every pool.
The offline verifier is not released yet, so the check still runs through this site. The public repository holds the licence and the readme, not the source.
Every receipt above was written by us. So what stops us from writing a different one later?
Change one digit and the seal breaks.
A receipt is a short line of text. Its seal is a 64-character fingerprint of those exact bytes, and our signature is written over the seal.
Try changing one digit below and watch the seal change. That is how you can tell a receipt was not altered after we signed it: the seal either matches or it does not.
Computed in your browser over a sample line nobody signed. Give the bench above your address and this becomes one of your receipts.
No edited receipt keeps its seal, and nobody can work backwards from a seal to a number that would fit it.
The seal stops a number from being changed quietly. The signature stops the changed number from being re-issued. Anyone can recompute a seal; only the key holder can sign one.
A receipt cannot make you win. It stops a short count from hiding behind bad luck.
Nothing here improves your odds. Difficulty is set by the network and is the same everywhere. Solo mining is a lottery. Expected time is an average, not a date. Lower difficulty means a shorter wait, not more value.
One key, published once
Copy it the first time you look. Every receipt after that either verifies against it or it does not, and our word stops being part of the answer.
Show the key
124797e8bc0ec89ed60b77c30e1770c624407f72659dc97aa4c4fd7d9377106c9amd6GUzTaGXASESCa75c9Rx3vWYihRyLUAE3Vrmqwgm3T9jtxNBIP340 Schnorr over sequence, type and payload. Procedure at docs/audit.
Every receipt above carries our signature, and a key we hold could sign a different past. What follows takes that option away from us.
Then Bitcoin keeps the time.
Once an hour, every receipt signed since the last hour is folded into one 32-byte root, and that root is written into Bitcoin through OpenTimestamps. From then on a receipt cannot be changed, dropped or dated backwards without breaking a root that Bitcoin already holds.
Pick an hour, or keep the receipt you chose above. The page shows where it stands: created, sealed, in Bitcoin.
Reading the anchors…
Pick an hour to read its anchor.
Have a receipt of your own?
Every step of the arithmetic
- Your receiptnone on the walk yetGive the bench above your address and pick a receipt, or paste one.
Check it yourself, off this site
Take the proof with you
Two files per hour: the proof itself and the anchor, which lists every leaf under the root. Together with your receipt they check anywhere. The script below does it with nothing but Python, and the OpenTimestamps client reads the proof file as it is.
--online asks an explorer for the block.python3 np-anchor-verify.py nexuspool-receipt-<seq>.json nexuspool-<anchor id>.json --onlinenp-anchor-verify.py
info prints the root and the attestations; verify checks the block against your own node.pip install opentimestamps-client ots info nexuspool-<anchor id>.ots ots verify -d <root> nexuspool-<anchor id>.ots
-OJ keeps the name the pool gives the proof.curl -OJ 'https://nexuspool.io/api/custody-anchor.ots?id=%3Canchor%20id%3E' curl -o nexuspool-<anchor id>.json 'https://nexuspool.io/api/custody-anchor?id=%3Canchor%20id%3E'
It does not check the signature; the key above does that. It proves that a receipt existed before one Bitcoin block and has not been altered since. Until that block exists the anchor is pending: the calendars hold the root and have promised to include it, and the page says so rather than guessing.
The pool anchors its history in batches, oldest first, so the newest receipts join an anchor within a day of the first one. When a receipt is still waiting, the page says so instead of guessing.
A receipt covers the work we counted. The rest of the path, from a new block to the coinbase that pays you, has its own checks: