oConsent
Where it stands

Status

oConsent is a research project with working code, not a finished product. This page is the honest inventory. If something here is wrong or out of date, tell us.

Built Partial Not yet
Built and tested
Consent lifecycle

Create, verify, revoke, and list agreements through the Python SDK and CLI.

Data model

A consent agreement carries the subject, the processor, its purposes, a validity window, status, and references to its proof and timestamp. Each purpose has its own retention period.

Signatures

Agreements are signed with the subject's key using standard elliptic-curve signatures.

Timestamping

An independent time is attached from the NIST Randomness Beacon, with a Bitcoin provider as a second source.

On-chain registry

Three Solidity contracts, ConsentRegistry, ConsentVerifier, and ConsentBatchOperations, built on OpenZeppelin, with a test suite.

Off-chain storage

An IPFS storage provider with pinning, retries, and streaming, so bulky metadata stays off-chain.

Command line

Seven CLI commands cover creating, verifying, revoking, listing, exporting agreements, adding purposes, and configuration.

Partial or in progress
Bitcoin anchoring

A Bitcoin timestamp provider exists but expects a local node and has not been hardened for real use.

Documentation

Generated reference docs exist, but the docs subdomain currently redirects to the homepage. It is being rebuilt.

Licensing

The contracts are MIT. A single, project-wide license is still being settled. Help here is welcome.

Not built yet
Production zero-knowledge proofs

The proof step is a hash-based placeholder today. The real zero-knowledge proofs described in the paper are not implemented. The code says so in a comment, and so do we.

Chains beyond Ethereum

Only Ethereum is wired up. The sidechain module is an empty stub.

A hosted dashboard or product

There is no product and no user dashboard. The old site's dashboard was a static mockup with placeholder data.

Browser extension and a formal spec

Both have been mentioned before. Neither has been started.

Want to change what is on this page? The fastest way is to ship code. See how to contribute or read the reference implementation.