Skip to main content

Activation notice: block 5,710,001

This page records what changed on chain 114514 at block 5,710,001.

info

In effect since block 5,710,001. Node 0.9.7 swapped in at block 5,710,000, and every rule below turned on one block later. The page records what changed at that boundary, because a client written against the older behavior breaks on the rows below.

{"type":"account_state","address":"0x…"} returns the current height. Use it to check where the chain is.

Part of the split rules below is already superseded. Read the standard-mode split and the rules node 0.9.10 changed before you code to them.

Several behaviors move at one height, so the chain gains one boundary. The rows below are the ones a caller can observe. The rest of the release changes no request, response or rejection that you can see.

The pin is one block above the swap. The outgoing binary commits block 5,710,000 and then halts, so that block still runs the old rules. A pin at the swap height itself would make the running chain and a replay of it disagree about that block.

The two-wallet standard account​

An account that enters standard mode at or above the height holds two USDC wallets. Perp collateral stays in the perp wallet. Spot USDC moves to its own wallet. usd_class_transfer is the only lane that crosses between them. An account that is already in standard at the swap keeps one balance until it leaves the mode and enters again. The standard-mode split has the full rule set.

SurfaceBelow the heightAt and above
usd_class_transferRefused on every accountAccepted by a split standard account; refused on every other
spot_margin_open, split account—Refused: spot margin is not available in standard mode
user_set_abstraction kind: 2, split accountSets a spot reservationRefused: spot has its own wallet in standard mode; no spot reservation
user_set_abstraction kind: 0, value: 0, split account—Refused while the spot wallet is below zero: spot wallet is negative; cannot leave standard mode
USDC send_asset / sub_account_spot_transfer, split legDebits the pool, insufficient free collateral / insufficient cross collateralDebits the spot wallet, insufficient spot balance
account_state.splitAbsenttrue / false on a standard account
account_state.reservations.spot, split accountPooled rowreserved: "0", available = the spot wallet
account_state.spot.balances USDC row, split accountPerp margin inside totalThe spot wallet alone

The perp bankruptcy of a split account cannot reach its spot wallet. The insurance fund and ADL absorb it.

One governance vote closes both legs​

Before the height, a force_close_position that met quorum closed only the long leg. A hedge account kept its short leg, and the action reported success. At and above the height, one vote closes each leg that the account holds. A hedge account gets two liquidation records per vote. max_size caps each leg on its own. The outcome summary reads forceClosePosition partial (quorum met): residual stays open when any leg keeps size. The vote payload does not change. See liquidation records.

Rows that change shape or meaning​

SurfaceBelow the heightAt and above
user_fills[*].start_position, spot rowA bare "0"Zero at the market's sz_decimals, the same plane as sz ("0.00" on a two-decimal market)
user_fills aggregate: trueIgnoredFolds one order's legs into one row; see aggregate
user_fills[*].dir, spot rowRead as if a perpStates the spot direction
account_state.reservationsAbsent in every modePresent on a standard account
Node stream node_fills, each record—Carries ntl, the fill's notional in whole USDC
Faucet grant the reserve cannot pay200, nothing creditedRefused

Unchanged​

No /exchange action tag is added or removed. No snapshot or block field is renamed. Every EIP-712 type string is unchanged, so a signed action that verified below the height verifies above it.