For companies that hold bitcoin
Prove you control the wallet.
Signing Room turns a bitcoin wallet into evidence: proof the keys are yours, and a plain-English account of what each payment actually does. An auditor, insurer or counterparty can check both without taking your word for it.
Control proved
The wallet is theirs.
signed by a key only this wallet can derive, over a question nobody could prepare for
Detected from this browser's own capabilities, not from its user-agent string.
The point of the thing
Proving it to someone outside your company.
Sooner or later an auditor, an insurer or a trading partner asks you to prove two things: that the coins are really yours, and that a named person really approved a particular payment. Both should be answerable without them having to trust our software, or yours.
“These coins are ours.”
The party asking picks a phrase nobody could have prepared for in advance. The wallet's key signs it, on the device that holds it, and the result names the wallet and the address it controls. It cannot be reused to answer a different question later.
“This person approved this exact payment.”
Every approval is tied to the exact transaction and the exact summary the approver was shown, worked out on their own machine, and the whole thing stops if two people were shown different things.
You can do the first one today, with any wallet that signs messages — Sparrow, Bitcoin Core, Electrum. What is not settled is which physical devices can take part: support varies by manufacturer, and we will establish that against real hardware rather than guessing here.
The mistake this prevents
The payment was right.
The rest of it was not.
A bitcoin payment almost never sends a round number. You spend a whole coin and the change comes back to you, the way a £20 note comes back as £13.40. So a payment to one supplier usually has two destinations: the supplier, and you. This is true whether one person holds the key or five people have to agree.
Everyone checks the supplier line. It is the one they agreed in the thread, and it is correct. Almost nobody checks the second line, because the software they are approving in shows it as an address they have no way to recognise.
That is where the money goes. Change the second address and the supplier still gets paid exactly what was agreed, while the remaining 7.5 of a 10 coin balance leaves for good. Every approver saw the correct payment and signed.
What most wallets show you
Two addresses that look alike. Nothing on this screen tells you which one is yours.
What Signing Room shows instead.
The other thing it does
From a wall of code to a sentence you can act on.
Four steps, run on your own machine, from the file you were sent. Everything after this point is mechanical and cannot change who gets paid. This is the step where a person decides something.
- 1Read the file Anything it cannot make sense of is reported, never skipped over.
- 2Work out what is yours Every address rebuilt from your own wallet and compared, so change coming back to you is recognised as yours.
- 3Add it up Amounts and the network fee, calculated rather than taken from the file on trust.
- 4Check it Dozens of checks. Anything it could not check says so, rather than showing you a tick.
1 · The file you were sent
70736274ff0100 7d0200000001e1 649b7bcb5ea45e d23e212b59f316 f03c741a8f61cd 96d6c4fd46612e 2e0f2901000000 00fdffffff0280 969800000000
This is what a bitcoin payment looks like before anything explains it. It is what most people are approving.
2 · Whose coins are these?
Every address is rebuilt from your own wallet and compared. An address can only be called yours if it can be rebuilt, so a stranger's can never pass as one.
- Coins being spent
- 3 all yours
- Payment
- Meridian Ltd not yours
- The leftover
- back to you
3 · What it adds up to
Leaving your wallet
2.50000000 BTC
- Coins being spent
- 10.50000000 BTC
- To Meridian Ltd
- 2.50000000 BTC
- Back to you
- 7.99963476 BTC
- Network fee
- 0.00036524 BTC
The fee is calculated from the payment's real size, never assumed. Get that wrong and the figure a person reads is wrong too.
4 · What we found
The checks
Forty-five ways a payment can be wrong.
Each one has a test built to trigger it on purpose, and the build fails if any check has never been made to fire. Anything that could not be checked keeps its own colour and never quietly counts as a pass.
Where the money actually goes
Whether the coins being spent are yours, and whether the leftover really comes back to you. This is the family that loses money.
What your signature covers
A signature normally locks the whole payment. There are ways to arrange one so that parts can still be changed afterwards, and they rarely happen by accident.
What it costs
The network fee, worked out rather than taken on trust, and flagged when it is a large share of what you are moving. Fees cannot be recovered.
Whether it matches what you were told
The amounts and recipients someone described when they proposed this, checked against what the payment actually does.
Things worth knowing
Whether the fee can be raised later, whether it can confirm straight away, whether an address has been used before, and which bitcoin network this is for.
Whether everyone is looking at the same thing
If two approvers were shown different payments, or one key is counted twice, or a coin gets spent elsewhere halfway through, the approval stops.
Against the reference
Checked against Bitcoin itself.
Software that agrees with itself has proved nothing. Every time our tests run, the numbers this page would show you are compared against Bitcoin Core — the reference implementation the whole network runs on — and the transaction we assemble is handed to it and mined. If we read a payment wrongly, telling you about it confidently would only make things worse.
Checked against Bitcoin Core v31.1.0
- Wallet details
- 3/3 read identically
- Your addresses
- 10/10 rebuilt identically
- Amounts and fee
- every figure matches
- Finished payment
- identical, to the byte
- Accepted by the network
- our payment, mined
- Size estimate
- 398 predicted, 397 actual
59/59 checks passed
The record
A record your auditor can check themselves.
Everything that happens to a wallet is written to a running record where each entry is sealed against the one before it. Change any line after the fact, delete one, or reorder two, and every entry after it stops adding up.
They do not have to trust our software
The checking tool is a short, separate program that shares no code with ours. An auditor can read it in an afternoon, or write their own. A record only you can verify is not a record, it is a receipt from the company being audited.
Five ways of faking it, all caught
Edit an entry, remove one, swap two around, insert a forgery, or rewrite the whole tail so it adds up again. All five are refused, and it names the exact point where the record stops being consistent.
Catching an attack must not look like consent
If someone tampers with a payment mid-approval, it is detected, the approval is not recorded, everything stops, and what happened goes into the record. The record still checks out afterwards.
The boundary
What this never does.
Touch your keys
Your seed phrase and your private keys never come near this. Your own device does the signing; we only put the pieces together afterwards. There is no code here that could do anything else.
Hold your coins
We are not a custodian and we are not one of your approvers. Your wallet is yours before we arrive and exactly the same after we go.
Lock you in
Export everything, switch us off, and carry on spending from your wallet in ordinary bitcoin software the same day. We test that before every release, not when somebody asks.
Before you start
Any browser works. A cable is optional.
Most serious hardware wallets have no cable at all. You use them by holding them up to a scrolling QR code on screen, which works in every browser including on a phone. Plugging a device in is a convenience some browsers offer and others deliberately do not.
| Browser | Plug a device in | Scan a QR code | Files | Everything works? |
|---|---|---|---|---|
| Chrome · Edge (desktop 89+) | Yes | ✓ | ✓ | Complete |
| Opera (desktop 76+) | Yes | ✓ | ✓ | Complete |
| Brave · Arc · Vivaldi | Usually, may need turning on | ✓ | ✓ | Complete |
| Firefox — any version | No, by choice | ✓ | ✓ | Yes, by QR or file |
| Safari — macOS | No, by choice | ✓ | ✓ | Yes, by QR or file |
| Any browser on iOS · iPadOS | No | ✓ | Limited | Yes, by QR |
| Chrome on Android | Some devices | ✓ | ✓ | Partial |