We're shipping the next step of the fractional contracts migration on Thursday, 4 June 2026 at 6:00 AM UTC (2:00 PM SGT, UTC+8). No downtime is expected.
What's happening
The previous migration on 27 May was step one. On-chain storage moved to micro-contracts and the new *Micro / *Decimal fields became available. This Thursday is step two: the keeper starts executing partial / fractional fills.
What this means for your integration
Legacy fields like
contracts and filledContracts are floored to whole numbers, the fractional part is dropped. Until Thursday, fills are always whole numbers, so this has no effect. From Thursday onwards, fills can be fractional, and any integration reading these legacy fields will get the truncated value. The *Micro fields carry the exact amount.Example (an order partially filled for 2.5 contracts):
filledContracts: "2" ← legacy, floored, do NOT use
filledContractsMicro: "2500000" ← exact, use this
filledContractsDecimal: "2.5" ← exact, for display
What you need to do before Thursday
1. Order creation: send
contractsMicro instead of contracts. Send exactly one quantity field per order as providing multiple of contracts, contractsMicro, or contractsDecimal is rejected. The legacy contracts field still works for whole-contract orders but cannot express fractions.2. Reading responses: switch any calculation or accounting logic from legacy fields to their
*Micro siblings:-
contracts → contractsMicro-
filledContracts → filledContractsMicro-
contractsSettled → contractsSettledMicro-
newContracts → newContractsMicro-
totalContracts → totalContractsMicro-
totalActiveContracts → totalActiveContractsMicroUse
*Micro for math, *Decimal for display.3. Number types:
*Micro values are returned as strings (u64/u128) and can exceed JavaScript's safe-integer range. Parse with BigInt or a decimal library, never parseFloat or Number. Those will silently produce wrong values for large positions.What's not changing
USD / price fields stay in micro-USD.
depositAmount is unchanged, denominated in the deposit token's native decimals (e.g. 6 for USDC).Legacy field handling
Legacy whole-contract fields will remain available for backwards compatibility, we won't be removing them anytime soon. There is no firm deprecation date. However, they will continue to return values floored to whole numbers, so you must migrate to the
*Micro fields to read accurate data from Thursday onwards.Full migration guide: https://gist.github.com/julianfssen/322fb55fc6f1eb575a60e7e350ebe822
If you're unsure how this affects your integration, reach out to @anmoldotsol and we'll help verify.
