Protocols
Six open protocols. One way of working.
Sign with a Bitcoin address, and let anyone check. Each protocol does one job. Each has a public spec, free tools at its own site, and packages you can build with. None needs the others, and any two can work together.
- 01OC Attestidentity
Prove you hold bitcoin, without spending it or showing an ID, so an app can tell you from a bot.
kind 30078attest.ochk.io - 02OC Lockconfidentiality
Seal a message or file to a Bitcoin address, so only the person who holds that address can open it.
kind 30078lock.ochk.io - 03OC Votelegitimacy
Run a poll where each ballot is signed by a Bitcoin address, weighed by the coins it holds, and counted by anyone.
kind 30080–30082vote.ochk.io - 04OC Stampprovenance
Prove who signed a file, and that it existed by a given Bitcoin block.
kind 30083stamp.ochk.io - 05OC Agentauthority
Give software a limited, signed permission to act for you, and let anyone check every action against it.
kind 30083–30086agent.ochk.io - 06OC Pledgecommitment
Make a public promise that anyone can check, with your own bitcoin behind it.
kind 30078pledge.ochk.io
One shape, six times
Learn one, and you know the pattern of the rest.
- 01
Sign a short message
Your Bitcoin wallet signs a short, plain-text message, or the id that fixes it (BIP-322). You can read every line before you sign. Signing sends nothing and moves nothing. - 02
The result names itself
Its id is the SHA-256 of its exact bytes. Change one field and you get a different id, and the signature no longer matches. - 03
Share it any way you like
A file, a link, a QR code, or Nostr relays so others can find it. Publishing is optional. - 04
Anyone checks it, without us
With the artifact, public Bitcoin data and a BIP-322 verifier, any machine reaches the same answer. Our sites run the same checks as a convenience. They are never the authority.
How they work together
Independent, and built to combine.
Each link below is in the specs today.
- A pledge is backed by an attestation.
- Every OC Pledge points to an OC Attest proof, and verifiers re-check that the coins are still unspent.
- A pledge can be settled by another protocol.
- “I will publish X by block N” can be settled by an OC Stamp. A pledge can also be settled, or a dispute decided, by an OC Vote poll named in advance.
- A stamp can carry a stake.
- An OC Stamp may include the id of the signer’s OC Attest proof, as a signal of what stood behind the signature.
- Secret ballots use OC Lock.
- In a secret OC Vote poll, each choice is sealed until the creator reveals the key after the deadline.
- Agents act in every protocol.
- OC Agent has scopes for sealing with OC Lock, signing with OC Stamp, voting in OC Vote and making an OC Pledge. Every agent action is itself a valid OC Stamp, and a private scope list is sealed with OC Lock.
- Chat is a mode of OC Lock.
- OC Chat (opens in a new tab) runs on OC Lock envelopes. It is not a seventh protocol.
The eight rules
Every protocol, package and site has to pass these.
- Bitcoin does real work.
- Each protocol relies on something only Bitcoin gives: a signature from a real address, coins left unspent and for how long, or a block as a clock nobody can wind back. If a plain keypair with no Bitcoin would do the same job, it does not belong here.
- No custody.
- The protocols never hold your coins or your keys, and no funds pass through them. There is one exception, and it is named: ochk.app (opens in a new tab). While it is in testing, orangecheck holds what you earn there. Independent federations, then your own keys, replace it. See ochk.app/custody (opens in a new tab).
- No account, no ID.
- The protocol tools need no account. Your Bitcoin address is the identity, and signing a message proves it. Email and Google sign-in exist on our sites as an easy start, never as the identity itself.
- Every artifact names itself.
- Its id is the SHA-256 of its exact bytes, and the signature covers that id.
- Checkable without us.
- Anyone with the artifact, a Bitcoin node and a BIP-322 verifier can check it and compute the result: who signed, what it opens, how the vote came out, when it existed, whether the pledge was kept.
- The API comes first.
- Everything a site does can be done from code or from
curl. The website is a convenience over it. - Small on purpose.
- A few canonical modes, with a registry for extensions. Two implementations that disagree are worse than a missing feature.
- Trust is named.
- When something must be trusted, such as a relay, a calendar server, a beacon or a counterparty, the spec names it in plain text.
Six, on purpose
There is no seventh.
Identity, confidentiality, legitimacy, provenance, authority, commitment. A new need is almost always a mode of one of these or two of them combined, as OC Chat is a mode of OC Lock.
Status
Open now. Not yet launched.
- Specs: public and stable. OC Attest 1.0, OC Lock 2.0, OC Vote v0, OC Stamp 1.0, OC Agent 1 (latest revision 1.4.0), OC Pledge 1.0.
- Tools: the six sites work today, are free and need no account. Where a tool reads the chain, it reads Bitcoin mainnet.
- Custody: no protocol holds coins or keys.
- orangecheck as a whole has not launched publicly yet. The protocols are open now. Expect the tools to change.
- The account product, ochk.app, runs on these protocols and has its own status: signing in and backing an account work today, and getting paid is in testing. See Apps.
For implementers
Everything is public.
- Specs: every spec is public at github.com/orangecheck (opens in a new tab), in a repo named
oc-<protocol>-protocol. All six are MIT. - Test vectors: each spec ships machine-checkable test vectors, and the reference packages test against them.
- Packages: the reference implementations are
@orangecheck/*on npm, under MIT. OC Attest and OC Pledge also have a Python package,orangecheckon PyPI. - Nostr kinds: OC Attest 30078, OC Vote 30080–30082, OC Stamp 30083, OC Agent 30083–30086, OC Pledge 30078. OC Lock publishes device records on 30078.
- Docs: ochk.io/docs, starting with which protocol do I need.
What this is not
The lines we do not cross.
- Not a token.
- There is none, and there will not be one.
- Not proof of personhood.
- One person can hold many addresses. The protocols make fakes cost money. They do not make them impossible.
- Not slashing.
- Nothing can seize coins that back an attestation, a vote or a pledge. Consequences come from the public record.
- Not a score.
- The protocols publish raw facts, such as sats, days, kept and broken. Each app decides what is enough.
- Not a smart-contract platform.
- No virtual machine, no gas, no writes to the chain. Signed messages, plus reads of Bitcoin and Nostr.