Skip to main content

Deployed Contracts

The protocol runs on Sui mainnet as two Move packages and a set of shared objects. Every address below is permanent and verifiable on-chain.

All links open Suiscan — the block explorer for Sui.


Packages

Two packages compose the protocol. Package addresses never change — after an upgrade, Sui routes calls to the latest version automatically.

PackagePermanent addressCurrent version
mercatr0x4826a4d8…9a6f0xb66c98e7…6ec2
mercatr_market0xd3f040e1…d630x2139cdf6…7ca9

Both packages are at upgrade version 2.

Permanent address — the original package ID. Use it in Move calls and type references. It never changes.

Current version — the latest on-chain package object after upgrade. Sui creates a new one each time, but routes calls from the permanent address to the latest version automatically.

mercatr stores parcel geometry, validates shapes, and runs the overlap check. It knows nothing about money.

mercatr_market prices registrations and buyouts, routes payments, and enforces forced-sale mechanics. For the module graph and how these packages connect, see Architecture.


Market

The central shared object. Every registration, buyout, and tax collection reads and writes it.

Object ID0x54133dedf212704aaa9d13ee996fb33bb22306cfd0ecf28473471df5c8a8efc8
Typemercatr_market::market::Market

The Market holds the treasury, per-parcel pricing state, the level registry, and the two capabilities (TransferCap, LifecycleCap) that authorize buyouts and registrations. See Architecture → Market Object for the full field layout.


Spatial Indexes

Six shared Index objects — one per hierarchy level. Each Index stores all parcels at its geographic scale and runs the three-phase collision pipeline for new registrations.

RankLevelZoomObject ID
5Continent1–20x64dee18714d3b57bf3aa3760cf954afc7ea87c99b8da89cf4ab0656de2fbcd62
4Country3–50xe3be85b61aa5c3a54d25238e4946cb5f65bf162e517fd53107b12443e2f5d80e
3Region6–80xdca83f897b2f94dd42aa816fda70579b3cc30c7e2738f9a48284a9ace26427fc
2City9–110x8da55fe39065949d1ae81856ac4e8bb81a006a6218b2da46012b424c72189f61
1District12–140x98cd36d3fe07b5b54527d80ec93f3c6bfd916c3fe6e5576fe3536167ce6f012b
0Block15–220xe60aa995f92ab78ea6df30b6d65141af783980d295f7464f4326250af726ca5c

Zoom in on the map — the app switches between these Indexes automatically. Each level is an independent mercatr::index::Index shared object with its own cell_size, max_depth, and parcel count.


Boards

ObjectPurposeObject ID
MarkBoardParcel metadata display0x8772d6a5b519f70511d6443f98f57e7f3b7da5b0f66c7ab923aedabf8cf0bd8e
ProposalBoardPOI proposals0x725648b41b399dacbb8e7344484dcb66042f0eacf517279ffc988ce578c40c35

Admin Capabilities

These capabilities control upgrades, cap rotation, and emergency operations. They are held by the deploy multisig — no single key can act alone.

CapabilityObject ID
AdminCap0x46bb6d17ef58276001d4d2fdec4e77e0e7879fece177c0489d47ddc5cbae61a8
MarketAdminCap0x1837ee1c9b19ad4be2558c7fcf26b2c045f0ced188a6ebebd582d93e1d50b677
Protocol UpgradeCap0x51c36c47866cb3039d6ff3f3a30b214d15ca0f6c5b33aa5ac17db6f5a8ee4918
Market UpgradeCap0xb4cd2a6fdeff793ea527f933b9c4a1cc877b2aeef2a89097967caff910f9c66b
LifecycleCap0x9e9c3408f3ea1966af25e0981c959839c346813a76c096329cf2285891125af8
  • AdminCap — creates and configures Index objects, mints new capabilities, emergency parcel removal.
  • MarketAdminCap — pauses/unpauses the market, adjusts level pricing, manages tax configuration.
  • UpgradeCaps — authorize package upgrades under the compatible policy. One per package.
  • LifecycleCap — authorizes register, remove, and transfer_ownership. Stored inside the Market object and rotated after each upgrade.

See Treasury & Admin for what these capabilities allow and who controls them.


Tax Parameters

Tax is initialized and active. These parameters apply across all hierarchy levels.

ParameterValueMeaning
Bucket epochs7Tax accumulates in 7-epoch windows
Expiry epochs30Uncollected buckets expire after 30 epochs
Max collect batch20Up to 20 buckets per collect_tax call

See Tax for how cascading tax works and Fees for the payment split breakdown.


Verify On-Chain

Every object ID above links to Suiscan. Click any address to inspect fields, read state, and trace transaction history.

Query programmatically via the Sui CLI:

sui client object <OBJECT_ID> --json

Or use the JSON-RPC endpoint at https://fullnode.mainnet.sui.io:

curl -X POST https://fullnode.mainnet.sui.io -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"sui_getObject","params":["<OBJECT_ID>",{"showContent":true}]}'

See also: Architecture · API Reference · Hierarchy → Six Levels · How It Works