CHO — The Login Gate
Evidence scope: The behavior below is from the pinned Solidity source. A source-file hash does not establish deployed bytecode equivalence. Check the selected deployment and caller before sending a transaction.
What this is
Section titled “What this is”CHO stores Delegates[wallet], a User record, and DelegateAddresses[Soul], a wallet address. Enter(lau) checks lau.owner(tx.origin) and selects that LAU for the transaction origin. LAUFactory and VOID session creation do not themselves populate this CHO delegate record.
What you actually do with it
Section titled “What you actually do with it”- Call
Enter(lau)to register or switch to an owned LAU. - Read
GetUserTokenAddress(wallet)for that wallet’s active LAU andGetUserSoul()for the caller’s active Soul. - Read
Addresses(alias)for an alias that has actually been registered; an example token name is not proof that the alias exists. GetUser()andGetUserBySoul()are state-changing reactions in this snapshot, not ordinary view getters. Use aneth_callpreview when you only want to inspect their results.
Use these calls here. Simulations preview the current state; each confirmed call is a separate transaction.
CHO.GetUserTokenAddress(address wallet)Read
Open this function to load its call form.
CHO.Enter(address UserToken)Simulate / call
Open this function to load its call form.
CHO.GetUserSoul()Read
Open this function to load its call form.
CHO.Addresses(string)Read
Open this function to load its call form.
Requirements & gating
Section titled “Requirements & gating”VerifyUserTokenPermissions(lau) checks the transaction origin’s WITHOUT balance and whether the supplied LAU owns the expected SHIO and Rod. It does not check whether the caller owns that LAU. Enter adds the caller-ownership check separately.
Direct QING.Chat uses VerifyUserTokenPermissions without adding a caller-ownership check, while LAU.Chat is restricted by onlyOwners. An MCP policy that requires caller ownership for the first call is an additional client restriction. A QING event’s Username/Soul alone must not be treated as a signer-authentication proof.
The WITHOUT ban
Section titled “The WITHOUT ban”The shown check is WITHOUT.balanceOf(tx.origin) == 0. A balance on the LAU is not checked by this function, and the condition is a current balance check rather than a permanent account flag.
Location identifiers
Section titled “Location identifiers”Luo() evolves CHO reaction state, computes a nonzero unused value, and records it in Qu. It is owner-gated and stateful. It is not a fixed coordinate derived from a user’s wallet address.
Where it connects
Section titled “Where it connects”See CHO source and QING caller checks. Keep CHO’s cached User fields separate from the LAU’s current attributes; a username change does not itself rewrite an existing delegate record.