GWAT¶
Overview¶
GWAT is the seventh and final contract in the soeng chain. It creates derivative QINGs (also called GWATs) that are personal variations of existing QINGs.
- Kind: Contract
- License: Sharia
- Solidity: ^0.8.21
- Source:
domain/soeng/07_gwat.sol
Inheritance Chain (C3 Linearized)¶
- self — GWAT
- DYSNOMIA
- MultiOwnable
Immediate Parents¶
What This Means For Players¶
Plain English Summary: GWAT lets you create your own personal venue derived from an existing QING. It's like opening a franchise of your favorite club - you get your own version with your name on it. Each player can have one GWAT per parent QING.
Real-World Analogy: Imagine your favorite coffee shop lets you open a franchise location with your name on it (e.g., "Alice's Starbucks"). That's what GWAT does - you take an existing venue (QING) and create a personalized spinoff (GWAT) that you own and control. Your GWAT even gets a special symbol with 骨 (bone) prefix.
How It Affects Your Gameplay: - Personal venues - Create your own derivative QING with your username - Unique positions - Each GWAT gets its own spot on the world map - Token rewards - Creating a GWAT mints tokens to you - One per parent - You can only have one GWAT per original QING per YUE
State Variables¶
| Variable | Type | Visibility | Mutability | Initial Value | NatSpec |
|---|---|---|---|---|---|
Type |
string |
public | constant | GWAT |
|
War |
WARINTERFACE |
public | mutable | `` | |
_qings |
mapping(address => mapping(address => address)) |
private | mutable | `` | |
_waats |
mapping(uint256 => address) |
private | mutable | `` | |
_map |
mapping(int256 => mapping(int256 => address)) |
private | mutable | `` |
Events¶
| Event | Parameters | Anonymous | NatSpec |
|---|---|---|---|
NewQing |
address Qing, address Integrative, uint256 Waat | no |
Errors¶
| Error | Parameters | NatSpec |
|---|---|---|
YourGwatAlreadyExists |
address Token, address Qing | |
ForbiddenToken |
address which | |
SpawningFailure |
uint256 Lin |
Constructor¶
constructor¶
- Modifiers:
DYSNOMIA(unicode"骨",, WAT",, dress(DYSNOMIA(WarAddress).Xiao()))) - Parameters: address WarAddress
Functions¶
External & Public¶
GetMapGwat¶
- Visibility: public
- State Mutability: view
- Parameters: int256 Latitude, int256 Longitude
- Returns: QINGINTERFACE
Gwat¶
- Visibility: public
- Parameters: address Qing, uint256 Lin
- Returns: QING Mu
Internal¶
addToMap¶
- Visibility: internal
- Parameters: uint256 Waat, address Qing
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 virtual 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 |
|---|---|
_addLibraryOwner |
function _addLibraryOwner(VOID Void, string memory what) internal |
_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 |
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¶
- DYSNOMIA V2 - Base functionality
- WAR - Faa calculation
Creates¶
- QING - GWAT instances (QING with GWAT=true)
Special Mechanisms¶
GWAT Creation¶
function Gwat(address Qing, uint256 Lin) public returns (QING Mu) {
// Get player
(YUEINTERFACE Chi, LAU UserToken) = War.World().Cheon().Sei().Chi();
QING Integrative = QING(Qing);
// Verify parent QING
assert(Qing == address(War.World().Map().GetQing(Integrative.Waat())));
// Check not already created
if(_qings[Qing][address(Chi)] != address(0x0))
revert YourGwatAlreadyExists(Qing, _qings[Qing][address(Chi)]);
// Check not forbidden
if(War.World().Map().Forbidden(address(Integrative.Asset())))
revert ForbiddenToken(address(Integrative.Asset()));
// Get Luo from WAR
uint256 Luo = War.Faa(Qing, Lin);
if(Luo % War.World().Map().Offset() == 0 || _waats[Luo] != address(0x0))
revert SpawningFailure(Lin);
// Create GWAT
Mu = new QING(Luo, Qing, address(War.World().Map().Cho()));
// Name it: "Username's Asset GWAT"
Mu.Rename(
string.concat(UserToken.Username(), "'s ", Integrative.Asset().name(), " GWAT"),
string.concat(unicode"骨", Integrative.Asset().symbol())
);
// Configure ownership
War.World().Map().Cho().addOwner(address(Mu));
Mu.addOwner(address(War.World().Map().Cho()));
Mu.addOwner(msg.sender);
// Mint tokens to creator
_mint(msg.sender, Mu.maxSupply() * 10 ** decimals());
// Set rate and register
Mu.AddMarketRate(Qing, 1 * 10 ** decimals());
Mu.renounceOwnership(address(this));
_qings[Qing][address(Chi)] = address(Mu);
_waats[Luo] = address(Mu);
addToMap(Luo, address(Mu));
}
GWAT Properties¶
- Has
GWAT=true(Luo not divisible by offset) - Named with username prefix
- Symbol prefixed with 骨
- Personal to each player's YUE
Contract Verification¶
| Property | Value |
|---|---|
| Keccak256 Hash | 0xbda02dc6dc9bcc6bdc2a5ad5bb10d0e2d93d50eb49e80f3460b6d63ba8aa688c |
| Source URL | https://raw.githubusercontent.com/busytoby/atropa_pulsechain/main/solidity/dysnomia/domain/soeng/07_gwat.sol |
| Hash Generated | 2026-04-17T20:48:13Z |