Player's Guide

MultiOwnable — Shared Control

Last updated:

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.

MultiOwnable stores a set of authorized addresses. There is no primary-owner hierarchy in the pinned source. owner(address) checks one candidate; _checkOwner accepts either msg.sender or tx.origin when that address is in the set.

Use owner(address) to check authority and ordered OwnershipUpdate logs to reconstruct membership. An existing owner can add an owner or remove a specified owner. Removing the final owner can leave the protected methods inaccessible.

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.owner(address cOwner)Read

Open this function to load its call form.

QINGResolve your player or venue above the call forms.
QING.owner(address cOwner)Read

Open this function to load its call form.

The pinned owner() returns address(this) rather than a human administrator. It is not an owner-list accessor. Verify that the getter exists on the selected deployed contract, then use owner(address) to check a specific owner.

Staff, bouncer status, ERC-20 holdings, YUE Origin and MultiOwnable membership are separate permissions. Owning a LAU does not automatically make its wallet an owner of another contract owned by that LAU. Origin-based authorization also means an intermediary can reach an owner gate when an authorized EOA initiated the transaction; it is not a requirement for an additional signature from every owner.

MultiOwnable source and MAP ownership behavior.