OnlyDanks
Private end-to-end encrypted messenger built on blobs, fully anonymous and censorship-resistant.
Problem Statement
What Is It? OnlyDanks is a messaging system that lives entirely on the Ethereum blockchain. There are no apps, no servers, and no middlemen. Messages are written directly to Ethereum’s new blob storage, making them:Invisible to third parties (no one can read them)Unlinkable (no one can tell who’s talking to whom)Censorship-resistant (no one can delete or block them)It works like a fully private postbox, where only the intended recipient has the key—and no one even knows the box exists.How It Works (Conceptually)You create a public identity using an Ethereum Name like yourname.onlydanks.ethThis name links to a public key, like sharing your digital mailboxWhen someone wants to message you:They use your public key to encrypt a messageThey publish it into Ethereum’s blob spaceYou periodically check for new messages by scanning the blockchainIf a message is meant for you, you can decrypt and read itWhy It's SpecialPrivacy by design: No servers or apps know who you areStealthy delivery: Only you can find and read your messagesGlobally accessible: Anyone with an Ethereum wallet can use itNo central control: Can't be taken down, blocked, or censoredNo history or tracking: All data is ephemeral and unlinkable
Solution
Identity & RegistrationUsers register ENS subnames (e.g., user.onlydanks.eth) through an L2 registrar on World-SeopliaEach subname links to a secp256k1 public key via ENS text recordENS’s L1 resolver points to our L2 registryMessage Sending FlowLook up ENS subname → get public keyGenerate ephemeral private keyUse ECDH (Diffie-Hellman) to create shared secretSign the message with sender's private keyEncrypt the signed message with the shared secretPublish to blob:Ephemeral public keyInitialization vector (IV)hash(shared_secret) (used for message lookup)Encrypted messageBackend ServiceStateless, self-hostableIndexes blobs and provides:List of ephemeral public keys + IVMessages by hash(shared_secret)Does not store any private info or user dataMessage Receiving FlowThe recipient downloads ephemeral public keys + IVs from the backendTries to compute shared secrets from eachFor each derived hash(shared_secret), queries backend for matching blobsIf found, decrypts the message and verifies the sender via signature
Hackathon
ETHGlobal Cannes
2025
Prizes
- 🏆
World Pool Prize
World
- 🏆
🏆 ETHGlobal Cannes 2025 Finalist
ETHGlobal
Contributors
- holyfuchs
42 contributions
- pauldev20
36 contributions
- fabbaisteth
28 contributions