Foundation — Encrypted Ephemeral Rooms
shippedShip the privacy-and-self-destruct primitive that every later payment phase composes on.
Timeline: Shipped on testnet
- Pay SUI to create a room — tiered: free (public) / 0.01 SUI (private)
- Per-room AES-256 key generated client-side; private rooms are true E2E via invite envelope
- Public rooms encrypted-at-rest with on-chain key sharing (any visitor can join — disclosed, not blanket E2E)
- Messages encrypted client-side → pinned to IPFS (Pinata) → CID committed to a Sui shared object
- TTL enforced on-chain: 7d public, 30d private; per-room message cap (1000) with paginated UI
- Live polling subscription (5s) — new messages render across devices
- Two-step destruct: owner flips room to Closed → can then burn_room_key to zero the on-chain key (Burned); clients wipe local key on RoomClosed event
- Chain is source of truth — frontend pulls room list + history from Sui, not localStorage
- Upgradeable Sui Move package via AdminCap (already migrated Config v1 → v2, Room v1 → v4)