Announcements
Upgrade Notice 7 Aug 2026

Coming in 0.8.2 — Fills that explain themselves, executed-trade candles, and three closed defects

This is advance notice, not a changelog — nothing described here is live yet. The upgrade activates at block height 6,565,000 on chain 114514. Integrators who read fills, draw candles or call the two operator queries should read the last section now rather than on the day.

Fills say why they happened — Until now a fill told you the price, the size and your side, and nothing about why it executed. If your resting order was hit by a liquidation, or your own take-profit fired, or a slice of your TWAP went out, the record looked the same as any other trade. Every fill now carries the reason when there is one: a forced close, an isolated-margin breach, a trigger, or a TWAP slice. An ordinary fill carries nothing extra, so the record you already parse is unchanged.

…and who was on the other side of a liquidation — When your order absorbs someone's forced close, the fill now names the account that was closed and the mark price the liquidation ladder priced from. That mark is the number the engine used to decide, not the price you filled at, so you can see the decision and your execution separately. Fills routed by a broker also carry the broker's address and the fee it charged, and a slice carries the TWAP it came from.

Executed-trade candles are back — The chart served two price series, mark and oracle. It now serves three: the executed-trade series is available again on both the REST read and the live channel, for perpetuals and spot alike. Two things about it are worth knowing before you chart it. It is sparse — a minute with no trade produces no bar at all, and that gap is correct rather than missing data. And its volume and count are real, where a price bar reports zero volume and a count of price samples.

Market rows say what you can do, not what you cannot — The two trade-control flags on a market were named for what was blocked. They now say what is permitted: whether you can open, and whether you can close. Same information, read the way you actually ask the question.

Portfolio value now includes unrealised profit — The portfolio curve was built from cash movements and realised profit only, so an account holding an open position saw a number that disagreed with its own account page, and the gap grew with the position. The curve now carries the mark-aware account value the chain itself computes, sampled hourly. Points before the first sample stay on the old basis and the response says so.

TWAP orders you could not see — A TWAP placed on a market outside the primary venue was recorded, resting and firing, but the query that lists your TWAPs never looked there. It looks everywhere now. Nothing about how a TWAP executes has changed; it was only invisible.

Spot deployment is its own proposal — Permissionless spot deployment and permissionless perpetual deployment shared a single governance switch, so disabling one disabled the other. They are separate proposals and now have separate switches.

Deploy auctions cannot be driven to free — The floor price of a market-deployment auction had no lower bound, so a governance vote could set it to zero and let the descending clock reach a free listing. It now has an absolute floor no vote can go below. The auction also gains a settlement currency that governance can switch later; it ships set to what it uses today, so nothing changes yet.

Three defects closed on the trading paths — A validator could move a spot token's total supply with no matching balance movement. A spot order could survive a cancel-all with its escrow still locked. And the native token could leave for the EVM side with no way back. All three are closed at the activation height.

For integrators, read this before the upgrade — Two operator queries, node_info and block_info, will stop being answered by the public gateway; they remain available to node operators. If your client calls either one in the same batch as another read, a rejection will fail that whole batch — check for that now. Both of their unique fields were restatements in any case: the round always equalled the height, and the epoch is the height divided by a fixed length. The exchange status read is also trimmed to what a trading client asks — whether trading is open, and as of when — so the pending-halt height and the replay flag will disappear from it. The Rust and TypeScript client libraries are published at 0.17.0 and cover all of the above. Upgrade before the activation height rather than after: every new field is optional and every new value is additive, so the new library works against the chain as it runs today.