Skip to content
Player's Guide

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.

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.

  • 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

Use the entry point for the action you want:

  • Set your usernameLAU.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.

VOID0x965B0d74591bF30327075A247C47dBf487dCff08
VOID.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.

LAUResolve your player or venue above the call forms.
LAU.Username(string newUsername)Simulate / call

Open this function to load its call form.

  • Cost: gas for username updates and chat. No protocol fee.
  • Reward: none directly. VOID is plumbing, not payout.
  • 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.

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.

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.