For web3 teams and communities

Don't trust us.Run the verifier.

Every Chainmail account gets a Solana wallet. Opt-in photo fingerprints are written as memos on-chain (devnet today), and an open-source verifier checks them without our servers.

Fingerprints written as Solana memos (devnet today)Group messages end-to-end encrypted with sender keys
SPL MEMO · DEVNETExample
ProgramMemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr
Memochainmail:img:8f3a…|c41b…|09d2…
Slot312,448,901
Signer7xKX…gAsU (sponsor)
Devnet today. Mainnet records are in development.
The problem

Scams speak in your community's voice.

Impersonators copy founders, mods and support. Screenshots of “announcements” are edited and re-shared faster than they can be denied.

+1,400%

growth in crypto impersonation scams in 2025

Chainalysis, Jan 2026
~$17B

estimated stolen in crypto scams in 2025

Chainalysis, Jan 2026
51%

of web traffic in 2024 was automated

Imperva Bad Bot Report 2025 (vendor)
Why current fixes fall short

Guesses, stripped data, and trust.

01

Discord is not private

Founder and investor talk sits on a server you do not control.

02

Screenshots lie

An edited screenshot looks the same as the real one.

03

Bots farm everything

Empty wallets join, spam and leave.

The solution

On-chain where it helps. Private where it matters.

Photo fingerprints go on-chain as memos anyone can read. Messages stay off-chain and end-to-end encrypted.

Wallet per account

Each account derives a Solana wallet.

Readable memos

chainmail:img memos are plain on-chain data.

Private coordination

Encrypted 1:1 and group messages.

No backend trust

The verifier needs no Chainmail server.

Features

What ships today, and what is next.

Live

On-chain photo memos

SPL Memo records each stamp. Devnet today; mainnet in development.

SPL MEMO · DEVNETExample
ProgramMemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr
Memochainmail:img:8f3a…|c41b…|09d2…
Slot312,448,901
Signer7xKX…gAsU (sponsor)
Devnet today. Mainnet records are in development.
Live

Open verifier

TypeScript, no backend. Frozen test vectors catch drift.

// open source · not on npm yet: clone the repository
import { verifyPhoto, summarizePhoto } from "@chainmail/verifier";

const bytes = await Bun.file("IMG_2048.JPG").bytes();
const report = verifyPhoto(bytes);
console.log(summarizePhoto(report));
// → Chainmail-verified: these bytes match the original stamp.
Live

Encrypted groups

Sender keys with XChaCha20-Poly1305.

Your phone

identity key
ed25519 · on device
X3DH · Double Ratchetxchacha20-poly1305
3f9a…c1e0 7b2d…
server sees ciphertext

Their phone

identity key
ed25519 · on device
Live

Gated chats

Group admins can require members to hold an NFT or prove wallet control before they join. The server enforces it.

NNorthwind Supportverified channelIn development
?Northwind Suppportnew account · 2 days

Example brand. Verified profiles are not live yet.

How it works

Four steps.

1

Sign up

Email or Google. A wallet is derived on the device.

2

Link Phantom

Optional. Use your own wallet instead.

3

Stamp and send

Photo memos go on-chain.

4

Verify

Anyone runs the open verifier.

Use cases

Where a stamp helps.

Founder and investor chatsMod teamsAnnouncement proofsGrant and bounty evidence
Security and privacy

Every result states its limits.

What a stamp proves
  • The JPEG has not changed since it was stamped.
  • The fingerprint matches a record on Solana, with its time. Devnet today; mainnet is in development.
  • Anyone can repeat the check with open-source code.
What it does not prove
  • That the photo was taken in Chainmail. Imported photos can be stamped too.
  • Who took the photo, or who sent it.
  • That a camera made it rather than an AI model.
  • That the scene was honest when the photo was taken.
Get started

See it on your flow.

Coming soon to the App Store. For teams, we set up a demo on your own photos.

See how we handle your data in our privacy policy.

Running a community? Talk to us.

See how we handle your data in our privacy policy.