VOID — The Session Layer¶
One-line pitch: The backend that remembers who you are between visits and routes every chat message to the right place.
What this is¶
VOID is the part of the system that handles sessions, chat logging, and player attributes. Every LAU has a VOID session behind it. When you joined, your LAU called VOID.Enter() to register — that's what produced your Soul and your Aura. Since then, VOID keeps track of:
- Your Soul ID (linked to your wallet address).
- Your username (how others see you in chat).
- Any attributes (custom data the game or other contracts want to attach to your session).
- All chat log events — when a QING broadcasts a message, the event flows through VOID so indexers can find it.
VOID is a contract you talk to through your LAU and through CHO. You won't normally call it directly.
If you've played a web3 game before¶
- Closest analogy: the authoritative game server (except decentralized and on-chain).
- Or: a user-session microservice in a SaaS app — stateless from your perspective, but stores enough to know you between logins.
- Or: a Discord gateway — messages flow through it, everyone subscribes to what's coming out.
| Dysnomia term | What it maps to |
|---|---|
| Enter() | The "sign in / create account" backend call |
| Soul | Your session user-ID |
| Username | Display name |
| Attribute | A key/value setting on your profile |
| Log | A chat event broadcast |
What you actually do with it¶
You mostly don't call VOID directly. What you do is:
- Set your username —
setUserName("alice"). Other players see this in every chat event. - Read attributes — other contracts may set attributes on your session (skills, badges, timestamps).
- Watch logs — indexers and wallets subscribe to VOID events to show chat in UI.
Advanced owners can also register libraries (AddLibrary), but that's for contract deployers, not players.
Rewards / costs¶
- Cost: gas for setUserName and the like. No protocol fee.
- Reward: none directly. VOID is plumbing, not payout.
Requirements & gating¶
- You must already have a LAU (VOID is entered automatically at LAU creation time).
- Some actions are
onlyOwners(chat routing, library registration) and scoped to the relevant SHIO owner — that's enforced upstream, you won't usually hit it as a player.
Where it connects¶
VOID sits between your LAU and everything else — specifically it calls SIU to mint your Aura/Saat when you first enter, and it's the contract that every chat event gets logged through. The LAU Factory triggers VOID.Enter() for you at signup.
Quick FAQ¶
Q: Can I change my username?
A: Yes — setUserName(newName) overwrites the old one. Some venues may rate-limit how often they re-read it; in practice you can change it whenever.
Q: Are my chat messages stored in VOID forever? A: They're emitted as events — permanent on-chain history, indexable but not stored in contract state. Think of VOID as broadcasting, not archiving.
Q: Why do I have both a Soul (here) and an Aura (elsewhere)? A: Soul = player ID. Aura = proof the player-ID belongs to your specific wallet. One identifies you, the other authenticates you.
Q: What's the "chat log" for? A: Off-chain frontends (websites, wallets, discord bots) listen for VOID events and show them as rendered chat. Without those events, players can't see each other's messages.
Want the Solidity? The contract reference lives at
technical/docs/core/10_VOID.md.