Documentation
How Elysium Mail works
Elysium Mail is wallet mail for Elysium, Kinetiq's L2 for Hyperliquid. Your wallet address is your mailbox: anyone can write to you at 0x… or at your .els name, and every message is signed by the sender's wallet.
Concepts
- Wallet = identity. No account, no password, no phone number. You sign in by signing one readable sentence with your wallet. The session lasts 24 hours and the signature can never move funds.
- Name = address. A
.elsname (e.g.maya.els) resolves on-chain to a wallet address. People write to the name, the name resolves to the wallet. - Signed messages. Each message carries a
personal_signsignature over its exact text, so authorship is provable and impersonation is impossible.
Sign in
Open the app and click Connect wallet & sign in. Any EIP-1193 wallet works (Hyperliquid Wallet, MetaMask, Rabby, and others). The app requests your accounts, then switches (or adds) the Elysium chain:
| Field | Value |
|---|---|
| Chain name | Elysium |
| Chain ID | 99901 (0x1863d) |
| RPC | https://rpc.elysium.kinetiq.xyz |
| Native currency | HYPE (18 decimals) |
| Explorer | https://elysium.kinetiq.xyz |
If your wallet refuses to add the chain, sign-in still succeeds with your address, but on-chain .els resolution will be unavailable until the chain is added manually.
Identity & .els names
Your identity is your wallet address. If you own a .els name registered on ELSnames and set it as your primary name, Elysium Mail resolves it on-chain and shows it instead of the raw address.
Forward resolution (name → address)
registry.resolver(namehash("maya.els")) → resolver address
resolver.addr(namehash("maya.els")) → 0x9c4e…21af
Reverse resolution (address → name)
namehash("9c4e…21af.addr.reverse") → resolver → name()
Names are managed by ELSnames (@ELSnames), deployed on Elysium mainnet:
| Contract | Address |
|---|---|
| Registry | 0x5752aCFe755F20dc38F481829587A59a0bF5107c |
| Resolver | 0x3ba6E08b2041A2D86BB4849369ad2f6C1B3A073E |
| Controller | 0xAC6aa1587b715b313a1fA83c5B6aC7a91e8Ae728 |
| Reverse registrar | 0x1Bb4791eF4C29A4EdDCf958c273cE96F300aaE16 |
| USDC | 0xb47c4C8F73F009CC0C0d3f92B388d13E293F0B65 |
| Auction | 0x6220A83bFcdA5CD6E55A8AaA8B67b32a4831826d |
Pricing (per year, paid in USDC): 5+ chars $10, 4 chars $25, 3 chars $60, 2 chars $150, 1 char sold by auction. Discounts up to 50% for Hyperliquid history. Buy or renew at elsname.xyz/app.
Composing mail
- To accepts a wallet address (
0x…) or a.elsname. When you type a.elsname, Elysium Mail resolves it on-chain and shows the target address under the field. - Subject, body as usual. The signature preview is computed over
to + subject + body. - Send stores the message in the Sent folder and shows a toast with the resolved recipient.
- Drafts, archive, trash, starred, search, reply and forward work as in a classic inbox.
Contacts
Add a contact by name (a .els name is resolved on-chain automatically) and address. Click Write to open a compose window pre-filled with the recipient.
Settings
Shows your connected wallet address and your resolved .els name. If you have none, a link takes you to ELSnames to register one. Notifications toggle is stored locally.
Architecture
- Static site (HTML/CSS/JS), no backend, no build step. Served by Vercel.
- Storage: messages, contacts, session and identity are stored in
localStorage(keys prefixedelys_). This is a demo: there is no server-side mailbox yet. - On-chain reads:
.elsresolution goes directly to the Elysium RPC (rpc.elysium.kinetiq.xyz) via ethers.js v6, in the browser. No API key required. - Wallet: native EIP-1193 provider (
window.ethereum). No Privy, no embedded wallets.
Files
index.html Landing page app.html Inbox application docs.html This page css/landing.css Landing styles (Elysium palette) css/app.css App styles + toast + card js/landing.js Landing interactions js/app.js App logic (folders, compose, contacts, session, identity) js/els.js .els resolution (forward + reverse) on Elysium logo/ logo.png (original), logo-dark.png (512 tile), favicon.png (128) vercel.json cleanUrls: true
Run locally
cd "elysium-mail" npx serve .
Then open http://localhost:3000.
Deploy
# preview vercel # production vercel --prodCurrent limitations
- Messages are local. There is no server-side mailbox yet: messages, drafts and contacts live in
localStorage. They are not synced across devices or delivered to other users. - Signature is simulated. The signature shown is a deterministic hash, not a real
personal_sign. Real signing will be wired to the wallet. - Encryption is described, not implemented. Mailboxes are not yet AES-256-GCM encrypted at rest.
- Buying a .els name happens on ELSnames, not inside this app.
Links
- App: www.elysiummail.xyz/app
- ELSnames: elsname.xyz
- Elysium: elysium.kinetiq.xyz
- Twitter: @elysium_mail
Elysium Mail
Open inbox