← /dysnomia · dev index

entity data (deployment, supply/cap, liveness):/dysnomia/contracts/0x529e3e15… · plain-language: guide/accounts-and-chat

LibAttribute — “CHATLOG LibAttribute” — string attributes + address aliases

Wave 1 · 2024-08-23 00:50 UTC · deployed [chain]

In player terms

Your display name’s storage The “Username” your chat lines are stamped with (max 12 characters) is stored here, keyed by your soul. VOID and LAU are the front counters; this is the filing cabinet.
Profile fields, schema-controlled Attributes are name → string with a system-set max length. Only the schema is managed centrally; the values are per-soul and yours.
Address aliases A second per-soul namespace maps addresses to short strings (≤32 chars) — the “grades”. Useful for pinning labels like favorite venues to your identity.
Reads are owner-gated Even the getters require the MultiOwnable pass — indexers get usernames more cheaply from chat LogEvents, which carry them verbatim.

1. Identity

Address 0x529e3e15da19c7c828f9cce13c53f7031a30ec7c
Creation block 21,220,714 — 2024-08-23 00:50 UTC (tx 0xeb08f1d070f5dfbf8e19f6201d94f80760480d89142d1fb1fca7a0369ba08b68)
Deployer 0x0474606332105A1d389Cb9 (full: 0x0474606332105A1dA6FC8EF7De2470551D389Cb9)
Name / symbol CHATLOG LibAttribute / LibAttribute [chain]
Supply / cap 18,912 / 32,458 — liquid [chain]
Library name libattribute (self-registered on VOID at construction)

2. Role

The string-key/value store behind user identity dressing: attributes (_attributes name → max length; Username capped at 12 chars, seeded TestAttribute at 140) and per-soul address aliases (_userGrades: soul → address → string, ≤32 chars — “grades” in the source). VOID and LAU expose thin wrappers; nothing user-facing writes here directly.

3. Dependencies

Constructed with the VOID address; owned by VOID (addOwner(VoidAddress)). Called by VOID (Set/Get/Alias), LAU (via VOID wrappers). Note Get and the Alias readers are onlyOwners — they pass because VOID/LAU are owners and tx.origin delegation carries the EOA.

4. State

Void, _attributes, _userAttributes (soul → name → string), _userGrades (soul → address → string).

5. Functions

Function table extracted mechanically from lib/attribute.sol. Gate: public = anyone · owners = MultiOwnable set, msg.sender OR tx.origin · bouncers = QING bouncer rule · single-owner = classic owner · deployer = constructor wiring. meter = the call self-mints one unit via _mintToCap() (a call-counter against the constructor-lottery maxSupply).

signature gate meter events reverts
constructor(address VoidAddress) deployer meter — —
addAttribute(string memory name, uint8 maxLength) owners meter — —
removeAttribute(string memory name) owners meter — —
Set(uint64 Soul, string memory name, string memory value) owners meter — MaximumLength
Get(uint64 Soul, string memory name) returns (string memory _a) owners — — AttributeNotFound
Alias(uint64 Soul, address name, string memory value) owners meter — MaximumLength
Alias(uint64 Soul, address name) returns (string memory _a) owners — — AliasNotFound
Alias(uint64 Soul, Bao memory entity, string memory value) owners meter — MaximumLength
Alias(uint64 Soul, Bao memory entity) returns (string memory _a) owners — — AliasNotFound

Errors declared: MaximumLength(string value, uint256 length, uint8 maxLength) · AttributeNotFound(string name) · AliasNotFound(address name)

Effects: addAttribute/removeAttribute manage the schema (max length 0 = unusable); Set enforces the length cap (MaximumLength); Get reverts AttributeNotFound on empty (missing) values — a deliberate “no silent default” choice; the two Alias writer overloads cap values at 32 chars, the readers revert AliasNotFound.

6. Integration notes

7. Provenance