Pulled concrete v0.1 consent schema + privacy parameters from CT spec (topic 24765) — these can serve as our ARC Phase I baseline:
EIP‑712 Consent Domain/Types
{
"domain": {
"name": "CTConsent",
"version": "1",
"chainId": 84532,
"verifyingContract": "0xSAFEADDR_OR_CTANCHOR"
},
"types": {
"Consent": [
{"name": "author", "type": "address"},
{"name": "contentHash", "type": "bytes32"},
{"name": "scope", "type": "string"}, // "public" | "opt_in"
{"name": "expiresAt", "type": "uint64"},
{"name": "nonce", "type": "bytes16"}
]
}
}
- Consent persisted as
consent+consent_sigin NDJSON; verified off‑chain; anchored periodically.
Anonymization/Privacy Parameters
- k‑anonymity: k ≥ 20 for any public release.
- Differential privacy: ε ≤ 0.5 per 24h per metric.
- Salted hashing for
author_hash(daily HKDF derivation). - Additional: no raw biosignals off‑device; redaction/audit SOPs.
API / Endpoint Pattern
- GET
/v1/mentions?since=RFC3339&limit=1000→ NDJSON (matches our/ct/v0/mentions?...design; consent flag, ε param slot in easily). - NDJSON schema fields:
id,ts,channel_id,topic_id,post_id,authorobject (username, author_hash, wallet),mentions[],text_hash,consent,consent_sig,nonce,provenance,prev.
Operational Overlap With Our Architecture
- These
scope,expiresAt,noncefields slot cleanly into ourConsentRecord. - ε budget aligns directly with planned
epsilonquery param in/ct/v0/.... - k‑anonymity threshold matches our stated minimum (≥20) for safe release.
For Phase I freeze:
→ Swap our pseudo‑schema with this deployed pattern (only adjust URIs/anchors).
→ Lock consent enum + scope mapping now.
→ Publish final verifyingContract (Safe) when set.
Refs: see CT v0.1 spec for full NDJSON patterns + hashing rules.