Announcing Permanent Testnet
Sui’s highly anticipated Permanent Testnet has finally arrived!! This instance of the Sui network serves as Sui’s long-running, decentralized, and permissionless Testnet. Unlike past Testnet Waves 1 and 2, this new Testnet will continue running even after Mainnet launch.
With this network we bring a number of significant feature updates to the community.
Core Network
- Dynamic validator set: Validator candidates that 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 proves what it means to be permissionless.
- Protocol software and Sui framework upgrade support: Unlike Devnet, Testnet will not be wiped on each software update (unless there are extenuating circumstances). The community will be notified appropriately ahead of any planned software updates or data wipes on Testnet.
- Full node restore from database snapshot: Instead of waiting for a Full node to sync, node operators can leverage a checkpoint to quickly bring up a Full node.
- Addresses and signature updates: Account addresses, object IDs, and transaction IDs have been upgraded from 20 bytes to 32 bytes to prevent hash collisions. Additionally, Sui’s default hash function is now Blake2b rather than SHA3, as it is far more performant. And in order to support a wide range of transaction sizes, signatures are now applied over hash digests instead of serialized BCS data. This enables Sui compatibility with hardware wallets, whose signer APIs typically allow limited size inputs.
Developer Experience
In keeping with our aspirations for Sui to be a best-in-breed developer platform, we view this milestone as the earliest incarnation of what we call Sui DevX 1.0, where a number of core developer primitives and semantics are brought together:
- the culmination of developer and builder feedback throughout the Sui journey thus far
- foundation elements upon which Sui’s developer ergonomics and developer efficiency will continue to be refined
- designed with intent to enable a Sui ecosystem that is decentralized but not fragmented
These primitives are:
-
Programmable Transaction Blocks: This powerful construct enables chaining together a series of transactions–splitCoin, mergeCoins, transferObjects, moveCall, makeMoveVec, publish–to create a custom, atomic transaction block uniquely suited to your application needs. Since moveCall can specify any existing on-chain functionality, Programmable Transaction Blocks essentially provide ad-hoc transaction composition, significantly enhancing the versatility of the Sui Move programming model.
Programmable Transaction Blocks also simplify gas coin management, as an application can pass in a vector of gas coin objects and perform coin split/merge within a Programmable Transaction Block, rather than having to perform coin selection before submission. - Sponsored Transactions and gas station: While support for sponsored transactions has been in place since release 0.27, we are pleased to announce Shinami’s gas station (guide, API), which is now available for use with Sui’s Permanent Testnet!
- Object Display Standard: This standardizes off-chain display of objects of the same type using a set of named templates. Sui Explorer and Sui Wallet both support the Object Display Standard now. Sui APIs and Typescript/Rust SDKs also support the Object Display Standard. This was a collaborative effort with lots of ideas and brainstorming from the Sui Community–we would especially like to thank Capsules and OriginByte and for their input to this standard.
- Kiosk Standard: Kiosk, a powerful new primitive, supports listing an object for sale and enforcing creator-defined royalty policies when the object is sold. The combination of Object Display and Kiosk fill two key gaps for folks building collectibles and trading platforms on Sui. We encourage ecosystem wallets, explorers, and marketplaces to explore both the Object Display Standard and the Kiosk Standard for seamless compatibility across the ecosystem.
- RPC Revamp: There are now more aggregation-based RPC get* methods: getEpoch, getNetworkMetrics, getMoveCallMetrics, queryObjects. JSON RPC batched requests were deprecated in favor of MultiGet* methods. System events were deprecated in favor of dedicated fields in the transaction response. And lastly, a number of legacy RPC methods (marked with *unsafe_**) were deprecated in favor of Programmable Transaction Blocks.
- Zero Knowledge Proofs: There is now Move API support for verifying Groth16 ZKP using both BN254 elliptic curve and BLS12-381 (two of the most widely-used curves). This provides for computation proofs in Sui smart contracts and enables privacy-preserving applications.
- Two Granularity of Timestamps: A fine-grained Clock module that supports 2-3 second granularity for near real-time applications, and a coarse-grained Epoch Timestamps.
- Move Package Upgrade: This is an essential functionality for developers to update their Move contract and to pull in upgrades of dependent packages. Move Package Upgrade will be available on Testnet with the next software update (tentatively planned for first week of April)! Stay tuned!
In addition to using Devnet and Testnet, we also encourage builders to use the local environment for initial development and faster iterations. The sui-test-validator binary has been improved to aid with local development flow.
Sui Devnet versus Testnet
The following table describes the differing network characteristics between Devnet and the Permanent Testnet as of the date of this publication.
Attribute | Devnet | Permanent Testnet |
---|---|---|
Validator set | Four Mysten Labs-operated validators | 93 validators + 2 Mysten Labs-operated validators |
Full node | Mysten Labs-operated plus community operated nodes | Mysten Labs-operated plus community operated nodes |
Validator location | US-East | Geo-distributed |
Duration | Permanent | Permanent |
Access | Public | Public |
JSON API URL | https://fullnode.devnet.sui.io:443 | https://fullnode.testnet.sui.io:443 |
Discord Faucet | Discord channel | Discord channel |
Faucet Unit | 1 SUI per request | 1 SUI per request |
Epoch Duration | 24 hours | 24 hours |
Reference Gas Price | 1 MIST | Starting epoch 0 at 1,000 MIST. Afterwards, the reference gas price will update as validators participate in the gas price survey throughout each epoch. |
Storage Gas Price | 1 MIST | 76 MIST |
SW Version as of March 29, 2023 | v0.29.1 | v0.29.1 |
Release Cadence | Weekly release plus more frequent hot-fixes as necessary | Only updated as necessary for the immediate future. A regular release schedule will be announced once it has been established. |
Data Durability | Data wiped as part of regularly scheduled software updates | No data wipe as part of software updates. Until a regular wipe schedule is established, any data wipe will be announced ahead of time. |
Incident Support | Mysten Labs oncalls and Mysten Labs incident management protocol | Mysten Labs oncalls plus necessary coordination with validators |
Join the Action
As you can see, there are many powerful and new capabilities that are now possible on a decentralized and permissionless network. If you are an interested validator or full node operator, we welcome you to join the network. If you are an app builder, we would love to see your creativity on Sui DevX 1.0 (especially for Programmable Transaction Blocks and Sponsored Transactions)!
Thank you for being part of the Sui community, we highly appreciate each of your unique contributions towards shaping the soon-to-be Sui Mainnet!