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
Section titled “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.
Your LAU and CHO use VOID for identity. Players can also call VOID.Chat(message) for global chat; use CHOA.Chat(Qing, message) for venue chat.
If you’ve played a web3 game before
Section titled “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
Section titled “What you actually do with it”Use the entry point for the action you want:
- Set your username —
LAU.Username("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.
Use these calls here. Simulations preview the current state; each confirmed call is a separate transaction.
0x965B0d74591bF30327075A247C47dBf487dCff08VOID.Chat(string chatline)Simulate / call
Open this function to load its call form.
VOID.SetAttribute(string name, string value)Simulate / call
Open this function to load its call form.
LAU.Username(string newUsername)Simulate / call
Open this function to load its call form.
Rewards / costs
Section titled “Rewards / costs”- Cost: gas for username updates and chat. No protocol fee.
- Reward: none directly. VOID is plumbing, not payout.
Requirements & gating
Section titled “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
Section titled “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
Section titled “Quick FAQ”Q: Can I change my username?
A: Yes — LAU.Username(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/core/10_VOID.