Convene the council
Name the vault, seat 1–5 cosigners by their public keys
(x-only 64-hex, or compressed 66-hex — normalized in-browser), and set the
threshold m. The desk forges one CHECKSIGADD tapscript leaf
(0 <K1> CHECKSIGADD … <Kn> CHECKSIGADD <m> EQUAL) sealed under a
NUMS internal key — nobody knows its discrete log, so there is no keypath
backdoor: coins move only through the quorum script. No secrets are collected here; keys
stay with their owners.
Cosigner public keys slot order = script order. Distinct keys only.
The seal is set
- Vault address
- Descriptor fingerprint
- Script
- Control block
single leaf · 33 bytes · no path
Fill the treasury
Send PRL to the vault address. The desk reads the balance and UTXOs live from Blockbook (GET-only), or you can paste a UTXO list air-gapped. Use the recompute check to prove the address matches the descriptor before anyone funds it.
- Confirmed balance
- UTXOs
| Txid | Vout | Value (PRL) | Confs |
|---|
Air-gapped UTXO list
Draft the motion
Choose the vault's UTXOs to spend, name the recipients, and set a fee rate. The desk
builds an unsigned bundle (pearl-quorum-unsigned:v1:) carrying a
64-bit fingerprint and the per-input BIP-341 script-path sighash (SIGHASH_DEFAULT). Change returns
to the vault; dust change is absorbed into the fee and disclosed. Nothing is signed here.
Recipients
The motion on the table
- Bundle fingerprint
- Inputs
- To recipients
- Change → vault
- Fee
- Size
- Threshold
Per-input sighashes BIP-341 script-path · SIGHASH_DEFAULT
Gather the seals
Each cosigner signs the same per-input sighash with their own key — no MuSig ceremony, no key aggregation (this is script-path multisig, so the witness is larger; see Honest limits). Sign locally below, or import signature bundles from cosigners on other machines. Every imported signature is re-verified before it counts.
Sign locally
Collect cosigner signatures
Quorum reached — the motion carries
- Txid
- Signers
- Fee
- Signatures re-verified
Carry the motion
Broadcast waits behind a double-confirm gate. The desk posts the
signed hex to Blockbook /api/sendtx and then tracks confirmations.
- Status
- Txid
- Confirmations
The council records
Vaults and carried motions are recorded locally in this browser. Nothing leaves the machine. Export as CSV for your own books.
Vaults
Spends
Honest limits
- Script-path multisig, not MuSig. Every signer produces their own Schnorr signature over the same sighash, and the witness carries all m signatures plus the full script. A quorum spend is therefore larger and costlier than a MuSig keypath spend of the same threshold. What you gain: no interactive key-setup ceremony, and every signature is independently verifiable against its cosigner's key.
- Cosigners must be real, distinct parties holding their own keys. The desk refuses duplicate keys, but it cannot tell whether two "cosigners" are the same person with two keypairs. A 2-of-3 where one person holds two keys is a 1-of-1 wearing a costume.
- Verify the vault address independently. Before funding, recompute the address from the descriptor on a second machine (or with the recompute button) and confirm every cosigner sees the same address. A wrong address means the money is gone.
- Designated-cosigner internal keys are a backdoor. NUMS is the default and has no keypath spend. If you choose a cosigner's key as the internal key, that cosigner can spend unilaterally — the desk stamps the warning on the descriptor and every screen.
- Keys. Pasted private keys live in memory only and are wiped after signing. Prefer signing on an offline machine and importing the signature bundle.
- Fees move. The fee rate is an estimate at planning time; a broadcast tx can linger if the mempool is hot. No real broadcast is performed by any test.