LAU¶
Overview¶
LAU is the user interface layer contract that provides a personal token for each user. It wraps VOID functionality with user-specific context and manages withdrawals, chat, aliases, and area tracking.
- Kind: Contract
- License: Sharia
- Solidity: ^0.8.21
- Source:
11_lau.sol
Inheritance Chain (C3 Linearized)¶
- self — LAU
- DYSNOMIA
- MultiOwnable
Immediate Parents¶
What This Means For Players¶
Plain English Summary: LAU is YOUR player account - your personal wallet, identity, and interface to the entire Dysnomia game. When you join Dysnomia, you create a LAU token that represents you. Through your LAU, you can chat, withdraw earnings, set your username, and interact with the game world.
Real-World Analogy: Think of LAU as your player profile in a video game combined with your crypto wallet. It's like your Steam account, Xbox Gamertag, or Discord profile - but also holds your in-game currencies and lets you interact with other players and venues.
What You Can Do With Your LAU: - Chat - Send messages to venues and other players - Withdraw tokens - Move earnings from your LAU to your wallet - Set your username - Choose how other players see you - Create aliases - Give nicknames to other addresses for easy reference - Track your location - Know which venue (QING) you're currently in - Access your identity - Your Soul ID (unique player number) and Aura (identity fingerprint)
State Variables¶
| Variable | Type | Visibility | Mutability | Initial Value | NatSpec |
|---|---|---|---|---|---|
Type |
string |
public | constant | LAU |
|
Eta |
VOID |
public | mutable | `` | |
Saat |
uint64[3] |
public | mutable | `` | |
On |
Bao |
public | mutable | `` | |
CurrentArea |
address |
public | mutable | `` |
Constructor¶
constructor¶
constructor(string memory name, string memory symbol, address VoidAddress) DYSNOMIA(name, symbol, address(DYSNOMIA(VoidAddress).Xiao()))
- Modifiers:
DYSNOMIA(name, symbol, address(DYSNOMIA(VoidAddress).Xiao())) - Parameters: string memory name, string memory symbol, address VoidAddress
Functions¶
External & Public¶
Withdraw¶
- Visibility: public
- Modifiers:
onlyOwners - Parameters: address what, uint256 amount
Void¶
- Visibility: public
- Modifiers:
onlyOwners - Parameters: bool really1, bool really2
Leave¶
- Visibility: public
- Modifiers:
onlyOwners
Username¶
- Visibility: public
- State Mutability: view
- Returns: string memory
Username¶
- Visibility: public
- Modifiers:
onlyOwners - Parameters: string memory newUsername
Chat¶
- Visibility: public
- Modifiers:
onlyOwners - Parameters: string memory chatline
Alias¶
- Visibility: public
- Modifiers:
onlyOwners - Parameters: address name, string memory value
Alias¶
- Visibility: public
- State Mutability: view
- Modifiers:
onlyOwners - Parameters: address name
- Returns: string memory
Alias¶
- Visibility: public
- Modifiers:
onlyOwners - Parameters: Bao memory Theta, string memory value
Alias¶
- Visibility: public
- State Mutability: view
- Modifiers:
onlyOwners - Parameters: Bao memory Theta
- Returns: string memory
Inherited Members¶
This contract inherits the members below from its parents. See each parent's dedicated MD for full signatures, NatSpec, and semantics.
From DYSNOMIA¶
External & Public Functions
| Function | Signature | State Mutability |
|---|---|---|
Rename |
function Rename(string memory newName, string memory newSymbol) public onlyOwners |
nonpayable |
mintToCap |
function mintToCap() public onlyOwners |
nonpayable |
GetMarketRate |
function GetMarketRate(address _a) public view returns (uint256) |
view |
Purchase |
function Purchase(address _t, uint256 _a) public |
nonpayable |
Redeem |
function Redeem(address _t, uint256 _a) public |
nonpayable |
name |
function name() public view virtual returns (string memory) |
view |
symbol |
function symbol() public view virtual returns (string memory) |
view |
decimals |
function decimals() public view virtual returns (uint8) |
view |
totalSupply |
function totalSupply() public view virtual returns (uint256) |
view |
balanceOf |
function balanceOf(address account) public view virtual returns (uint256) |
view |
transfer |
function transfer(address to, uint256 value) public virtual returns (bool) |
nonpayable |
allowance |
function allowance(address owner, address spender) public view virtual returns (uint256) |
view |
approve |
function approve(address spender, uint256 value) public virtual returns (bool) |
nonpayable |
transferFrom |
function transferFrom(address from, address to, uint256 value) public virtual returns (bool) |
nonpayable |
Internal Functions
| Function | Signature |
|---|---|
_mintToCap |
function _mintToCap() internal |
AddMarketRate |
function AddMarketRate(address _a, uint256 _r) internal |
_transfer |
function _transfer(address from, address to, uint256 value) internal |
_update |
function _update(address from, address to, uint256 value) internal virtual |
_mint |
function _mint(address account, uint256 value) internal |
_approve |
function _approve(address owner, address spender, uint256 value) internal |
_spendAllowance |
function _spendAllowance(address owner, address spender, uint256 value) internal virtual |
log10 |
function log10(uint256 value) internal pure returns (uint256) |
String |
function String(uint256 value) internal pure returns (string memory buffer) |
Hex |
function Hex(address account) internal pure returns (string memory) |
Events
| Event | Parameters |
|---|---|
Transfer |
address indexed from, address indexed to, uint256 value |
Approval |
address indexed owner, address indexed spender, uint256 value |
Errors
| Error | Parameters |
|---|---|
MarketRateNotFound |
address asset |
DysnomiaInsufficientBalance |
address origin, address sender, address from, address to, address what, uint256 balance, uint256 needed |
DysnomiaInsufficientAllowance |
address origin, address sender, address owner, address spender, address what, uint256 allowance, uint256 needed |
State Variables (private parent storage is not reachable and is omitted)
| Variable | Type | Visibility | Mutability |
|---|---|---|---|
__name |
string |
internal | mutable |
__symbol |
string |
internal | mutable |
MotzkinPrime |
uint64 |
public | constant |
Xiao |
atropaMath |
public | mutable |
maxSupply |
uint256 |
public | mutable |
From MultiOwnable¶
External & Public Functions
| Function | Signature | State Mutability |
|---|---|---|
owner |
function owner() external view virtual returns (address) |
view |
renounceOwnership |
function renounceOwnership(address toRemove) public virtual onlyOwners |
nonpayable |
addOwner |
function addOwner(address newOwner) public virtual onlyOwners |
nonpayable |
Internal Functions
| Function | Signature |
|---|---|
_checkOwner |
function _checkOwner() internal view virtual |
_changeOwnership |
function _changeOwnership(address cOwner, bool cState) internal virtual |
Events
| Event | Parameters |
|---|---|
OwnershipUpdate |
address indexed newOwner, bool indexed state |
Errors
| Error | Parameters |
|---|---|
OwnableUnauthorizedAccount |
address origin, address account, address what |
OwnableInvalidOwner |
address origin, address owner, address what |
Modifiers
| Modifier | Parameters |
|---|---|
onlyOwners |
(none) |
Contract Interactions¶
Depends On¶
Created By¶
- LAUFactory - Factory for LAU creation
Depended On By¶
- CHO - User authentication
- Domain contracts that interact with users
Constructor Logic¶
constructor(name, symbol, VoidAddress) {
Eta = VOID(VoidAddress);
// Enter via VOID (creates user session)
(Saat, On) = Eta.Enter(name, symbol);
// Add ownership to the SHIO and Rod
On.Shio.addOwner(address(this));
On.Shio.Rho().Rod.addOwner(address(this));
}
Special Mechanisms¶
User Token Pattern¶
Each LAU instance represents a single user. The constructor: 1. Calls VOID.Enter() to create a session 2. Receives the Saat array and Bao 3. Adds self as owner of the SHIO and Rod
Soul ID Access¶
The Soul ID is stored at Saat[1] and used throughout the system to identify the user:
Logging Pattern¶
Most write functions include logging:
Void Reset¶
The Void function requires two confirmation parameters to prevent accidental resets:
Area Tracking¶
CurrentArea can be set by game contracts to track user location:
Usage Pattern¶
// Deploy via factory
LAU myToken = lauFactory.New("My Token", "MTKN");
// Set username
myToken.Username("Alice");
// Chat
myToken.Chat("Hello!");
// Withdraw tokens
myToken.Withdraw(tokenAddress, amount);
// Leave current area
myToken.Leave();
// Get user info
uint64 soul = myToken.Saat(1);
string memory name = myToken.Username();
Security Considerations¶
- Most functions are protected by
onlyOwners - The LAU owner is the user who created it
- SHIO and Rod ownership is shared between LAU and user
- Void reset requires double confirmation
Contract Verification¶
| Property | Value |
|---|---|
| Keccak256 Hash | 0x9518e52b7177571e28f0cf0424df4be4f3bf268e80729e79650a3e77a91f5039 |
| Source URL | https://raw.githubusercontent.com/busytoby/atropa_pulsechain/main/solidity/dysnomia/11_lau.sol |
| Hash Generated | 2026-04-17T20:48:08Z |