Skip to content
Player's Guide

ATTRIBUTE — Your Profile & Address Book

One-line pitch: ATTRIBUTE is where your username, your address aliases (nicknames), and any other per-player profile settings live. One library, keyed by Soul.

ATTRIBUTE (full name LibAttribute) is a helper library that stores your player profile data. Two main features:

  • Username storage — your display name (max 64 chars), keyed by your Soul.
  • Address aliases — nickname an arbitrary address (“Bob’s LAU”, “My Cold Wallet”) so UIs can show friendly labels (max 32 chars).

All data is bound to your Soul ID, not your wallet address, so if the game ever supports Soul migration your profile follows you.

  • Closest analogy: ENS text records — per-identity profile fields.
  • Or: contacts app / address book — nickname → address lookup.
  • Or: an on-chain settings blob keyed by player ID.
Dysnomia term What it maps to
ATTRIBUTE Profile/alias storage library
Username Your display name (max 64 chars)
Alias A nickname for any address (max 32 chars)
Grade Extra per-address user-defined tag
  • Set your username via LAU (which routes into ATTRIBUTE).
  • Nickname addresses so your UI shows “Bob” instead of 0xa1b2….
  • Read your profile when a frontend loads.

Use these calls here. Simulations preview the current state; each confirmed call is a separate transaction.

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

Open this function to load its call form.

LAU.Alias(address name, string value)Simulate / call

Open this function to load its call form.

ATTRIBUTE0x529e3e15Da19c7c828f9CCE13C53F7031a30ec7c
ATTRIBUTE.Get(uint64 Soul, string name)Read

Open this function to load its call form.

  • Cost: gas per write; may have a length-based fee or limit.
  • Reward: none direct.
  • You need a Soul (i.e. a LAU) — profiles are Soul-keyed.
  • Max lengths enforced: Username ≤ 64 chars, Alias ≤ 32 chars. Overflow reverts with MaximumLength.

Keyed by Soul (populated via LAU + VOID). Read by any UI rendering player names or address labels.

Q: Can two players have the same Username? A: ATTRIBUTE itself doesn’t enforce global uniqueness — it’s per-Soul. The display layer may add a discriminator.

Q: Can someone else set my Username? A: No — only calls authorized by your Soul can write your fields.

Q: Are old aliases recoverable? A: Overwrites replace. There’s no automatic history.


Want the Solidity? The contract reference lives at technical/docs/lib/ATTRIBUTE.md.