Post-quantum encrypted messages on XDC

Create your message keys, send a message only the recipient can read, and decrypt messages sent to you. Everything runs in your browser. Your keys and messages never touch a server, and this page never asks for your wallet’s private key or recovery phrase.

  • ML-KEM-768 (NIST FIPS 203)
  • AES-256-GCM
  • XDC mainnet
  • Open source

Create your message keys

Do this once if you want to receive messages. Share your message public key with anyone who wants to message you. You don’t need message keys of your own just to send.

Message keys are created on this page and only encrypt and decrypt messages. They are not your wallet keys and can’t move funds.

Message public key Share this
Message decryption key Never share

Save your message decryption key somewhere safe and offline. Anyone who has it can read every message sent to your message public key. If you lose it, those messages can’t be recovered. Nothing is saved by this page.

Send a message

Your message is encrypted with the recipient’s message public key, then sent as an XDC transaction from MetaMask.

MetaMask not connected

Must be an address in a different wallet from the one you’re sending with. MetaMask blocks data transactions between addresses in the same wallet.

Not their wallet address, and never a private key. It starts with PQONCHAIN-PUBLIC-KEY-, or is 2,368 hex characters for keys made before this was added.

Longer messages cost more gas.

Read a message

Paste the transaction hash the sender gave you and your message decryption key. No wallet connection needed.

Never your wallet’s private key or recovery phrase. PQOnchain never needs them. Use the message decryption key you created in step 1.

Network settings

Used only to look up the transaction. Any XDC mainnet RPC works.

Decrypted message

Things to know

Only the message is private

The message text is encrypted. The sender, recipient, amount and time are public on chain, like any XDC transaction.

Why post-quantum?

Data on a public chain stays there forever. “Harvest now, decrypt later” attacks collect encrypted data today to break once quantum computers mature. ML-KEM is designed to resist them.

The recipient needs the transaction hash

After you send, copy the hash and pass it to the recipient. They paste it into step 3 with their message decryption key.

Message keys aren’t wallet keys

Your message keys are created here and only lock and unlock messages. PQOnchain never asks for your wallet’s private key or recovery phrase. If any page that looks like this one does, close it.

Testing it yourself

MetaMask won’t send these transactions between addresses in the same wallet, so:

  1. Use two different wallets, or two browser profiles.
  2. Send from wallet A to an address in wallet B.
  3. Send a small amount, such as 0.01 XDC, or none at all.

Need help?

Questions about PQOnchain, a bug to report, or an idea? Message me on whichever platform suits you.