WeTrust

Documentation

WeTrust helps you prove the existence and integrity of content (image, video, audio, document) at a given moment, thanks to a local signature and blockchain anchoring.

What we prove ✅ / What we don’t ❌

  • We prove the integrity of the file (any modified byte changes the hash).
  • We prove existence at a given date (timestamp + immutable anchoring).
  • We prove that the proof was issued by a private key (JWS signature).

  • We do not prove the human identity of the author (except future opt-in identity).
  • We do not prove that the depicted scene is ‘true’ (e.g., a photo of an AI screen).
  • We do not prove the absence of manipulation before capture.

Proof diagram (simplified)

File → Hash (SHA-256) → JWS (local Ed25519 signature)
                ↓
         (batch Merkle Tree)
                ↓
     Anchoring (root) on blockchain (Solana)
                ↓
Verification: file hash + proof = AUTHENTIC/NOT_FOUND

Known limitations

  • Depends on trust in the device/software at the capture point.
  • A photo of an AI screen can be authenticated as a real photo (context matters).
  • Anchoring latency: a few seconds (batch + network).
  • Blockchain costs are low but not zero on mainnet (a few cents per batch).

Security

  • Private key generated locally, never sent (client-side signature).
  • Anti-replay nonce included in the JWS.
  • Merkle batch: confidentiality (only the public root is exposed).
  • Universal verification: any third party can verify without trusting WeTrust.

FAQ

What if I modify the image after registration?
The hash changes → verification returns NOT_FOUND.

What if I lose the file but keep the receipt?
The receipt alone proves nothing without the original file.

How much does it cost?
Cents per batch.