ProtocolEnglish
Opening a market
Cost, review window, what lands on chain
Any profile in the catalogue without a market gets one when somebody opens it. That person becomes its creator, for life. One market per profile, ever.
Cost
| Creation fee | 10 USD, straight to the treasury, never into the reserve |
| First position | at least 1 USD of claims, same transaction |
| Trade fee on that position | 1 %, like every trade |
Both payments happen in one transaction. There is no path that creates a market without a position, and none that takes the first position without creating the market.
The 10 USD is the anti-squat defence. A market is a unique permanent seat carrying its creator's name, and payment replaces bureaucracy as the spam filter.
The creator is always the first buyer
createMarket deploys the market, pays the creation fee and executes the first buy in one atomic call. At the instant a market exists, its first position already belongs to its creator. Nobody front-runs the opening of a market they did not open.
That first position is the creator's real compensation. Fees are the small part. 10 USD placed on an empty curve is worth 13,288 USD once that market holds a 100,000 USD reserve, and 63,250 USD at 1,000,000 USD, several times over every creator fee that market will ever pay.
The review window
A market opened on a proposed profile enters the in_review state.
- The proposer pays the opening (10 USD plus the first position) at the moment they propose. They are the creator from the first second. There is no race with the next passer-by.
- The profile stays visible to its creator alone until review, for at most 24 hours.
- Accepted → the profile publishes and the market goes public.
- Refused → the profile is archived and a refund debt is recorded.
The order never inverts, for three reasons:
- A market created on chain is not erasable. Refusing after publication leaves real holders in front of a withdrawn page.
- Paying first removes the race, and the race is what made "who proposed it" worthless.
- A profile whose identity fails publication is refused before money changes hands (
IDENTITY_INCOMPLETE).
An opening that is never signed expires on its own and the name returns to the pool.
Identity requirements
A profile with incomplete identity does not publish, so it carries no public market. Complete means:
- Sport: first name, last name, date of birth, nationality.
- Every other universe (music, creators, founders, film & TV, fashion, gaming & esports, arts & letters): public name or handle, nationality, and at least one official link. First name, last name and date of birth are optional.
Incomplete profiles are archived, stay in the enrichment queue, and republish themselves the moment they complete. They are never deleted: deletion erases the provider id that stops the importer from creating a duplicate on the next run.
What lands on chain
createMarket(profileId, metadataHash, firstPositionClaims, maxFirstPositionCost, deadline)profileId:keccak256of the profile's catalogue UUID. It is also the CREATE2 salt, so a market's address is known before deployment (predictMarketAddress).metadataHash:keccak256of the profile's canonical metadata at opening. A fingerprint, not a pointer: it proves what the profile said when the market was born.- The market is an EIP-1167 clone of one implementation. Every market on a factory runs byte-identical code.
- The fee grid in force is copied into the clone and fixed there. Later grid changes reach future markets only.
MarketCreated is emitted before the first Bought, inside that single transaction. An indexer sees "the market exists", then "first purchase". The contract enforces this order.