Skip to content

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.

  1. 01
    OC 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
  2. 02
    OC 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
  3. 03
    OC 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
  4. 04
    OC Stampprovenance

    Prove who signed a file, and that it existed by a given Bitcoin block.

    kind 30083stamp.ochk.io
  5. 05
    OC Agentauthority

    Give software a limited, signed permission to act for you, and let anyone check every action against it.

    kind 30083–30086agent.ochk.io
  6. 06
    OC 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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, orangecheck on 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.