Skip to content

Flutter Web App

The Arenaton Flutter app is the user-facing exchange client for production web, paper web, and later Android releases. It should present the same Market, Outcome Share, Collateral, account, and safety language as the public docs.

AreaResponsibility
Market browseShow production or paper Markets with clear environment labeling.
Market detailShow rules, resolution source, order book, trades, and Live State Version.
Order entrySign EIP-712 orders with Smart Account or Raw EOA Mode.
Paper TradingClaim PaperUSDC, place paper orders, watch settlement, resolve, and redeem.
PortfolioShow confirmed positions, pending fills, fills, orders, and redeemable Markets.
Wallet/accountSupport user-controlled accounts and explicit signing modes.
LocalizationUse reviewed locale files for supported languages.
EnvironmentChainPublic hostRegistry
paperPolygon Amoy 80002https://paper.arenaton.com/api/paper/contract-registry
productionPolygon PoS 137https://app.arenaton.com/api/contract-registry

Production builds must refuse Amoy signing. Paper builds must refuse Polygon mainnet signing.

Flutter paper app
-> GET /api/paper/markets
-> POST /api/paper/faucet/claim
-> sign EIP-712 ArenatonOrder
-> POST /api/paper/orders
-> WS /api/paper/ws
-> portfolio and redemption views

Expected paper WebSocket event families:

paper_market_book
paper_matched_pending_fill
paper_settlement_confirmed
paper_account_positions
paper_market_lifecycle
paper_redemption_confirmed
paper_market_live_state
paper_status

Flutter order signing must stay byte-compatible with Go validation and settlement-contract verification.

Read EIP-712 Order Format for the typed data fields. The app should always populate:

  • chain ID from the selected registry,
  • verifying contract from the selected registry,
  • collateral token from the Market,
  • current Live State Version from the Market detail response,
  • account mode as Smart Account or Raw EOA Mode.
  • Show the selected environment in paper builds.
  • Never label PaperUSDC as real USDC.
  • Show pending fills separately from confirmed Outcome Shares.
  • Show redeemable Markets only after final resolution.
  • Preserve direct redemption paths where rules permit.
  • Keep risk copy visible: prediction markets involve risk of loss and may not be available everywhere.

New copy should go through Flutter localization files instead of hard-coded English strings. Priority languages include English, Spanish, Portuguese, French, German, Italian, Japanese, Korean, Chinese, Arabic, Hindi, Indonesian, Turkish, Vietnamese, Thai, Filipino, Polish, Dutch, and Russian.