live · mainnetme · ochk · io
federation-custodied · self-custody-ready
§ verify

envelope oc-me-6543210f

a public, content-addressed record of one billable event on me.ochk.io. signed by the integrating site, co-signed by OC, anchored to a bitcoin block via OpenTimestamps, republished to four nostr relays. this page is the rendered version; the envelope itself is below.

class B · action-bound

payment authorized at Breez

breez.example · Wed, 29 Apr 2026 23:23:01 GMT

site paid
2,050sats
$1.95
oc platform fee
410sats
$0.39
user earned
+1,538sats
$1.46
§ live verifier · oc-me-6543210f
  • 01 · fetch canonical envelope
    idle
  • 02 · compute sha-256 of canonicalized json
    idle
  • 03 · fetch OC public JWK from ochk.io/.well-known/jwks.json
    idle
  • 04 · verify Ed25519 signature
    idle

> every byte you see here is on your machine. the JWK is fetched live from ochk.io/.well-known/jwks.json, the hash is computed by @noble/hashes in your browser, and the Ed25519 signature is verified by @noble/curves — no OC server is in the verification path.

> v1 demo envelopes carry placeholder signatures because the federation signing service is still being ratified. step 04 will report signature does not match on these — that's expected. once production envelopes land, the same verification trace runs against real Ed25519 sigs and reports signature valid with no code change.

§ envelope · raw json
{
  "v": 1,
  "kind": "oc-me-event",
  "id": "oc-me-6543210f",
  "class": "B",
  "subtype": "payment_authorization",
  "identity": "bc1q3rd2n9c8e5h7w4xkpvluvkz4qzeurgmvy3le3lr",
  "site": "breez.example",
  "gross_fee_sats": 2050,
  "platform_fee_sats": 410,
  "user_earned_sats": 1538,
  "occurred_at": "2026-04-29T23:23:01.331Z",
  "context": {
    "kind": "B",
    "subtype": "payment_authorization",
    "payment_amount_sats": 410000,
    "payment_currency": "sat"
  }
}
§ verify this yourself
# verify this envelope yourself, offline.

# 1. fetch the canonicalized envelope
curl -s https://me.ochk.io/api/envelope/oc-me-6543210f > envelope.json

# 2. fetch oc's published Ed25519 public JWK
curl -s https://ochk.io/.well-known/jwks.json > jwks.json

# 3. re-derive the content hash
openssl dgst -sha256 -binary < envelope.json | base64

# 4. verify the signature
# (using @noble/curves or any ed25519 lib)
node -e "
  const { ed25519 } = require('@noble/curves/ed25519');
  const env = JSON.parse(require('fs').readFileSync('envelope.json'));
  const jwk = JSON.parse(require('fs').readFileSync('jwks.json')).keys[0];
  console.log('sig: ed25519:yZcu29ib:ce6543210f000000...0000');
  // verification details in /docs/verify
"

# 5. walk the OTS proof to a bitcoin block
ots verify envelope.ots

where this envelope came from

Every event on /me/earn has a verify link that points here. The full taxonomy of event classes is on /earn. The cryptographic primitives (Ed25519, OpenTimestamps, Nostr) are documented on /security.