MAP¶
Overview¶
MAP is the geographic token registry that maps tokens to coordinates using the Hecke meridian system. It manages QING token creation and provides location-based lookup.
- Kind: Contract
- License: Sharia
- Solidity: ^0.8.21
- Source:
domain/map.sol
Inheritance Chain (C3 Linearized)¶
- self — MAP
- DYSNOMIA
- MultiOwnable
Immediate Parents¶
What This Means For Players¶
Plain English Summary: MAP is the game world map - it assigns locations to every token/venue in the game. Every QING (venue) has a unique position on the map, like a latitude and longitude. When you explore the game, you're navigating this map to find and visit different locations.
Real-World Analogy: Think of MAP like Google Maps for the Dysnomia game world. Every venue (QING) has a unique address on the map, and you can look up what's at any location. When someone creates a new venue, MAP assigns it a unique spot on the world grid.
How It Affects Your Gameplay: - Find venues - Use MAP to discover QINGs at specific coordinates - Wrap tokens - Any token can become a venue (QING) with a map location - Explore - Navigate the game world by coordinates - Forbidden tokens - Some tokens may be blocked from becoming venues
State Variables¶
| Variable | Type | Visibility | Mutability | Initial Value | NatSpec |
|---|---|---|---|---|---|
Type |
string |
public | constant | MAP |
|
Cho |
CHOINTERFACE |
public | mutable | `` | |
Map |
HECKE |
public | mutable | `` | |
Offset |
uint256 |
public | mutable | `` | |
_qings |
mapping(address => address) |
private | mutable | `` | |
_waats |
mapping(uint256 => QING) |
private | mutable | `` | |
_forbidden |
mapping(address => bool) |
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 |
|---|---|---|
NotOwner |
address what, address who | |
QingAlreadyExists |
address Token, address Qing | |
DerivativeQing |
address Integrative, uint256 Waat | |
ForbiddenToken |
address which |
Constructor¶
constructor¶
constructor(address ChoAddress, address HeckeAddress) DYSNOMIA("Dysnomia Map", "MAP", address(DYSNOMIA(ChoAddress).Xiao()))
- Modifiers:
DYSNOMIA("Dysnomia Map", "MAP", address(DYSNOMIA(ChoAddress).Xiao())) - Parameters: address ChoAddress, address HeckeAddress
Functions¶
External & Public¶
GetMapQing¶
- Visibility: public
- State Mutability: view
- Parameters: int256 Latitude, int256 Longitude
- Returns: QINGINTERFACE
hasOwner¶
- Visibility: public
- State Mutability: view
- Parameters: address _contract
- Returns: bool does
has¶
- Visibility: public
- State Mutability: view
- Parameters: address _contract, string memory what
- Returns: bool does
Forbidden¶
- Visibility: public
- State Mutability: view
- Parameters: address Asset
- Returns: bool
Forbid¶
- Visibility: public
- Parameters: address Token, bool Disallow
GetQing¶
- Visibility: public
- State Mutability: view
- Parameters: uint256 Waat
- Returns: QING
New¶
- Visibility: public
- Parameters: address Integrative
- 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¶
Depended On By¶
Special Mechanisms¶
QING Creation¶
function New(address Integrative) public returns(QING Mu) {
// Check not already wrapped
if(_qings[Integrative] != address(0x0)) revert QingAlreadyExists(...);
// Check not forbidden
if(_forbidden[Integrative]) revert ForbiddenToken(Integrative);
// Check not already a QING
if(has(Integrative, "Waat()")) revert DerivativeQing(...);
// Generate unique Waat
Luo = Cho.Luo() * Offset;
// Create QING
Mu = new QING(Luo, Integrative, address(Cho));
// Copy ownership and name
if(has(Integrative, "owner()")) Mu.addOwner(Asset.owner());
if(has(Integrative, "name()") && has(Integrative, "symbol()"))
Mu.Rename(Asset.name() + " QING", "q" + Asset.symbol());
// Register
_qings[Integrative] = address(Mu);
_waats[Luo] = Mu;
addToMap(Luo, address(Mu));
}
WITHOUT Token Ban¶
Holders of the WITHOUT token are automatically forbidden from all operations:
Geographic Registration¶
function addToMap(uint256 Waat, address Qing) internal {
(int256 Longitude, int256 Latitude) = Map.Compliment(Waat);
assert(_map[Latitude][Longitude] == address(0x0));
_map[Latitude][Longitude] = Qing;
}
Compiled ABI¶
The compiled ABI below is produced by solc 0.8.21 from the exact source bytes hashed in the Contract Verification section. Consumers can paste it directly into ethers/web3/viem.
Click to expand JSON ABI
[
{
"inputs": [
{
"internalType": "address",
"name": "ChoAddress",
"type": "address"
},
{
"internalType": "address",
"name": "HeckeAddress",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "Integrative",
"type": "address"
},
{
"internalType": "uint256",
"name": "Waat",
"type": "uint256"
}
],
"name": "DerivativeQing",
"type": "error"
},
{
"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": "what",
"type": "address"
},
{
"internalType": "address",
"name": "who",
"type": "address"
}
],
"name": "NotOwner",
"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": "address",
"name": "Token",
"type": "address"
},
{
"internalType": "address",
"name": "Qing",
"type": "address"
}
],
"name": "QingAlreadyExists",
"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": [],
"name": "Cho",
"outputs": [
{
"internalType": "contract CHOINTERFACE",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "Token",
"type": "address"
},
{
"internalType": "bool",
"name": "Disallow",
"type": "bool"
}
],
"name": "Forbid",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "Asset",
"type": "address"
}
],
"name": "Forbidden",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "int256",
"name": "Latitude",
"type": "int256"
},
{
"internalType": "int256",
"name": "Longitude",
"type": "int256"
}
],
"name": "GetMapQing",
"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": "uint256",
"name": "Waat",
"type": "uint256"
}
],
"name": "GetQing",
"outputs": [
{
"internalType": "contract QING",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "Map",
"outputs": [
{
"internalType": "contract HECKE",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MotzkinPrime",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "Integrative",
"type": "address"
}
],
"name": "New",
"outputs": [
{
"internalType": "contract QING",
"name": "Mu",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "Offset",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"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": "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": [
{
"internalType": "address",
"name": "_contract",
"type": "address"
},
{
"internalType": "string",
"name": "what",
"type": "string"
}
],
"name": "has",
"outputs": [
{
"internalType": "bool",
"name": "does",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_contract",
"type": "address"
}
],
"name": "hasOwner",
"outputs": [
{
"internalType": "bool",
"name": "does",
"type": "bool"
}
],
"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"
}
]
Contract Verification¶
| Property | Value |
|---|---|
| Keccak256 Hash | 0x05d26d96111aa3a1eb6ece52243ede25e33939b6cb23cc2d31ab8c8acc0df830 |
| Source URL | https://raw.githubusercontent.com/busytoby/atropa_pulsechain/main/solidity/dysnomia/domain/map.sol |
| Hash Generated | 2026-04-20T02:38:22Z |