Changelog
This section lists what changed on the public wire and at which block.
A new client does not need this section. It describes how the wire used to behave. The API reference holds the current contract.
Read a page here when a client written against an older release fails, or when you need the block at which a behavior changed.
How a change reaches the chain
One release moves every behavior at one height. The chain gains one boundary per release, not one per change. A page here covers a whole release, not a single field.
The pin sits one block above the swap height. The outgoing binary commits the swap block 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.
{"type":"account_state","address":"0x…"} returns the current height. Use it to compare the chain with any boundary below.
Entries
| Entry | What it covers |
|---|---|
| Migrations | Five breaking changes to the READ surface, newest first, each with a checklist. Signed /exchange actions are unchanged by all five. |
| Ids and wire shapes | oid and tid became decimal-digit strings, order_status gained its fill legs and terminal states, a fill labels its fee token, margin and funding moved onto one plane. Two rows corrupt data silently rather than erroring. |
| Next release and unverified wire rows | No change waits for the next node release. One row in the shipped code is not yet read on the running chain: the size plane on archive candles. The page also holds five corrections to this reference. |
| Block 45,811,287 | Node 0.9.21: a stalled validator oracle keeps the mark, spot tokens stay in an account at negative equity, and an agent signs the owner into the digest of eight actions. |
| Block 45,207,953 | Node 0.9.20: negative equity is backstopped on dust positions and refused new exposure; a successful write no longer gets a dropped notice. |
| Block 44,563,346 | Node 0.9.19: a deployer market past its refresh window trades in an off-session discovery band instead of turning reduce-only. |
| Block 44,478,893 | Node 0.9.18: deployer markets price off their own push, up to 100x, with a leverage-scaled move band and a bond lock; a deployer deficit stays in its dex; one agent serves one master; a Metaliquidity vault may open on a deployer market. |
| Block 34,135,466 | Node 0.9.17 and gateway 0.9.17: the recipient signs a faucet claim, the faucet grant is fixed, and the three points reads are served. |
| Block 25,599,540 | Node 0.9.16 and gateway 0.9.16: an open-interest cap on every native perp market, a deployer-set cap, a deficit charged to the markets that produced it, wider ADL reach, a smoothed self-priced index, a bounded delist price, a bridge re-issue and void lane, spot tokens as portfolio-margin collateral, a node_gov label for every round, the fill-tape retirement and the reads it moves to the gateway, user_ledger_updates removed, referral codes, one claim for both credits, two EVM receipt fixes and an order_status fix. |
| Block 17,113,494 | The signed action is capped at 1 MiB, and a batch_cancel answers and pushes an order_updates record for each leg. |
| Block 16,450,001 | A multi-sig roster holds at most 16 distinct signers, a multi_sig envelope carries at most 16 signatures, and the envelope no longer moves the nonce window of the posting account. |
| Block 11,550,001 | vault_modify signs a new type, every raw-size row states its size plane, one faucet claim per address, a parked status, a NONCE_REPLAYED verdict, per-leg cloid dedup, three silent accepts that become refusals, a spot order refused when unfunded, a split standard account with no reservations, a delist that settles every position. The page also covers the gateway rows that shipped the same day: four reads that answer 410, one snapshot frame per subscribe, a trades limit that caps the merged answer. |
| Block 5,710,001 | The two-wallet standard account, one force-close vote for both legs, start_position on the size plane, reservations and split on account_state. |
| Block 13,350,001 | A future-nonce refusal, TWAP slices that fill, cancel-all reaching TWAP parents, an isolated extend that posts margin, a bounded EVM block, the buyback drip. |
| Block 7,400,000 | An admission rule that refuses over-levered orders, a delist that cancels resting orders, the contract CoreWriter lane, permissionless spot deployment, randomized TWAP slices. |
See also
- Versioning: what counts as breaking, and the notice period.
- API reference: the current contract.