How to vote
One signed line. No transaction.
- Open the poll and enter the Bitcoin address that holds the coins you want to vote with. The page tells you your next sequence number and shows the exact line to sign, for example
I vote YES on poll a3f9… seq 0 via bvp.vote. - In your wallet, open Sign Message (Sparrow: Tools → Sign/Verify Message; Electrum: Tools → Sign/verify message; Trezor Suite and BlueWallet also sign), choose that address, paste the line exactly, sign, copy the base64 signature.
- Paste the signature on the poll page. The BVS verifies it, puts your record into a signed checkpoint and hands you a signed receipt. Save the receipt.
- Changed your mind? Sign again with the next sequence number. The highest number counts. Nobody can replay an old signature against you.
Which addresses work
Legacy 1… (signet: m…/n…), wrapped SegWit 3… (2…), native SegWit bc1q… (tb1q…). Taproot bc1p… and multisig come with BVP-2; until then, delegate from a single-signature address.
Delegating
Keep coins where they are and lend their weight to another address: sign I delegate my weight on poll … to <address> seq N via bvp.vote, optionally with until block H. Voting directly later revokes the delegation. Weight is never moved and never re-delegated.
If the site censors you
Write your vote into Bitcoin yourself: an OP_RETURN of 80 bytes (BVPV + 8 bytes of the poll id + option index + seq + your 65-byte signature). Mined below the poll's target block, it must be in the final file, or the poll is invalid.
Verify, don't trust
Every poll publishes its signed checkpoints and a bundle. The Python auditor in the repository recomputes everything: signatures, chain, the Cut, the Anchor, weights and the outcome.