envelope oc-me-a9876543
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.
session opened at Fold
fold.example · Sun, 19 Apr 2026 03:33:23 GMT
- 01 · fetch canonical envelopeidle
- 02 · compute sha-256 of canonicalized jsonidle
- 03 · fetch OC public JWK from ochk.io/.well-known/jwks.jsonidle
- 04 · verify Ed25519 signatureidle
> 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.
{
"v": 1,
"kind": "oc-me-event",
"id": "oc-me-a9876543",
"class": "C",
"subtype": "session_creation",
"identity": "bc1q3rd2n9c8e5h7w4xkpvluvkz4qzeurgmvy3le3lr",
"site": "fold.example",
"gross_fee_sats": 60,
"platform_fee_sats": 12,
"user_earned_sats": 39,
"occurred_at": "2026-04-19T03:33:23.850Z",
"context": {
"kind": "C",
"subtype": "session_creation",
"session_duration_seconds": 604800,
"session_policy_label": "7-day session"
}
}# verify this envelope yourself, offline.
# 1. fetch the canonicalized envelope
curl -s https://me.ochk.io/api/envelope/oc-me-a9876543 > 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:cea9876543000000...0000');
// verification details in /docs/verify
"
# 5. walk the OTS proof to a bitcoin block
ots verify envelope.ots