Overview
OrangeCheck is a family of Bitcoin-stake primitives for the open web. These docs cover the whole family — shared plumbing up top, then one dedicated section per protocol. Everything links back to the same canonical message format, same BIP-322 signing primitive, same Nostr kind-30078 conventions. Learn the shared layer once; each protocol adds a small sibling-specific layer on top.
The family
| Protocol | What it does | Status |
|---|---|---|
| OC Attest | Sybil resistance via proof of Bitcoin stake. Sign one message; any verifier can check that you've held N sats for N days. | live |
| OC Lock | End-to-end encryption addressed to a Bitcoin address. Sealed envelopes that only the key-holder of a specific address can unseal. | live |
| OC Stamp | Bitcoin-block-anchored signed statements. BIP-322 + OpenTimestamps. Immutable authorship + priority. | preview |
| OC Vote | Stake-weighted sybil-resistant polls. Three canonical weight modes. Deterministic, cross-impl-testable tally. | live |
| OC Agent | Agent-authorization records bound to a signer's Bitcoin address. | design |
OC Attest is the base layer — every other sibling can optionally reference an Attest proof as a "stake at signing" signal. The other four siblings are peers: none depends on the others at the protocol level.
How these docs are organized
- Getting started — land here first. Decision tree across the five protocols, plus a running integration in under five minutes.
- Ecosystem — the plumbing every protocol inherits. The canonical message format, BIP-322 signing, Nostr kind-30078, conformance vectors, and the shared security model. Written once; never duplicated.
- Per-protocol sections — one each for Attest, Lock, Stamp, Vote, Agent. Each follows the same shape: overview → how it works → concepts → API → guides. Pattern-match once; navigate them all.
- SDKs — every published
@orangecheck/*package, mapped to which protocol it serves. - Reference — FAQ and glossary.
Where the authoritative bits live
| Repo | |
|---|---|
| Canonical protocol spec | oc-protocol (CC-BY-4.0) |
| Reference implementations | oc-packages (MIT) — one monorepo for every published package |
| OC Lock spec | oc-lock-protocol |
| OC Stamp spec | oc-stamp-protocol |
| OC Vote spec | oc-vote-protocol |
| This site | oc-docs |
Conventions
- Short code snippets are runnable as-is. Longer ones link to a full working
example in
oc-packages/EXAMPLES.md. - "Attestation" (lowercase) refers specifically to an OC Attest signed proof. Lock envelopes, Stamp envelopes, Vote ballots, etc. are not called attestations.
- Every protocol ships a spec repo and a reference impl. If the two disagree, the spec is authoritative and the impl is the bug.
Start somewhere
- Which protocol do I need? — 60-second decision tree
- Quickstart — ship an integration in 5 minutes
- Ecosystem concepts — learn the shared layer once
- OC Attest overview — the base-layer protocol