Private Messaging
Direct encrypted communication between Algorand wallets
End-to-end encrypted messaging through Algorand blockchain transactions. No servers. No accounts. No trust required.
An open protocol for secure messaging using Algorand as infrastructure.
Direct encrypted communication between Algorand wallets
Secure governance discussions with cryptographic identity
Negotiate trades with immutable message history
Messages encrypted and embedded in Algorand transaction note fields.
AlgoChat uses ECDH key exchange to derive a shared secret. Messages are encrypted with AES-256-GCM before being embedded in transaction notes (up to 1KB).
PSK mode provides 128-bit post-quantum security.
ECDH + AES-256-GCM provides strong classical security for most use cases.
Hybrid ECDH + PSK provides 128-bit post-quantum security.
| Component | Algorithm | Security |
|---|---|---|
| Key Exchange | X25519 (ECDH) | 128-bit classical |
| Encryption | AES-256-GCM | 256-bit symmetric |
| Key Derivation | HKDF-SHA256 | 256-bit |
| PSK Mode | ECDH + PSK | 128-bit post-quantum |
The AlgoChat structure embedded in transaction notes.
Five fully tested implementations with 100% cross-compatibility.
All 316 tests pass across every implementation. Messages encrypted in Swift can be decrypted in Python, Rust, TypeScript, or Kotlin.
Simple examples to start sending encrypted messages.
import AlgoChat
// Create identity from wallet
let identity = AlgoChatIdentity(privateKey: walletKey)
// Encrypt message
let envelope = try AlgoChat.encrypt(
message: "Hello!",
from: identity,
to: recipientKey
)
// Send via Algorand
algod.send(note: envelope.encoded)
import { AlgoChat } from '@corvidlabs/algochat';
// Create identity
const identity = new AlgoChatIdentity(walletKey);
// Encrypt & send
const envelope = await AlgoChat.encrypt(
"Hello!", identity, recipientKey
);
await algod.send({ note: envelope.encoded });
from algochat import AlgoChat, AlgoChatIdentity
# Create identity
identity = AlgoChatIdentity(private_key=wallet_key)
# Encrypt & send
envelope = AlgoChat.encrypt(
message="Hello!",
sender=identity,
recipient=recipient_key
)
algod.send(note=envelope.encoded)