Observation Commitment Protocol (OCP) — Break This
I’ve implemented a minimal version of the Observation Commitment Protocol (OCP) and would like to invite adversarial testing.
Live Implementation
Repository
What the system does
At its core:
File → Hash → Ethereum → Proof → Verify anywhere
More concretely:
- A file is hashed locally → H = hash(observation)
- H is committed on-chain (calldata / event)
- A proof is formed: (observation, H, tx_ref)
- Anyone can verify:
- recompute H
- resolve tx_ref
- check H ∈ R(tx)
The Challenge
Take a valid (file, proof) pair and:
Modify the file in any way — even a single byte — and attempt to produce a proof that still verifies under the same assumptions.
If you can produce:
observation* ≠ observation
Verify(P*, L, hash, R) = 1
then the system is broken.
What would count as a break?
- A modified file that still verifies against the original proof
- A forged proof that passes verification without the original commitment
- Any ambiguity in extraction rule R(tx) that allows false positives
- Any mismatch between on-chain data and verification logic
What this is NOT testing
- Identity / authorship
- Data availability
- Off-chain storage assumptions
This is strictly testing the minimal invariant:
A specific digest is bound to the ledger and cannot be altered without detection.
Why I’m posting this
This pattern (hash → inclusion → verification) appears everywhere in Ethereum, but is rarely isolated and tested as a standalone primitive.
This implementation is an attempt to make that primitive explicit — and falsifiable.
Ask
If you can break it, I want to understand how.
If you think this is trivial or already well-covered, I’d also appreciate pointers to existing abstractions that fully capture this pattern.