Updated Nov 5, 2026
The market contracts
Every Ultramint market is a smart contract on Base. The contracts are called Strata. They set prices, hold the money, record the result and pay out. You can check all of it on-chain.
One contract design for every market
Every market is a copy of the same fixed contract. Yes/No markets, multi-outcome markets and Combos all run on it, with different settings. Once a market is created, its contract can't be changed.
How prices work
There's no order book and no one on the other side of your trade. You buy from the market itself, so there's always a price.
- A price is a probability. An outcome at 42¢ has about a 42% chance, in the market's view. All outcomes add up to 100%.
- Buying moves the price. Each share you buy pushes that outcome up and the others down. A bigger Buy pays a higher average price.
- Depth grows with trading. A new market opens with the depth its seed pays for. As people buy, it gets deeper and each Buy moves the price less.
- Every market opens even. A Yes/No market opens at 50¢ each. A three-outcome market opens at about 33¢ each. A creator can't tilt the opening price.
This pricing model is called LS-LMSR, a liquidity-sensitive logarithmic market scoring rule. It's a well-studied way for a market to price outcomes on its own, deepening as more money comes in.
See Fees in plain words for the spread built into each price.
Buy and hold
Money goes into a market when you buy and comes out only as a winning payout or a refund. There's no selling and no secondary market.
The money people buy with backs every winning share. The market doesn't rely on anyone else's capital to pay winners.
Gasless
You never need ETH. When you buy, you sign an approval in your wallet, and Ultramint's relay submits it and pays the gas. The same goes for claims, challenges and minting.
The relay can only submit what you signed. Your signature covers the exact market, outcome, amount and minimum shares, so the relay can't change them or send your money anywhere else. Approvals expire and can't be reused.
Resolution on-chain
When Fermah Kernel reaches a result, it's posted to the market's contract. The challenge window runs on-chain, and the result is final only when it closes. Payouts follow the contract's own rules. See How markets resolve.
Audit status
Hexens audited the market contracts. The report is coming soon.
Contract addresses
All contracts are on Base (chain ID 8453). Each address links to Basescan.
Markets
| Contract | Address | What it does |
|---|---|---|
| Market factory | 0x51179033557503024263A9482A2f62B1Aa287fdc |
Creates markets as copies of the three market contracts below. |
| Market: Yes/No and multi-outcome | 0x3DeCc0b22DdA87cA25d58e081dc325329F3B3685 |
The contract a Yes/No or multi-outcome market copies. |
| Market: range | 0x62C3113E5d07d9Aaa5Af45667A1A00E3cd911193 |
The contract a market on a number range copies. |
| Market: Combo | 0xa0dad1B8828CC92fe16CD01973386c9C1D5878a4 |
The contract a Combo copies. |
| LS-LMSR pricing | 0xab46f8D0dD500A9818770197aA357aBFBb2A4232 |
The pricing math every market uses. |
| Market settlement | 0x5006e674009EeEdee20e01bD2aDBDAF89ed4BCDE |
The claims and payout logic every market runs after trading ends. |
| USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
Circle's native USDC on Base, the only currency markets accept. |
Resolution
| Contract | Address | What it does |
|---|---|---|
| Dispute resolver | 0xe6d588B88e5117CEb75bA782b63EA9DB6f67Fb87 |
Posts Fermah Kernel's result to a public market and runs its challenge window. |
| Resolver | 0xBBf9500696Aa7960fa41BE377DE5FB18e16C8b0C |
Reports a result straight to a market, with no challenge window. |
| Creator resolver factory | 0xd52a5CE9DFDA3905bfE0bdc19B2aaf31B7936172 |
Creates the resolver a creator uses to report the result of a Members only market. |
| Resolution fee config | 0x6d6D16ebeE9AC612Ac98d124c3B3C3945CdedAd2 |
Sets the resolution fee charged when a market Fermah Kernel resolves is created. |
| Vault registry | 0x815A99a146DF364CcD5b7e3e243B674E984D1638 |
Lists the yield vaults a market may use. |
Accounts and promotions
| Contract | Address | What it does |
|---|---|---|
| Account module | 0xC643c0183d40E7457C86649EbE708911eF4DEa70 |
Carries out what you sign for your Ultramint account. |
| Account guard | 0x1da7Bf2cE1129313b6c2feEd2B4a4720dc972e7b |
Lets your account act only through the account module and upgrader, and checks where each call goes. |
| Account setup | 0x9f8aF0f152e0556f7b0E39d46b269506af6EAEEe |
Puts the guard on a new account in the same transaction that creates it. |
| Account policy | 0x3c75998C5E30CFe56e18Efa220cded43C4D21826 |
The limits and allowed contracts every Ultramint account follows. They can be tuned within fixed bounds, never removed. |
| Account upgrader | 0x19E0BbEFA93C5C8e65F9C8C8D667C6ca6f3Dde2f |
Moves an account to a newer listed release, only when its owner signs for it and after a waiting period. |
| Bonus Buy factory | 0x5e7350208882ecf17B289D6c099a5Ef6947040c9 |
Places Buys paid with bonus. |
Governance
| Contract | Address | What it does |
|---|---|---|
| Core timelock | 0x1590787712c77dcc59BE50e44C192418027c484F |
Owns the resolution contracts above. Any change to them is public for at least 6 hours before it can take effect. |
| Account policy timelock | 0x7D5a2BCa2E6169681CfeF131ABf76EdC9285B715 |
Owns the account policy. Any change to it is public for at least 24 hours first. |
| Ultramint Safe | 0x045DC3232708559E0F22431066fF5263414Ad14d |
A 2-of-3 multisig. It proposes changes to both timelocks and owns the Bonus Buy factory. |
Check it yourself
Later. A step-by-step guide to verifying a market on-chain.
Did this not answer it? Contact support.