Skip to content
Technical Reference

GWAT

Contract addressNot currently resolved
Hash-verified 0xbda02dc6…aa688c
Source details
Property Value
Keccak256 Hash 0xbda02dc6dc9bcc6bdc2a5ad5bb10d0e2d93d50eb49e80f3460b6d63ba8aa688c
Source URL https://raw.githubusercontent.com/busytoby/atropa_pulsechain/58607494f7741b80525953e4a85bc99e66fd20fc/solidity/dysnomia/domain/soeng/07_gwat.sol
Source Revision 58607494f7741b80525953e4a85bc99e66fd20fc
Source Status Canonical source snapshot; deployed bytecode equivalence is only established where a deployment record says so.
Compiler solc 0.8.21; optimizer enabled with 200 runs
Compiler Configuration {"evmVersion":"compiler-default","optimizer":{"enabled":true,"runs":200},"version":"0.8.21+commit.d9974bed.Linux.g++"}
Compilation Closure Hash 0x9f129316491c97ab5f6bd7f2239a9c392abc1db92815d706bbe9749bc230b42e
Compilation Closure Files 44
Hash Generated 2026-09-14T19:34:04Z

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

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
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 ``
Event Parameters Anonymous NatSpec
NewQing address Qing, address Integrative, uint256 Waat no
Error Parameters NatSpec
YourGwatAlreadyExists address Token, address Qing
ForbiddenToken address which
SpawningFailure uint256 Lin
constructorconstructor
constructor(address WarAddress) DYSNOMIA(unicode"骨", "GWAT", address(DYSNOMIA(WarAddress).Xiao()))
  • Modifiers: DYSNOMIA(unicode"骨", "GWAT", address(DYSNOMIA(WarAddress).Xiao()))
  • Parameters: address WarAddress
GetMapGwatfunction
function GetMapGwat(int256 Latitude, int256 Longitude) public view returns (QINGINTERFACE)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • State Mutability: view
  • Parameters: int256 Latitude, int256 Longitude
  • Returns: QINGINTERFACE
Gwatfunction
function Gwat(address Qing, uint256 Lin) public returns (QING Mu)

A callable deployment has not been resolved for this reference.

  • Visibility: public
  • Parameters: address Qing, uint256 Lin
  • Returns: QING Mu
addToMapfunction
function addToMap(uint256 Waat, address Qing) internal
  • Visibility: internal
  • Parameters: uint256 Waat, address Qing

This contract inherits the members below from its parents. See each parent’s dedicated MD for full signatures, NatSpec, and semantics.

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

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)
  • QING - GWAT instances (QING with GWAT=true)
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));
}
  • Has GWAT=true (Luo not divisible by offset)
  • Named with username prefix
  • Symbol prefixed with 骨
  • Personal to each player’s YUE





Inherited functions and getters (23)
GWAT.GetMarketRate(address _a)Read

A callable deployment has not been resolved for this reference.

GWAT.MotzkinPrime()Read

A callable deployment has not been resolved for this reference.

GWAT.Purchase(address _t, uint256 _a)Simulate / call

A callable deployment has not been resolved for this reference.

GWAT.Redeem(address _t, uint256 _a)Simulate / call

A callable deployment has not been resolved for this reference.

GWAT.Rename(string newName, string newSymbol)Simulate / call

A callable deployment has not been resolved for this reference.

GWAT.Type()Read

A callable deployment has not been resolved for this reference.

GWAT.War()Read

A callable deployment has not been resolved for this reference.

GWAT.Xiao()Read

A callable deployment has not been resolved for this reference.

GWAT.addOwner(address newOwner)Simulate / call

A callable deployment has not been resolved for this reference.

GWAT.allowance(address owner, address spender)Read

A callable deployment has not been resolved for this reference.

GWAT.approve(address spender, uint256 value)Simulate / call

A callable deployment has not been resolved for this reference.

GWAT.balanceOf(address account)Read

A callable deployment has not been resolved for this reference.

GWAT.decimals()Read

A callable deployment has not been resolved for this reference.

GWAT.maxSupply()Read

A callable deployment has not been resolved for this reference.

GWAT.mintToCap()Simulate / call

A callable deployment has not been resolved for this reference.

GWAT.name()Read

A callable deployment has not been resolved for this reference.

GWAT.owner(address cOwner)Read

A callable deployment has not been resolved for this reference.

GWAT.owner()Read

A callable deployment has not been resolved for this reference.

GWAT.renounceOwnership(address toRemove)Simulate / call

A callable deployment has not been resolved for this reference.

GWAT.symbol()Read

A callable deployment has not been resolved for this reference.

GWAT.totalSupply()Read

A callable deployment has not been resolved for this reference.

GWAT.transfer(address to, uint256 value)Simulate / call

A callable deployment has not been resolved for this reference.

GWAT.transferFrom(address from, address to, uint256 value)Simulate / call

A callable deployment has not been resolved for this reference.

The compiled ABI below is produced by solc 0.8.21 from the exact source bytes recorded in Source details. Consumers can paste it directly into ethers/web3/viem.

Click to expand JSON ABI
[
{
"inputs": [
{
"internalType": "address",
"name": "WarAddress",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "origin",
"type": "address"
},
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "address",
"name": "what",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "DysnomiaInsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "origin",
"type": "address"
},
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "address",
"name": "what",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "DysnomiaInsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "which",
"type": "address"
}
],
"name": "ForbiddenToken",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
}
],
"name": "MarketRateNotFound",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "origin",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "what",
"type": "address"
}
],
"name": "OwnableInvalidOwner",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "origin",
"type": "address"
},
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "address",
"name": "what",
"type": "address"
}
],
"name": "OwnableUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "Lin",
"type": "uint256"
}
],
"name": "SpawningFailure",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "Token",
"type": "address"
},
{
"internalType": "address",
"name": "Qing",
"type": "address"
}
],
"name": "YourGwatAlreadyExists",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "Qing",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "Integrative",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "Waat",
"type": "uint256"
}
],
"name": "NewQing",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "bool",
"name": "state",
"type": "bool"
}
],
"name": "OwnershipUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "int256",
"name": "Latitude",
"type": "int256"
},
{
"internalType": "int256",
"name": "Longitude",
"type": "int256"
}
],
"name": "GetMapGwat",
"outputs": [
{
"internalType": "contract QINGINTERFACE",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_a",
"type": "address"
}
],
"name": "GetMarketRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "Qing",
"type": "address"
},
{
"internalType": "uint256",
"name": "Lin",
"type": "uint256"
}
],
"name": "Gwat",
"outputs": [
{
"internalType": "contract QING",
"name": "Mu",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "MotzkinPrime",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_t",
"type": "address"
},
{
"internalType": "uint256",
"name": "_a",
"type": "uint256"
}
],
"name": "Purchase",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_t",
"type": "address"
},
{
"internalType": "uint256",
"name": "_a",
"type": "uint256"
}
],
"name": "Redeem",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "newName",
"type": "string"
},
{
"internalType": "string",
"name": "newSymbol",
"type": "string"
}
],
"name": "Rename",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "Type",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "War",
"outputs": [
{
"internalType": "contract WARINTERFACE",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "Xiao",
"outputs": [
{
"internalType": "contract atropaMath",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "addOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mintToCap",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "cOwner",
"type": "address"
}
],
"name": "owner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "toRemove",
"type": "address"
}
],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]