Original article: SUI Foundation
Compiled by: SUI World
Today, Sui Network announced the launch of a permanent testnet on its official Twitter account. This is a long-running, decentralized, and permissionless testnet. Unlike the past Waves 1 and Waves 2 testnets, this new testnet will continue to run even after the mainnet is launched. Through this permanent testnet, SUI Network will bring many important functional updates to the community.
Core Network
Dynamic validator set: Candidate validators who meet sufficient stake requirements can join the network at epoch boundaries, and active validators can leave the network at epoch boundaries. This validator access model is truly permissionless.
Support protocol software and Sui framework upgrades: Unlike Devnet, Testnet will not be deleted every time the software is updated (unless there are special reasons), and the community will be notified before any software update or data deletion on Testnet.
Restoring a full node from a database snapshot: Node operators can leverage a checkpoint to quickly start a full node, rather than waiting for the full node to sync.
Address and signature updates: Account addresses, object IDs, and transaction IDs are upgraded from 20 bytes to 32 bytes to prevent hash collisions. In addition, Sui's default hash function is now Blake2b instead of SHA3 because Blake2b has higher performance. To support a wide range of transaction sizes, signatures are now applied to hash digests instead of serialized BCS data, which makes Sui compatible with hardware wallets, whose signer APIs typically allow limited-size inputs.
Developer Experience
In order to realize the desire to make Sui the most developer-friendly platform in the public chain, Sui regards this permanent testnet as the earliest incarnation of Sui DevX 1.0, which brings together many core developer primitives and semantics:
1) The collection of feedback from developers and builders throughout the SUI development process;
2) The fundamental elements of developer productivity will continue to be refined;
3) The design aims to achieve a decentralized but not fragmented SUI ecosystem
These primitives are:
1) Programmable transaction blocks
https://docs.sui.io/build/prog-trans-ts-sdk
This powerful structure can chain a series of transactions together - splitCoin mergeCoins transferObjects moveCall makeMoveVec publish - to create a custom atomic transaction block that is specifically suited to the needs of the application. Since moveCall can specify any existing on-chain function, programmable transaction blocks essentially provide ad hoc transaction combinations, greatly enhancing the versatility of the Sui Move programming model.
Programmable transaction blocks also simplify GAS Coin object management, as applications can pass in a vector of GAS Coin objects and perform coin splitting/merging within the programmable transaction block without having to perform coin selection before submission.
2) Sponsorship deals and gas stations
https://docs.sui.io/learn/sponsored-transactions
Although sponsorship transactions have been supported since SUI version 0.27, now Shinami's gas station
https://github.com/MystenLabs/sui/releases/tag/devnet-0.27.0
Can be used with Sui's permanent testnet!
3) Object display standards
https://docs.sui.io/build/sui-object-display
A set of named templates standardizes the off-chain display of objects of the same type, and the Sui browser and Sui wallet now support the object display standard, as do the Sui API and Typescript/Rust SDKs. This has been a collaborative effort with a lot of ideas and brainstorming from the Sui community - special thanks to Capsules and OriginByte and their input into this standard.
4)Kiosk Standard
https://github.com/MystenLabs/sui/blob/main/crates/sui-framework/docs/kiosk.md
Kiosk is a powerful new primitive that enables listing objects for sale and enforcing creator-defined royalty policies when objects are sold. The combination of Object Display and Kiosk fills two critical gaps for people building collectibles and trading platforms on Sui. We encourage ecosystem wallets, browsers, and marketplaces to explore both the Object Display standard and the Kiosk standard to enable seamless compatibility across the ecosystem.
5) RPC transformation
There are now more aggregate-based RPC get* methods: getEpoch, getNetworkMetrics, getMoveCallMetrics, queryObjects. JSON RPC batch requests have been deprecated in favor of MultiGet* methods. System events have been deprecated in favor of dedicated fields in transaction responses. Finally, some legacy RPC methods (marked with unsafe_*) have been deprecated in favor of programmable transaction blocks.
6) Zero-knowledge proof
There is now Move API support for verifying Groth16 ZKPs using the BN254 elliptic curve and BLS12-381, the two most widely used curves. This provides proofs of computation in Sui smart contracts and supports privacy-preserving applications.
7) Timestamps of two granularities
https://docs.sui.io/build/move/time
A fine-grained Clock module that supports 2-3 second granularity for near real-time applications, and a coarse-grained Epoch timestamp.
8)Move Package Upgrade
This is essential functionality for developers to upgrade their Move smart contracts and import relevant packages. Move package upgrades will be available on the testnet with the next software update (tentatively scheduled for the first week of April), so stay tuned!
In addition to using Devnet and Testnet, we encourage builders to use local environments for initial development and faster iteration. The sui-test-validator binary has been improved to help with local development.
Sui Devnet VS Testnet
The following table describes the different network characteristics between Devnet and Perpetual Testnet as of the date of this post.
