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.
| Package | Permanent address | Current version |
|---|---|---|
mercatr | 0x4826a4d8…9a6f | 0xb66c98e7…6ec2 |
mercatr_market | 0xd3f040e1…d63 | 0x2139cdf6…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 ID | 0x54133dedf212704aaa9d13ee996fb33bb22306cfd0ecf28473471df5c8a8efc8 |
| Type | mercatr_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.
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
| Object | Purpose | Object ID |
|---|---|---|
| MarkBoard | Parcel metadata display | 0x8772d6a5b519f70511d6443f98f57e7f3b7da5b0f66c7ab923aedabf8cf0bd8e |
| ProposalBoard | POI proposals | 0x725648b41b399dacbb8e7344484dcb66042f0eacf517279ffc988ce578c40c35 |
Admin Capabilities
These capabilities control upgrades, cap rotation, and emergency operations. They are held by the deploy multisig — no single key can act alone.
| Capability | Object ID |
|---|---|
| AdminCap | 0x46bb6d17ef58276001d4d2fdec4e77e0e7879fece177c0489d47ddc5cbae61a8 |
| MarketAdminCap | 0x1837ee1c9b19ad4be2558c7fcf26b2c045f0ced188a6ebebd582d93e1d50b677 |
| Protocol UpgradeCap | 0x51c36c47866cb3039d6ff3f3a30b214d15ca0f6c5b33aa5ac17db6f5a8ee4918 |
| Market UpgradeCap | 0xb4cd2a6fdeff793ea527f933b9c4a1cc877b2aeef2a89097967caff910f9c66b |
| LifecycleCap | 0x9e9c3408f3ea1966af25e0981c959839c346813a76c096329cf2285891125af8 |
- 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
compatiblepolicy. One per package. - LifecycleCap — authorizes
register,remove, andtransfer_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.
| Parameter | Value | Meaning |
|---|---|---|
| Bucket epochs | 7 | Tax accumulates in 7-epoch windows |
| Expiry epochs | 30 | Uncollected buckets expire after 30 epochs |
| Max collect batch | 20 | Up 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