pledge your word to bitcoin.
bond your stake.
anyone verifies the outcome.
OC Pledge is a BIP-322 commitment primitive. Swear a testable proposition (resolved at a future block height, wall-clock time, or named oracle), bond an OrangeCheck stake, publish on Nostr. Anyone verifies offline. A broken pledge is recorded permanently against your address — enforcement by exposure, never by slashing. No custody, no court, no seized sats.
{
"v": 1,
"kind": "pledge",
"id": "9f3e7b…1aa2",
"pledger": { "address": "bc1qalice…", "alg": "bip322" },
"claim": {
"text": "I will publish the v1 SPEC by 2026-06-01.",
"resolves": "block_height >= 902400"
},
"stake": {
"attestation_id": "9e3f…",
"sats_bonded": 250000
},
"witnesses": [ "bc1qbob…", "bc1qcarol…" ],
"publication": { "nostr_kind": 30078, "d_tag": "oc-pledge:<id>" },
"pledged_at": "2026-04-24T18:30:00Z",
"resolves_at": { "block_height": 902400 },
"sig": { "alg": "bip322", "value": "…" }
}five steps. one signing ceremony. no custody.
OC Pledge composes three primitives that already exist: BIP-322 for authorship, OrangeCheck for the bonded stake, and Nostr for the public ledger. The protocol glue is small; the resolution rule is a pure function anyone can run.
- [01]
compose
Write the proposition. Pick a resolution mechanism — chain_state, stamp_published, http_get_hash, dns_record, nostr_event_exists, counterparty_signs, or vote_resolves — and a deadline (block height or wall-clock time). The canonical envelope is a deterministic plaintext object commit-bound by your BIP-322 signature.
- [02]
bond stake
Reference an OrangeCheck attestation. The bond is a commitment, not custody — sats stay in your wallet, never seized. A broken pledge attaches a permanent breach record to your address; verifiers see it forever. Slashing is explicitly refused.
- [03]
sign once
Your wallet signs the canonical envelope via BIP-322. UniSat, Xverse, Leather, Sparrow, Electrum. The id is sha256 of the canonical bytes — content-addressed, deterministic.
- [04]
publish on nostr
The pledge is broadcast to relays as a kind-30078 event with d-tag `oc-pledge:<id>` (NIP-78 family transport). Witnesses (named in the envelope) co-sign. The pledge is now a public, immutable commitment — anyone reading it knows the stake and the resolution rule.
- [05]
resolve
At the deadline, anyone runs the pure-function check against public state: did the predicate hold? KEPT, BROKEN, EXPIRED_UNRESOLVED, or DISPUTED is a deterministic classification. A signed outcome envelope is published; on BROKEN, that record attaches permanently to the swearer’s address — no slashing, no seized sats, just a public ledger entry every future verifier reads.
the web has no durable,
permissionless, custody-free
commitment primitive.
Existing options either require a custodian (a broker, a court, a smart contract, a platform) or have no skin in the game (a tweet, a verbal promise). OC Pledge binds the pledger's Bitcoin identity to a testable claim, with stake measured in real sats — and no custodian.
| system | authorship | stake | resolution | custody | permissionless |
|---|---|---|---|---|---|
| Twitter / X promise | ✓ (handle) | ✗ | ✗ | platform | ✗ |
| Kalshi / Polymarket | ✗ | ✓ (custodied) | ✓ | broker | ✗ |
| Smart-contract escrow | ✓ (eth addr) | ✓ (locked) | ✓ (oracle) | ✓ (contract) | ✓ |
| Notarised contract | ✓ | ~ (legal) | court | lawyer | ✗ |
| Verbal commitment | ~ | ✗ | ✗ | ✗ | ✓ |
| oc pledge | ✓ (btc) | ✓ (oc) | ✓ (pure fn) | ✗ (none) | ✓ |
research preregistration
> claim:
I commit to the analysis plan in this document; I will publish results before block 902400 regardless of sign of the effect.A scientist locks the analysis plan, bonds 250k sats, names two witnesses. Selective reporting becomes visible: the published paper either matches the pledged plan or a permanent broken-pledge record attaches to the scientist’s address. The sats stay in the wallet — the cost is reputational, not financial.
SLA commitment
> claim:
My API will maintain p99 latency < 200ms over the next 4032 blocks.A vendor pledges service quality. Anyone running the resolution rule (sampling the API at the resolution height) can prove a violation. The bonded stake replaces vague service credits.
open-source delivery
> claim:
I will tag v1.0 of repo X by block 905000.A maintainer publishes a delivery pledge with bonded stake. Sponsors and downstream users have a credible signal — broken pledges are visible on the public ledger.
See WHY.md for the full hypothesis-by-hypothesis design rationale.
one spec. SDKs in flight.
OC Pledge stands on OC Attest (the bonded stake) and integrates with OC Stamp (the canonical resolution mechanism for content-publication pledges) and OC Vote (an optional dispute mechanism for contested outcomes). MIT-licensed and vendor-free — re-implement the SPEC in any language; the test vectors are the ground truth.
- oc-pledge-protocol ↗normative spec, test vectors, WHY.md
- @orangecheck/pledge-core ↗canonical envelope + state machine — extracted from this site, packaging in flight
- @orangecheck/pledge-cli ↗shell — make / attest / dispute / resolve — packaging in flight
- fleet.ochk.io / reputation ↗reference managed implementation — compose, persist, dashboard, audit-bundle export
identity
Bitcoin-address-bound identity with attested stake. Pledge bonds reference an OC Attest — Pledge cannot exist without it.
confidentiality
E2E encryption to a Bitcoin address. Optional — used when a pledge proposition or witnesses must stay private until resolution.
legitimacy
Stake-weighted polls. Used as the dispute mechanism when a pledge outcome is contested by a counterparty.
provenance
Sign anything; anchor to a block. The canonical resolution path for "I will publish X by time T" pledges.
authority
Scoped delegation. An agent under a pledge:create scope can swear pledges on behalf of a principal.
commitment
Swear a testable proposition; bond an OC Attest; resolve via a pure function at a future block. Enforcement by exposure, no custody.
pledge your word to bitcoin.
bond your stake.
anyone verifies the outcome.
Open the create flow, connect a Bitcoin wallet, write your claim, bond your OrangeCheck stake. One BIP-322 signature, one Nostr publish. The pledge is public; the resolution is a pure function anyone can run.
with thanks to bram kanstein — the lineage signal of every orangecheck primitive.