Skip to content

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.

Inheritance Chain (C3 Linearized)

  1. selfGWAT
  2. DYSNOMIA
  3. 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

constructor(address WarAddress) DYSNOMIA(unicode"骨",, WAT",, dress(DYSNOMIA(WarAddress).Xiao())))
  • Modifiers: DYSNOMIA(unicode"骨",, WAT",, dress(DYSNOMIA(WarAddress).Xiao())))
  • Parameters: address WarAddress

Functions

External & Public

GetMapGwat

function GetMapGwat(int256 Latitude, int256 Longitude) public view returns (QINGINTERFACE)
  • Visibility: public
  • State Mutability: view
  • Parameters: int256 Latitude, int256 Longitude
  • Returns: QINGINTERFACE

Gwat

function Gwat(address Qing, uint256 Lin) public returns (QING Mu)
  • Visibility: public
  • Parameters: address Qing, uint256 Lin
  • Returns: QING Mu

Internal

addToMap

function addToMap(uint256 Waat, address Qing) internal
  • 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

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