Content provenance on a tamper-evident chain

Register, verify, and prove content existed at a point in time. Sub-millisecond. Privacy-preserving. Independently verifiable.

$ pip install etch
leaf 0
a3f1...c8d2
root 7e02...
leaf 1
b7d4...91fa
root d41c...
leaf 2
f092...3b7e
root 5a8f...
leaf 3
c4e8...d5a1
root 91b3...
leaf n
...
root ...

Three steps to provable content

No blockchain. No gas fees. No file modification. Just cryptographic proof.

1

Register

Submit content or its SHA-256 hash. Your content is never stored — only the hash is recorded on the Merkle chain. You get a cryptographic proof receipt back instantly.

2

Verify

Prove content hasn't changed since registration. The chain recomputes the hash and validates integrity mathematically — if any prior entry was tampered with, verification fails.

3

Prove

Inclusion proofs are self-contained and can be verified offline. No server trust required. Anyone with the proof can independently confirm authenticity.

Built for speed, privacy, and trust

Everything you need to establish content provenance. Nothing you don't.

<1ms

Sub-millisecond

Registration completes in under a millisecond. No block times, no confirmation delays, no queue.

#

Privacy-preserving

Content is never stored or transmitted. Only SHA-256 hashes touch the chain. Pre-hash locally for full privacy.

Tamper-evident

Each entry commits to all previous entries via Merkle Mountain Range. Alter one record and every subsequent hash breaks.

Offline verification

Inclusion proofs are cryptographically self-contained. Verify anywhere, anytime, without server access.

{}

Simple API

Six endpoints. One HTTP call to register. Python SDK with async support. Integrate in minutes.

>_

Open source

Rising Sun License. Free for personal use, education, and research. Commercial terms are simple and transparent.

How Etch compares

Purpose-built for content provenance. No compromise.

Feature Etch C2PA On-chain attestation
Sub-millisecond registration N/A
Content never stored Varies
Offline verification
No gas fees N/A
Tamper-evident chain
No file modification required

Up and running in seconds

Register your first proof with a single HTTP call or the Python SDK.

curl — register content
curl -X POST https://etch.locker/v1/proof \
  -H "Content-Type: application/json" \
  -d '{"content": "My original article",
       "label": "Blog: Launch Day"}'

# Response
{
  "proof_id": 0,
  "content_hash": "a3f1...",
  "timestamp": 1710000000.0,
  "mmr_root": "7e02...",
  "chain_depth": 1
}
python sdk
from etch import EtchClient

async with EtchClient("https://etch.locker") as client:
    # Register content
    receipt = await client.register("My original article")
    print(receipt.proof_id)  # 0

    # Verify it later
    result = await client.verify(
        receipt.proof_id,
        "My original article"
    )
    assert result.verified  # True
privacy mode — hash locally
# Content never leaves your machine
HASH=$(echo -n "secret document" | sha256sum | cut -d' ' -f1)

curl -X POST https://etch.locker/v1/proof \
  -H "Content-Type: application/json" \
  -d "{\"content_hash\": \"$HASH\"}"
python — as a library
from etch import AuditChain, verify_inclusion_proof

chain = AuditChain()
entry = chain.append(
    "content_proof",
    {"content_hash": "a3f1..."}
)

proof = chain.generate_proof(entry.leaf_index)
assert verify_inclusion_proof(proof)  # offline!

Full API surface

Clean REST API. JSON in, JSON out. Full OpenAPI docs at /docs.

MethodEndpointDescription
CONTENT PROOFS
POST /v1/proof Register content and get a proof receipt
POST /v1/proof/batch Register up to 1,000 items in a single call
GET /v1/proof/{id} Retrieve a proof receipt by ID
GET /v1/proof/hash/{hash} Look up a proof by SHA-256 content hash
GET /v1/proof/recent List recent proofs, newest first
GET /v1/proof/stats Chain statistics and current MMR root
POST /v1/proof/{id}/verify Verify content integrity and chain validity
C2PA COMPATIBILITY
POST /v1/c2pa/manifest Register a C2PA manifest on the Etch chain
GET /v1/c2pa/manifest/{id} Retrieve manifest with inclusion proof
POST /v1/c2pa/verify Verify manifest integrity against the chain
POST /v1/c2pa/bridge Bridge an existing Etch proof to C2PA format

Who uses content provenance?

Anyone who needs to prove what existed, when.

Journalism

Prove article authenticity and exact publication time. Combat misinformation with cryptographic evidence.

Legal

Timestamp contracts, evidence, and communications. Tamper-evident records that hold up to scrutiny.

AI Training Data

Prove data provenance for EU AI Act compliance. Document training data origins before they're questioned.

Creative Work

Establish creation timestamps for intellectual property. Prove you made it first, without exposing the work.

Simple, transparent terms

Rising Sun License. Use it freely. Build on it commercially.

Personal
Free
No strings attached
  • Use, study, modify, share
  • Personal projects
  • Education and research
  • Full API access
  • Community support
Enterprise
Custom
Dedicated support and deployment
  • Everything in Builder
  • Private deployment options
  • Custom Nous configuration
  • SLA and priority support
  • Contact us