Verify custody
Every BRUNE Rune sits at its own 2-of-2 Bitcoin address: BRUNE and an independent co-signer must both sign. Check any Rune yourself, in your browser.
Verify every RuneWhat the verify page checks
Open Verify custody and pick a Rune, or press Verify custody under the bridge on any Rune's page. Your browser checks four things itself:
- A real 2-of-2 address. It rebuilds the Rune's Bitcoin custody address from two public keys, the co-signer's and BRUNE's, and shows it is exactly the custody address. The address has no other key.
- The co-signer holds it. The co-signer on the Internet Computer is asked directly, by your browser: it gives the same address, the same keys and the same backup delay.
- The Runes are there. Every custody output is read on Bitcoin: unspent and at that address (mempool.space), with exactly that Rune and amount (ordinals.com).
- Backed 1:1. Rune in custody ≥ tokens on BNB Chain + tokens on their way to Bitcoin + tokens burned.
How 2-of-2 custody works
Each Rune has its own Taproot custody address (bc1p…) with exactly two ways to spend:
| Way | Who signs | When |
|---|---|---|
| Normal | The co-signer and BRUNE | Every payout |
| Backup | BRUNE alone | Only after the Runes have not moved for 52,560 Bitcoin blocks (about 12 months) |
- The address's internal key is a point nobody can sign with (a "NUMS" key,
50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0), so there is no third way. - The backup exists so the Runes can never be stuck if the Internet Computer ever stops. It can only be used on Runes that sat still for a year, in plain sight on Bitcoin.
- New Runes are etched straight into their 2-of-2 address, and bridge deposit addresses use the same 2-of-2 scheme.
What the co-signer checks
The co-signer is a program (a canister) on the Internet Computer, on its fiduciary subnet. Its signing key is held by the Internet Computer network itself, split across its nodes: no person has it, BRUNE included. Before it signs, it reads the BRUNE bridge contract on BNB Chain itself, at a finalized block, through at least three independent RPC providers that must agree, and checks that the contract's code is exactly the published one. Then it checks that the payout:
- pays a finalized, pending Bridge-to-Bitcoin request,
- to the requester's own Bitcoin address, the exact amount, of this Rune only,
- sends the change back to the Rune's own 2-of-2 address,
- and never pays one request twice (nor one it has agreed to refund).
It refuses anything else, so a hacked BRUNE server or a stolen BRUNE key cannot send the Runes anywhere else. It also caps how much it signs per day. Its rules can only change through an upgrade of its code, and every upgrade is public for 48 hours before it can run (see Good to know).
Check it without BRUNE
| What | Where |
|---|---|
| The co-signer, its code hash and who controls it | Internet Computer dashboard: Published at deployment |
| Its only controller, the 48-hour timelock (no controller of its own) | Internet Computer dashboard: Published at deployment |
| The same code, rebuilt by you | The co-signer's reproducible build prints the module hashes the dashboard shows |
| A Rune's custody address, from the co-signer itself (<CA> = its BNB Chain token address) | dfx canister --network ic call --query <co-signer> address '(variant { Custody = record { token = "<CA>" } })' |
| The Runes at an address | ordinals.com or mempool.space |
| The tokens on BNB Chain | BscScan: the token's supply and the bridge contract's balance |
Good to know
- Who can upgrade the co-signer. Only its timelock. An upgrade is first published (the new code's hash and settings) and can run only 48 hours later, so every change is visible two days ahead. The timelock itself has no controller: nobody, BRUNE included, can skip the 48 hours or change that rule. BRUNE can still pause the co-signer (it then signs nothing) and propose or cancel upgrades.
- Deposits. Runes bridged to BNB Chain land at the holder's own 2-of-2 deposit address for that coin. The verify page lists every output and where it came from.
- Pausing. BRUNE can stop the co-signer from signing anything at any moment. Pausing never moves a Rune.