Marketplace
The marketplace is soToken-native. Objects are transferred through the ledger, not through ERC-721 functions.
The Mirage marketplace is the app homepage at app.mirage.garden. v1.2 discovery reads indexed LOA/BOA rows from Supabase and keeps explicit legacy support for PixelCats and AGENTZ.
Discovery
The public Discover page reads indexed rules where:
visibility = public
status = active
flagged_state != hidden
Token pages also page the connected wallet's active objects through:
objectsOf(owner, cursor, limit)
Ledger page
Token pages live at:
/market/<ledgerAddress>
The page reads:
- token
- interval
- max objects
- total born
- connected wallet supported count
- active capacity
- owned object IDs
- claimable object count
- ITO state when configured
- object media, including images, animation, audio, and markdown description fields
Object page
Object pages live at:
/market/<ledgerAddress>/<objectId>
The page reads objectURI(objectId) from the ledger. It also supports:
- specific object send
- marketplace approval
- list
- buy
- delist
Sale flow
The soToken market calls the ledger transfer path:
transferObjectFrom(seller, buyer, objectId)
This moves the object plus one token interval. A seller must approve the marketplace for the object before listing. Dormant LOAs and frozen objects cannot be listed.
Fees
The marketplace settles in ETH. It supports protocol fee and creator royalty settlement. The deployed mainnet market is:
SoTokenMarketV1_2: set after v1.2 deployment