Skip to main content

Overview

Every message on blockmsg is encrypted using Fully Homomorphic Encryption (FHE) before being stored on the blockchain.
FHE is the gold standard for encryption - even quantum computers cannot break it.

How Message Encryption Works

1

You Type a Message

You compose your message in the blockmsg interface
2

Client-Side Encryption

Your browser encrypts the message using FHE before it leaves your device
3

On-Chain Storage

The encrypted message is stored on the blockchain as a transaction
4

Recipient Decrypts

Only the recipient with their wallet private key can decrypt and read the message

Technical Details

Encryption Process

// Message is chunked into 32-bit segments
const chunks = chunkMessage(message, 4); // 4 bytes per chunk

// Each chunk is encrypted using TFHE
const encryptedHandles = chunks.map(chunk => 
  fhevmInstance.encrypt32(chunk)
);

// Encrypted handles are sent to the smart contract
await contract.sendDirectMessage(recipient, encryptedHandles);

Decryption Process

  1. User requests decryption by clicking “Reveal Message”
  2. A cryptographic signature is generated using the wallet
  3. The fhEVM re-encrypts the data for the requesting user
  4. Client-side decryption reveals the plaintext message
Decryption requires an active wallet connection. Without your wallet, messages cannot be decrypted.

Privacy Guarantees

FeatureGuarantee
Message ContentFully encrypted, unreadable without key
Sender AddressVisible on-chain (public blockchain)
Recipient AddressVisible on-chain (public blockchain)
TimestampVisible on-chain
Message LengthPartially hidden (chunked)
While message content is fully private, sender and recipient addresses are visible on the public blockchain.