live · mainnetoc · pledge
bip-322 · stake-bonded
oc · pledge·bitcoin-anchored commitments

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.

· bip-322 identity· stake-bonded· public ledger· offline-verifiable
pledge.json · { "v": 1, "kind": "pledge" }
{
  "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": "…" }
}
§ how it works

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.

  1. [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.

  2. [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.

  3. [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.

  4. [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.

  5. [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.

§ why it exists

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.

systemauthorshipstakeresolutioncustodypermissionless
Twitter / X promise✓ (handle)platform
Kalshi / Polymarket✓ (custodied)broker
Smart-contract escrow✓ (eth addr)✓ (locked)✓ (oracle)✓ (contract)
Notarised contract~ (legal)courtlawyer
Verbal commitment~
oc pledge✓ (btc)✓ (oc)✓ (pure fn)✗ (none)
[01]

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.

[02]

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.

[03]

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.

§ layered with the family

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.

[01]oc·attest

identity

Bitcoin-address-bound identity with attested stake. Pledge bonds reference an OC Attest — Pledge cannot exist without it.

[02]oc·lock

confidentiality

E2E encryption to a Bitcoin address. Optional — used when a pledge proposition or witnesses must stay private until resolution.

[03]oc·vote

legitimacy

Stake-weighted polls. Used as the dispute mechanism when a pledge outcome is contested by a counterparty.

[04]oc·stamp

provenance

Sign anything; anchor to a block. The canonical resolution path for "I will publish X by time T" pledges.

[05]oc·agent

authority

Scoped delegation. An agent under a pledge:create scope can swear pledges on behalf of a principal.

[06]oc·pledge (here)

commitment

Swear a testable proposition; bond an OC Attest; resolve via a pure function at a future block. Enforcement by exposure, no custody.

§ bond your word

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.