Polytraders Dev Guide
internal
v3 spine Phase 1 · Shared contracts 9 demo-wired · 0 shadow-ready · 0 production-live · 100 pending · 109 total 15/33 infra tasks the plan status board

← Principles & schemas

Polymarket V2 — what changed

The full delta from V1 to V2, with the implications for every layer of the Polytraders stack. V1 was removed from production on Apr 28, 2026; this page is now historical reference for migration audits.

The seven big changes

AreaV1V2
SDK@polymarket/clob-client / py-clob-client@polymarket/clob-client-v2 / py-clob-client-v2
CollateralUSDC.e (bridged USDC)pUSD (USDC-backed standard ERC-20)
Order fieldsnonce, feeRateBps, takertimestamp (ms) + metadata (bytes32) + builder (bytes32)
FeesEmbedded in the signed orderOperator-set at match time, not on the signed order
EIP-712 Exchange domain version"1""2" (ClobAuth stays at "1")
Settlement contractCTFExchange on PolygonCTFExchangeV2 on Polygon — matchOrders()
Builder attributionHMAC headers POLY_BUILDER_* + builder-signing-sdkNative builderCode field on order; maker max 50 bps, taker max 100 bps, 1 bp granularity

Why this matters for every bot

EIP-712 migration trap

The Exchange domain version moved "1" → "2", but the ClobAuth domain stayed at "1". Conflating them produces silent rejects with no error code from the order book. The SDK helpers buildOrderTypedData and buildClobAuthTypedData get this right; do not hand-roll.

Builder fee math (V2)

builder_fee = notional × builder_fee_rate_bps / 10000

caps:
  taker_fee_rate_bps ≤ 100   (1.00%)
  maker_fee_rate_bps ≤ 50    (0.50%)

granularity:
  1 bp (no fractional bps)

note:
  The maker and taker sides of one trade can carry different builder codes
  (different integrators on each side).

Platform fee (V2, unchanged from late V1)

platform_fee = C × feeRate × p × (1 − p)
            // peaks at p = 0.5

current operator policy (Apr 2026):
  taker-only (no maker fee)
  crypto markets:        up to 1.80%
  sports markets:        0.75%
  geopolitical / global: 0%

Maker rebates

20–25% of fees collected, paid in pUSD, calculated per market. April 2026 pool: $5M for sports + esports. Specific allocation is at the operator's discretion and can change month-to-month — bots should never hard-code rebate amounts.

Source documents