Releases: MystenLabs/sui
devnet-v1.8.0
What's Changed
#13124:
Add protocol config feature flags for zkLogin
to enable testing in Devnet
, and use updated proof verification logics for zkLogin
signature verification.
#13417:
When building Move code, there are now additional linter warnings related to comparing collections from Sui framework code (Bag
, Table
, and TableVec
). Note that this comparison is not a structural one based on the collection content, which is what one might expect, so Sui now indicates this via a linter warning.
#12989:
All transaction execution errors from execute_transaction_block
of client-fault
now return a -32002
error code. If you encounter this error code, there is most likely an issue in your transaction inputs.
Previously, when executing a transaction that failed on the RPC, you would receive a "Transaction has non-recoverable errors from at least 1/3 of validators" after the transaction was unable to execute. You now receive an improved error message, "Transaction execution failed due to issues with transaction inputs, please review the errors and try again: {errors}
", where {errors}
is a string list of actionable errors. After you resolve the errors indicated, your transaction should be successful.
#13194:
When building Move code, there are now additional linter warnings related to freezing an object containing (directly or indirectly) another (wrapped) object. Freezing such an object prevents the unwrapping of inner objects.
#12575:
Details included in error messages returned during dependency graph construction might differ from the previous error messages, but they still include similar details and information.
#12933:
Error code designation is updated to support a more cohesive error reporting structure. Internal errors that arise while reading from authority return a -32603
error code. Client-fault errors that arise while reading from authority return a -32602
error code. Error strings are not modified.
#13312:
Removes the --legacy-digest
flag from the sui client upgrade
and sui move build
CLI commands, as Sui networks no longer require package digests to be calculated using the legacy algorithm.
Full Changelog: https://github.com/MystenLabs/sui/commits/devnet-v1.8.0
mainnet-v1.7.1
What's Changed
#12915:
The protocol version is bumped to version 20
Adds the Kiosk Extensions API and a new sui::kiosk_extension
module in the Sui Framework.
You can use the API to build custom Kiosk applications to extend the capabilities of the base Kiosk. Beyond simple practices of exposing the &mut UID
, the Kiosk Extensions API provides enhanced functionality and guarantees to Kiosk extensions, including:
- Isolated storage for each extension that belongs to the extension.
- Ability to request permissions to
place
orlock
andplace
items into a user's kiosk. - Ability to disable/turn off an extension at any time (with owner permissions) while retaining access to its storage.
- Ability to remove extensions that don't contain any data.
This update also changes access to the UID:
kiosk::uid_mut
is now disabled by default.kiosk::uid
is always available for reads.kiosk.allow_extensions
is set to false by default.
Improved getters:
kiosk::kiosk_owner_cap_for
- allows reading theKioskOwnerCap.for
field
#13294:
Enables a narwhal_new_leader_election_schedule
flag for the new Narwhal leader schedule algorithm, which provides enhanced fault tolerance and sets the bad node stake threshold value. This flag is available for all networks, except Mainnet.
#13112:
When building Move code, new compiler warnings that point to unused function type parameters might appear.
#13267:
The source verification failure warning from package publish and upgrade CLI commands has improved formatting and suggests ways to fix the issue or silence the warning.
#13086:
When building Move code new compiler warnings may appear pointing towards unused struct fields
#13213:
When the order_price
and order_quantity
are small enough that there is a rounding down of
the balance, a custodian that tries to cancel their limit order leaves a single MIST in their locked_balances
.
To resolve this, Sui rounds up to fully remove the locked balance from the account.
#13196:
This PR modifies the CLI keytool
as follows:
- Adds support for
json
output. Use the--json
flag when invoking anykeytool
command (such askeytool list --json
). - Changes the default output to the terminal to formatted tables with headers to improve consistency across different commands. Use
--json
if you need to parse/pipe output data. - Removes the following seven commands, which you can replace by calls to the
base64
andxxd
utilities:
Base64PubKeyToAddress
BytesToBase64
Base64ToBytes
Base64ToHex -> input | base64 -d | xxd -p
BytesToHex
HexToBase64 -> input | xxd -r -p | base64
HexToBytes
#13144:
When building Move code, additional linter warnings related to structs containing fields of type sui::coin::Coin
may appear. The goal of this linter is to encourage developers to use fields of type sui::balance::Balance
instead as this solution is more space-efficient.
#13090:
With Deepbook, instead of emitting a single event per request to cancel, Sui now emits one large CancelOrders
event at the end of the order matching loop, as well as at the end of cancel_all_orders
.
This change is motivated by the fact that one can have MoveAborts
that occur because there is an emitted event limit on transaction execution. An example error is https://suiexplorer.com/txblock/Ck3g7SJMCVDEgHXHP9jMAU4EDzHQGXkstxqwPiQ2CxgR?network=testnet
MovePrimitiveRuntimeError(MoveLocationOpt(Some(MoveLocation { module: ModuleId { address: 0000000000000000000000000000000000000000000000000000000000000002, name: Identifier("event") }, function: 0, instruction: 0, function_name: Some("emit") }))) in command 0
#13127:
If you used the new linters introduced in PR #12650, you might have seen warnings for the Sui standard library. This update suppresses those warnings.
#13365:
The Move compiler will no longer show warnings present in dependencies. This can be overridden via the compiler flag --dependencies-are-root
.
Full Changelog: https://github.com/MystenLabs/sui/commits/mainnet-v1.7.0
testnet-v1.7.1
What's Changed
#13365:
The Move compiler will no longer show warnings present in dependencies. This can be overridden via the compiler flag --dependencies-are-root
.
Full Changelog: https://github.com/MystenLabs/sui/commits/testnet-v1.7.1
testnet-v1.7.0
What's Changed
#12915:
The protocol version is bumped to version 20
Adds the Kiosk Extensions API and a new sui::kiosk_extension
module in the Sui Framework.
You can use the API to build custom Kiosk applications to extend the capabilities of the base Kiosk. Beyond simple practices of exposing the &mut UID
, the Kiosk Extensions API provides enhanced functionality and guarantees to Kiosk extensions, including:
- Isolated storage for each extension that belongs to the extension.
- Ability to request permissions to
place
orlock
andplace
items into a user's kiosk. - Ability to disable/turn off an extension at any time (with owner permissions) while retaining access to its storage.
- Ability to remove extensions that don't contain any data.
This update also changes access to the UID:
kiosk::uid_mut
is now disabled by default.kiosk::uid
is always available for reads.kiosk.allow_extensions
is set to false by default.
Improved getters:
kiosk::kiosk_owner_cap_for
- allows reading theKioskOwnerCap.for
field
#13294:
Enables a narwhal_new_leader_election_schedule
flag for the new Narwhal leader schedule algorithm, which provides enhanced fault tolerance and sets the bad node stake threshold value. This flag is available for all networks, except Mainnet.
#13112:
When building Move code, new compiler warnings that point to unused function type parameters might appear.
#13267:
The source verification failure warning from package publish and upgrade CLI commands has improved formatting and suggests ways to fix the issue or silence the warning.
#13086:
When building Move code new compiler warnings may appear pointing towards unused struct fields
#13213:
When the order_price
and order_quantity
are small enough that there is a rounding down of
the balance, a custodian that tries to cancel their limit order leaves a single MIST in their locked_balances
.
To resolve this, Sui rounds up to fully remove the locked balance from the account.
#13196:
This PR modifies the CLI keytool
as follows:
- Adds support for
json
output. Use the--json
flag when invoking anykeytool
command (such askeytool list --json
). - Changes the default output to the terminal to formatted tables with headers to improve consistency across different commands. Use
--json
if you need to parse/pipe output data. - Removes the following seven commands, which you can replace by calls to the
base64
andxxd
utilities:
Base64PubKeyToAddress
BytesToBase64
Base64ToBytes
Base64ToHex -> input | base64 -d | xxd -p
BytesToHex
HexToBase64 -> input | xxd -r -p | base64
HexToBytes
#13144:
When building Move code, additional linter warnings related to structs containing fields of type sui::coin::Coin
may appear. The goal of this linter is to encourage developers to use fields of type sui::balance::Balance
instead as this solution is more space-efficient.
#13090:
With Deepbook, instead of emitting a single event per request to cancel, Sui now emits one large CancelOrders
event at the end of the order matching loop, as well as at the end of cancel_all_orders
.
This change is motivated by the fact that one can have MoveAborts
that occur because there is an emitted event limit on transaction execution. An example error is https://suiexplorer.com/txblock/Ck3g7SJMCVDEgHXHP9jMAU4EDzHQGXkstxqwPiQ2CxgR?network=testnet
MovePrimitiveRuntimeError(MoveLocationOpt(Some(MoveLocation { module: ModuleId { address: 0000000000000000000000000000000000000000000000000000000000000002, name: Identifier("event") }, function: 0, instruction: 0, function_name: Some("emit") }))) in command 0
#13127:
If you used the new linters introduced in PR #12650, you might have seen warnings for the Sui standard library. This update suppresses those warnings.
Full Changelog: https://github.com/MystenLabs/sui/commits/testnet-v1.7.0
devnet-v1.7.0
What's Changed
#13294:
Enables a narwhal_new_leader_election_schedule
flag for the new Narwhal leader schedule algorithm, which provides enhanced fault tolerance and sets the bad node stake threshold value. This flag is available for all networks, except Mainnet.
#12915:
The protocol version is bumped to version 20
Adds the Kiosk Extensions API and a new sui::kiosk_extension
module in the Sui Framework.
You can sue the API to build custom Kiosk applications to extend capabilities of base Kiosk. Beyond simple practices of exposing the &mut UID
, the Kiosk Extensions API provides enhanced functionality and guarantees to Kiosk extensions, including:
- Isolated storage for each extension that belongs to the extension.
- Ability to request permissions to
place
orlock
andplace
items into a user's kiosk. - Ability to disable / turn off an extension at any time (with owner permissions) while retaining access to its storage.
- Ability to remove extensions that don't contain any data.
This update also changes access to the UID:
kiosk::uid_mut
is now disabled by default.kiosk::uid
is always available for reads.kiosk.allow_extensions
is set to false by default.
Improved getters:
kiosk::kiosk_owner_cap_for
- allows reading theKioskOwnerCap.for
field
#13112:
When building Move code, new compiler warnings that point to unused function type parameters might appear.
#13267:
The source verification failure warning from package publish and upgrade CLI commands has improved formatting and suggests ways to fix the issue or silence the warning.
#13086:
When building Move code new compiler warnings may appear pointing towards unused struct fields
#13213:
When the order_price
and order_quantity
are small enough that there is a rounding down of
the balance, a custodian that tries to cancel their limit order leaves a single MIST in their locked_balances
.
To resolve this, Sui rounds up to fully remove the locked balance from the account.
#13196:
This PR modifies the CLI keytool
as follows:
- Adds support for
json
output. Use the--json
flag when invoking anykeytool
command (such askeytool list --json
). - Changes the default output to the terminal to formatted tables with headers to improve consistency across different commands. Use
--json
if you need to parse/pipe output data. - Removes the following seven commands, which you can replace by calls to the
base64
andxxd
utilities:
Base64PubKeyToAddress
BytesToBase64
Base64ToBytes
Base64ToHex -> input | base64 -d | xxd -p
BytesToHex
HexToBase64 -> input | xxd -r -p | base64
HexToBytes
#13144:
When building Move code, additional linter warnings related to structs containing fields of type sui::coin::Coin
may appear. The goal of this linter is to encourage developers to use fields of type sui::balance::Balance
instead as this solution is more space-efficient.
#13090:
With Deepbook, instead of emitting a single event per request to cancel, Sui now emits one large CancelOrders
event at the end of the order matching loop, as well as at the end of cancel_all_orders
.
This change is motivated by the fact that one can have MoveAborts
that occur because there is an emitted event limit on transaction execution. An example error is https://suiexplorer.com/txblock/Ck3g7SJMCVDEgHXHP9jMAU4EDzHQGXkstxqwPiQ2CxgR?network=testnet
MovePrimitiveRuntimeError(MoveLocationOpt(Some(MoveLocation { module: ModuleId { address: 0000000000000000000000000000000000000000000000000000000000000002, name: Identifier("event") }, function: 0, instruction: 0, function_name: Some("emit") }))) in command 0
#13127:
If you used the new linters introduced in PR #12650, you might have seen warnings for the Sui standard library. This update suppresses those warnings.
Full Changelog: https://github.com/MystenLabs/sui/commits/devnet-v1.7.0
mainnet-v1.6.3
What's Changed
#13029
When building Move code, additional linter warnings related to implementing a custom transfer/share/freeze functions might appear. These functions are created to enforce a custom transfer/share/freeze policy. If you implement them to work with instances of a type with the store ability results in an unenforceable policy (these type instances can be transferred/shared/frozen using public variants of transfer/share/freeze functions).
#13012
Developers can now selectively suppress linter warnings. Linter warnings now also feature an additional message describing how they can be suppressed. For example, a message could be "This warning can be suppressed with '#[lint_allow(share_owned)]' applied to the 'module' or module member ('const', 'fun', or 'struct')" which would allow suppressing warnings related to potentially attempting to share already owned object to be suppressed with the #[lint_allow(share_owned)]
annotation.
#12968
When you run Move unit tests, warnings no longer prevent tests from running. Compilation results print only once for each sui move test command.
#12771
This release adds a new filter, TransactionKindIn, to the queryTransactionBlocks RPC endpoint. The filter accepts a list of TransactionKind and returns a page of transaction blocks that match ANY input TransactionKind. Note that this is now supported only by the indexer, but not supported by Sui Full nodes directly.
#12822
When building Move code, additional linter warnings related to transferring objects to the transaction sender may appear. The goal of this linter is to encourage developers to return object from functions rather than transferring them to the transaction sender in order to increase composability of functions in programmable transaction blocks by allowing callers to directly use the returned object.
Full Changelog: https://github.com/MystenLabs/sui/commits/mainnet-v1.6.3
testnet-v1.6.2
What's Changed
-
#13029
When building Move code, additional linter warnings related to implementing custom transfer/share/freeze functions might appear. These functions are created to enforce a custom transfer/share/freeze policy. If you implement them to work with instances of a type with thestore
ability results in an unenforceable policy (these type instances can be transferred/shared/frozen using public variants of transfer/share/freeze functions). -
#13012
Developers can now selectively suppress linter warnings. Linter warnings now also feature an additional message describing how they can be suppressed. For example, a message could be "This warning can be suppressed with '#[lint_allow(share_owned)]' applied to the 'module' or module member ('const', 'fun', or 'struct')" which would allow suppressing warnings related to potentially attempting to share already owned object to be suppressed with the '#[lint_allow(share_owned)]' annotation. -
#12968
When you run Move unit tests, warnings no longer prevent tests from running. Compilation results print only once for eachsui move test
command. -
#12771
This release adds a new filter, TransactionKindIn, to the queryTransactionBlocks RPC endpoint. The filter accepts a list of TransactionKind and returns a page of transaction blocks that match ANY input TransactionKind. Note that this now supported only by indexer, but not supported by Sui Full nodes directly. -
#12822
When building Move code, additional linter warnings related to transferring objects to the transaction sender may appear. The goal of this linter is to encourage developers to return object from functions rather than transferring them to the transaction sender in order to increase composability of functions in programmable transaction blocks by allowing callers to directly use the returned object.
Full Changelog: https://github.com/MystenLabs/sui/commits/testnet-v1.6.2
testnet-v1.6.1
What's Changed
- #13146
Fix a crashing bug in the legacy multi-signature verification code.
Full Changelog: https://github.com/MystenLabs/sui/commits/testnet-v1.6.1
testnet-v1.6.0
Highlights
-
#12857
The protocol version is bumped to19
Adds thestore
ability to theStakedSui
object. With thestore
ability, stake objects can be transferred freely and wrapped in other objects, making it possible to implement liquid staking derivatives. To make staking more atomically composable with other on-chain actions, we also added a new PTB-friendly staking functionrequest_add_stake_non_entry
that stakes SUI tokens with a given validator and returns theStakedSui
object as the return value. Public getters are added for active validators' addresses and the pool token exchange rate of each validator's staking pool. These additions allow developers to better interact with the staking module in their contract. These changes result from the proposal SIP-6. Please refer to the SIP for more details and motivation around the changes. -
#13099
The number of events emitted has been increased from256
to1024
, and there is now an explicit limit (65536000
bytes**)** on the total size of all events emitted in a PTB. This new limit is backward compatible with previous limits, so old transactions should work. -
#13029
When building Move code, additional linter warnings related to implementing a custom transfer/share/freeze functions might appear. These functions are created to enforce a custom transfer/share/freeze policy if you implement them to work with instances of a type with thestore
ability results in an unenforceable policy (these type instances can be transferred/shared/frozen using public variants of transfer/share/freeze functions). -
#13012
Developers can now selectively suppress linter warnings. Linter warnings now feature an additional message describing how they can be suppressed. For example, a message could be "This warning can be suppressed with#[lint_allow(share_owned)]
applied to themodule
ormodule
member (const
,fun
, orstruct
)" which would allow suppressing warnings related to potentially attempting to share already owned object to be suppressed with the#[lint_allow(share_owned)]
annotation. -
#12968
When you run Move unit tests, warnings no longer prevent tests from running. Compilation results print only once for eachsui move test
command. -
#12771
This release adds a new filter, TransactionKindIn, to thequeryTransactionBlocks
RPC endpoint. The filter accepts a list of TransactionKind and returns a page of transaction blocks that match ANY input TransactionKind. Note that this is now supported only by the indexer, but not supported by Sui Full nodes directly. -
#12822
When building Move code, additional linter warnings related to transferring objects to the transaction sender may appear. The goal of this linter is to encourage developers to return objects from functions rather than transferring them to the transaction sender in order to increase the composability of functions in programmable transaction blocks by allowing callers to directly use the returned object.
Full Changelog: https://github.com/MystenLabs/sui/commits/testnet-v1.6.0
devnet-v1.6.0
Highlights
-
#13029
When building Move code, additional linter warnings related to implementing a custom transfer/share/freeze functions might appear. These functions are created to enforce a custom transfer/share/freeze policy if you implement them to work with instances of a type with thestore
ability results in an unenforceable policy (these type instances can be transferred/shared/frozen using public variants of transfer/share/freeze functions). -
#13012
Developers can now selectively suppress linter warnings. Linter warnings now feature an additional message describing how they can be suppressed. For example, a message could be "This warning can be suppressed with#[lint_allow(share_owned)]
applied to themodule
ormodule
member (const
,fun
, orstruct
)" which would allow suppressing warnings related to potentially attempting to share already owned object to be suppressed with the#[lint_allow(share_owned)]
annotation. -
#12968
When you run Move unit tests, warnings no longer prevent tests from running. Compilation results print only once for eachsui move test
command. -
#12771
This release adds a new filter, TransactionKindIn, to thequeryTransactionBlocks
RPC endpoint. The filter accepts a list of TransactionKind and returns a page of transaction blocks that match ANY input TransactionKind. Note that this is now supported only by the indexer, but not supported by Sui Full nodes directly. -
#12822
When building Move code, additional linter warnings related to transferring objects to the transaction sender may appear. The goal of this linter is to encourage developers to return objects from functions rather than transferring them to the transaction sender in order to increase the composability of functions in programmable transaction blocks by allowing callers to directly use the returned object.
Full Changelog: https://github.com/MystenLabs/sui/commits/devnet-v1.6.0