Skip to content
Player's Guide

MAP — The World Map

One-line pitch: MAP is the registry that places every venue (QING) somewhere on the world grid.

MAP is the game’s spatial index. Every QING has a unique coordinate on the world, computed via the Hecke Meridians math library. MAP is what knows:

  • “Given these coordinates, what QING (if any) lives here?”
  • “Given this token, what QING wraps it?”
  • “Is this token forbidden from ever becoming a venue?”

When someone wraps a token as a QING for the first time, MAP assigns it a position and emits a NewQing event. Explorers, wallets, and indexers subscribe to that event to draw the world.

  • Closest analogy: the parcel registry in Decentraland or The Sandbox — every piece of virtual land has coordinates and an owner.
  • Or: a graph database indexed by (x, y) — lookups by position and by owning token are both cheap.
  • Or: DNS for venues — maps structured addresses to contract addresses.
Dysnomia term What it maps to
Waat A venue’s unique position / coordinate hash
Offset Global map offset constant (used when deriving Waat)
NewQing Event emitted when a new venue is registered
Forbidden Token blacklist — these tokens can never be wrapped as QINGs
  • Browse venues — read MAP events to discover what QINGs exist and where.
  • Wrap a token as a venue — call New(tokenAddress) and MAP will deploy a fresh QING at an assigned Waat (and the QING becomes discoverable at that spot).
  • Look up a venueGetQing(Waat) resolves a venue by its Waat. Use GetMapQing(latitude, longitude) for a coordinate lookup.
  • Look up a location — check what QING lives at a given Waat.

Use these calls here. Simulations preview the current state; each confirmed call is a separate transaction.

MAP0xD3a7A95012Edd46Ea115c693B74c5e524b3DdA75
MAP.New(address Integrative)Simulate / call

Open this function to load its call form.

MAP.GetQing(uint256 Waat)Read

Open this function to load its call form.

MAP.GetMapQing(int256 Latitude, int256 Longitude)Read

Open this function to load its call form.

MAP.Forbidden(address Asset)Read

Open this function to load its call form.

  • Cost: gas for New is large — you’re deploying a new QING contract. One-time cost.
  • Result: the transaction origin becomes initial QING staff and can configure bouncer-controlled settings. QING ownership is wired separately from staff status.
  • The token must not already have a QING on MAP (prevents duplicates).
  • The token must not be on the forbidden list.
  • You must not yourself be banned by CHO (no WITHOUT holdings).

MAP creates QINGs. MAP consults CHO for player auth and token-owner lookups. MAP delegates coordinate math to the Hecke library. WORLD reads MAP to validate territory claims are actually “near” a known QING.

Q: How are coordinates assigned? A: Hecke math. The token address and the Offset constant hash into a unique (latitude, longitude). Same token always lands at the same spot, and no two tokens collide.

Q: Can I pick my own coordinates? A: No — coordinates are deterministic from the token address. If you want a specific spot, you’d need to mine addresses.

Q: What about derivative (GWAT) venues? Do they also use MAP? A: GWAT maintains its own coordinate registry for personal derivatives, independent of MAP. Check GWAT’s docs for that flow.

Q: Can a token appear on MAP twice? A: No. Second attempt reverts QingAlreadyExists. One QING per token, globally.

Q: What does “forbidden” mean? A: Forbid(token, state) checks ownership of the supplied token. An owner of that token can change its forbidden state; owning MAP is not the relevant player permission.

Q: Must I own a token before calling New? A: No. The deployed function does not perform a token-owner check. It rejects duplicates, derivative QING assets and forbidden tokens, and the transaction origin becomes initial staff of the new QING.


Want the Solidity? The contract reference lives at technical/docs/domain/MAP.md.