mainnet-v1.5.0
Highlights
-
#12676
Protocol versionv18update. The minimum budget for gas has changed to be the same as the minimum charge. Before it was possible to provide a budget less than the minimum transaction charge, in which case the transaction was guaranteed to fail for insufficient gas, however, gas coins would still be combined together, when more than one was provided. Effectively it was possible to get a merge operation under the minimum charge. With the current changes a transaction will only be accepted if the budget covers the minimum charges. It is important to point out that any and every transaction that was successful before will still be so with no change in gas. In other words, the breaking nature of this change is only over certain transactions that failed with "insufficient gas" before and now would not be able to enter the system. -
#12515 #12821
Thekiosk::purchase_with_capmethod for Sui Kiosk no longer emits theItemPurchasedevent. This update should have minimal impact. If the logic of your application does rely on this event, you must change it to leverage custom events instead. -
#12276
Invalidcoin_typeinputs tocoin_apinow yield error code-32602instead of the default-32000error code, with the error string beginning withInvalid struct type. Similarly, invalid cursors will also yield a-32602if the provided cursor cannot be found (with languagecursor not found) or is not a coin (with languagecursor is not a coin). Error language has been modified slightly:"Invalid Cursor {:?}, Object is not a coin"->"cursor is not a coin""Invalid Cursor {:?}, Object not found"->"cursor not found"
This is part of a larger effort to make JSON-RPC errors more actionable, by splitting errors into three error codes:
-32602for any client-facing error,-32000for noncritical server and catchall errors, and-32603for critical errors. -
#12650
Developers may now opt into running linters when building/testing/publishing/upgrading packages via CLI by specifying the-lintflag. -
#12648 #12600
Prior to this change,unwrapped_then_deletedfield in TransactionEffects only contain unwrapped then deleted objects that previously existed in the store (i.e. was once unwrapped in its lifetime). If an object was always wrapped since creation and was never unwrapped ever, it wouldn't show up inunwrapped_then_deleted. With this change, we no longer make such a distinction. As long as an object is unwrapped and then deleted in a transaction, it would show up in effect regardless of its history. This simplifies the logic of handling them significantly.
To properly maintain the state of the system accurately with this change, at the epoch boundary when this upgrade happens, we must re-accumulate the state root hash of all objects in the store. This process takes a few seconds on the mainnet. Testnet can take a much longer time (30s-1min) since it contains significantly more objects. Users may observe a brief slowdown of the network during epoch change when this is applied. -
#12425
The compiler features additional warnings for unused private functions and unused (uninstantiated) struct types
Full Changelog: https://github.com/MystenLabs/sui/commits/mainnet-v1.5.0