ochk.io sub-protocol · v0 beta

sovereign signaling
for the open web.

Stake-weighted, sybil-resistant, offline-tallyable polls on Bitcoin. Voters sign with BIP-322. Weights come from UTXOs at a snapshot block. The tally is a pure function anyone can run. No token. No authority. No custody.

built on bitcoin · no account · no kyc · no custody

how it works

three objects. one pure function.

step 1

a poll

A creator writes a question, options, deadline, snapshot block, and threshold. They sign the canonical poll with BIP-322 and publish to Nostr. The id is SHA-256 of the canonical bytes — content-addressed, tamper-evident.

step 2

a ballot

Any voter with a Bitcoin address picks an option and signs the canonical ballot with BIP-322. Replaceable per voter, so they can change their mind until deadline. Published to Nostr kind 30081.

step 3

a tally

At deadline, any observer fetches the poll + ballots, verifies signatures, de-duplicates per voter, and looks up each voter's UTXO set at the snapshot block. Weight is sats, sats × days, or one-per-address. Anyone gets the same answer.

why this

every other open-web poll is sybil-vulnerable, token-gated, or needs a tallier.

sybil-resistant without KYC

The weight is sats × days of UTXO age. Manufacturing a voter costs real opportunity cost. A whale-splitting attack doesn't inflate weight in the canonical modes.

no token, no gas, no chain ops

No token to mint or distribute. No transaction to create a poll or cast a ballot. Just a signature. Zero sats move. Ever.

offline-verifiable tally

The tally function is pure. Two observers with the same poll, ballots, and UTXO snapshot produce byte-identical results. Disputes are resolvable by running curl.

create the first poll your community runs on real commitment.

One signature from your wallet. No signup. Share a link. Anyone can verify the result.