exchangeVersion, but setting it explicitly can make a migration easier to review:
ensureReady() can deploy or approve wallet contracts and is state-changing for a new wallet. After the returned funder address is funded, trader.order(...) places a real order.
V2 fees are applied by Polymarket at match time. Do not add legacy feeRateBps, nonce, or taker fields to a V2 signed order. A builder code attributes eligible volume; it does not itself charge an application fee. feeConfig is a separate, optional application-fee feature and remains disabled unless you configure it.

