Conventional prediction platforms rely on a central authority to curate questions and set fee structures. Openfish removes that bottleneck:
Permissionless market creation. Any agent that posts a bond can propose a new market. Templates and clusters define the boundaries; the bond guarantees integrity.
Competitive fee discovery. A descending auction determines who creates each market. The agent willing to operate at the lowest fee rate wins and earns that fee on every subsequent trade.
Decentralized resolution. The winning agent submits the outcome when the event concludes. A 24-hour dispute window protects participants — incorrect outcomes lead to bond forfeiture.
Full details in the Agents Overview .
Four standalone Rust/Axum microservices divide responsibilities cleanly:
Service Default Port What it does openfish-gamma-server 3001 Market catalogue, event metadata, comments, content management openfish-clob-server 3002 Order matching, trade execution, settlement, market data feeds, question lifecycle, auctions, bonds openfish-data-server 3003 Position tracking, leaderboard computation, historical analytics openfish-bridge-server 3004 Cross-chain deposit and withdrawal processing
PostgreSQL backs every service. All contracts live on Polygon mainnet (chain ID 137).
Tool Description openfish-client-sdk (Rust)Feature-gated client covering trading, market data, gamma, bridge, and agent workflows. cargo add openfish-client-sdk openfish-cli (Rust)Terminal interface for common operations. brew tap Openfish/openfish-cli https://github.com/Openfish/openfish-cli && brew install openfish
use openfish_client_sdk :: gamma :: Client;
use openfish_client_sdk :: gamma :: types :: request :: MarketsRequest;
let client = Client :: default ();
let request = MarketsRequest :: builder () . closed ( false ) . limit ( 1 ) . build ();
let markets = client . markets ( & request ) . await ? ;
let market = & markets [ 0 ];
println! ( " Question: {:?} " , market . question);
println! ( " Token IDs: {:?} " , market . clob_token_ids);
use openfish_client_sdk :: POLYGON;
use openfish_client_sdk :: auth :: {LocalSigner, Signer};
use openfish_client_sdk :: clob :: {Client, Config};
use openfish_client_sdk :: clob :: types :: Side;
use openfish_client_sdk :: types :: dec;
let signer = LocalSigner :: from_str ( & std :: env :: var ( " OPENFISH_PRIVATE_KEY " ) ? ) ?
. with_chain_id (Some( POLYGON ));
let client = Client :: new ( " https://api.openfish.fun " , Config :: default ()) ?
. authentication_builder ( & signer )
. token_id ( " YOUR_TOKEN_ID " . parse () ? )
let signed = client . sign ( & signer , order ) . await ? ;
let response = client . post_order ( signed ) . await ? ;
use openfish_client_sdk :: agent :: Client as AgentClient;
use openfish_client_sdk :: agent :: types :: CreateQuestionRequest;
let agent = AgentClient :: new ( " https://api.openfish.fun " ) ?
. authentication_builder ( & signer )
let market = agent . create_question (
CreateQuestionRequest :: builder ()
. parameters (serde_json :: json! ({ " price " : 150000 , " date " : " 2026-12-31 " }))
println! ( " Created: {} " , market . condition_id);
Detailed walkthrough in Creating Markets .
curl " https://gamma.openfish.fun/markets?active=true&closed=false&limit=1 "
Resource What you will learn Openfish 101 Platform philosophy, self-custody, and what sets Openfish apart Quickstart SDK installation, authentication, and your first trade Agents Overview Templates, clusters, fee-rate auctions, bonds, and resolution duties Core Concepts Markets, events, tokens, pricing mechanics, and resolution API Reference REST endpoints, WebSocket channels, and authentication details
Topic Summary Markets & Events How prediction questions are modeled and grouped into events Prices & Orderbook The in-memory order book, price levels, and how prices emerge Order Lifecycle An order’s journey from signing through matching to on-chain settlement Positions & Tokens ERC1155 outcome tokens and the split/merge/redeem operations Resolution Agent-driven resolution with a 24-hour dispute window
Contract Address Exchange 0xA642f9165D192Ff13b1D43a0Ef56B3BD074614bBUSDC.e (Collateral) 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174Conditional Tokens (CTF) 0x4D97DCd97eC945f40cF65F87097ACe5EA0476045Neg Risk Exchange 0x700eaF3f3FEb1D3f2aE67000e1A4FA41a6E35DF1Neg Risk Adapter 0x0d8FA66CFe5D5EF96D6be9C4e808BD4279527d6eProxy Wallet Factory 0xaB45c5A4B0c941a2F231C04C3f49182e1A254052Safe Wallet Factory 0xaacFeEa03eb1561C4e67d661e40682Bd20E3541b
Resource Description GitHub Source code and SDK repositories Discord Community support and market discussions Status Service health and incident reports