- Seer contracts:
seer-pm/demo/contracts/src, pinned at209c674. - Omen contracts:
gnosis/conditional-tokens-market-makers(the FPMM)gnosis/conditional-tokens-contractsRealityETH/reality-eth-monorepo- The Omen oracle adapter, verified source on Blockscout.
1. TL;DR
- Same foundations. Both run on Gnosis Conditional Tokens (CTF) plus Reality.eth. On Gnosis Chain they even share the same CTF contract. The oracle flow, bonds, arbitration and the CTF split/merge/redeem concepts all carry over.
- No market maker contract. Omen markets are FPMM contracts: you call
buyandsellon the market. Seer markets instead mint one ERC20 per outcome, and those tokens trade on external AMM pools (Swapr/Algebra and Uniswap). Your trade execution, price reading and bet sizing therefore have to be rewritten. - Invalid is a real token, and it wins alone. On Omen an invalid answer pays every outcome equally. On Seer only the
SER-INVALIDtoken pays; every other outcome goes to 0. - More market types. Seer adds multi-categorical, scalar, multi-scalar and conditional markets. Each has its own payout rule, so an agent that only outputs
p_yesisn’t enough. - Multi-chain. Seer is deployed on Gnosis, Ethereum, Optimism and Base. Omen was deployed on Ethereum mainnet and Gnosis Chain (xDai). Supporting Gnosis first is fine.
2. Concept mapping
3. The agent loop, step by step
4. Seer market types
Seer supports the six market types below. Omen only has the first one, and even that one resolves differently on Seer (the Invalid rule above). How payouts work. Payouts are computed inRealityProxy.sol. CTF then normalizes each payout vector by its sum, so a winning token redeems for payout_i / Σ payouts units of collateral.
Futarchy markets (
FutarchyFactory) are not covered in this guide.
Suggested rollout order, from least to most new work compared with Omen:
- Binary and categorical
- Conditional
- Scalar
- Multi-categorical
- Multi-scalar
5. Work items for the porting team
The sizes (S/M/L) are rough and assume the team already has a working Omen agent.6. Pitfalls when coming from Omen
- Holding Yes and No is not a hedge against Invalid. Only
SER-INVALIDpays on an invalid answer. Invalid results are rare but do happen. For example, Romania’s 2024 presidential election was annulled after the first round and rerun in May 2025 with a different set of candidates. The Seer market on the run-off (Georgescu vs Lasconi) resolved to Invalid: both candidate tokens paid 0 and onlySER-INVALIDpaid out. - Multi-categorical outcomes aren’t mutually exclusive. A token can win and still redeem for less than 1, because the payout is shared among all
kwinners. - Scalar and multi-scalar payouts are fractions, not 0 or 1. Bet-sizing formulas that assume a 0-or-1 payout don’t apply.
- Each outcome is a separate pool, so one outcome can be liquid while another has no pool at all. Check every token you plan to trade.
- Prices across outcomes can drift apart. Split and merge arbitrage keeps the full set near 1 collateral, but only loosely, so the implied Invalid price can be noisy or even negative.
- Conditional markets need the parent’s outcome token as collateral. A child market’s price is a conditional probability, not a joint one.
7. Prior art
prediction-market-agent-tooling runs a single agent pipeline on both Omen and Seer (Gnosis only). It is a useful reference for:
- The Omen trading functions:
omen_buy_outcome_tx_no_retryandomen_sell_outcome_tx. - Their Seer counterpart, which swaps on Swapr pools:
SwapPoolHandler.buy_or_sell_outcome_token. - Reading pool prices:
PriceManager. - Minting parent tokens for conditional markets:
mint_full_set.
8. References
- Seer contracts: https://github.com/seer-pm/demo/tree/main/contracts/src. Addresses per chain are at /developers/contracts/deployed-contracts.
- Seer developer docs:
-
Omen:
- FPMM: https://github.com/gnosis/conditional-tokens-market-makers
- Conditional Tokens: https://github.com/gnosis/conditional-tokens-contracts
- Reality.eth: https://github.com/RealityETH/reality-eth-monorepo
- Omen subgraph: https://github.com/protofire/omen-subgraph
- Frontend: https://github.com/protofire/omen-exchange
-
Gnosis Chain addresses: