Skip to content

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 usernamesetUserName("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.