Skip to content

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.

What this is

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.

If you've played a web3 game before

  • 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

What you actually do with it

  • 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.

Rewards / costs

  • Cost: gas per write; may have a length-based fee or limit.
  • Reward: none direct.

Requirements & gating

  • 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.

Where it connects

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

Quick FAQ

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.