← Back to home

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