Highlights
-
#12676
Protocol versionv18
update. 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_cap
method for Sui Kiosk no longer emits theItemPurchased
event. 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_type
inputs tocoin_api
now yield error code-32602
instead of the default-32000
error code, with the error string beginning withInvalid struct type
. Similarly, invalid cursors will also yield a-32602
if 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:
-32602
for any client-facing error,-32000
for noncritical server and catchall errors, and-32603
for critical errors. -
#12650
Developers may now opt into running linters when building/testing/publishing/upgrading packages via CLI by specifying the-lint
flag. -
#12648 #12600
Prior to this change,unwrapped_then_deleted
field 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