Intro to Sui Blockchain

Intro to Sui Blockchain

·

3 min read

Hello everyone..

Welcome to another day of exploring Web3 Engineering. Today we are looking into SUI network, a Layer 1 blockchain. So without any further ado let’s dive into it.

Sui Blockchain

Sui is a layer 1 blockchain network powered by Move smart contracts. The blockchain is developed by Mysten Labs, which is led by several former senior executives for Meta’s now-defunct digital wallet program, Novi. Sui tracks the movement of objects, aka tokens, instead of following the changes in users’ accounts, aka crypto wallets. This blockchain doesn't have the same type of wallet-to-wallet limitations like others, and it allows for fast, private, and secure digital asset ownership accessible to everyone.

In Sui, transactions are categorized into simple and complex transactions. Simple transactions, such as asset transfers, do not involve a shared object and are executed instantly without contracting the consensus system. Complex transactions require extensive smart contract interactions and involve a shared object, and are sorted according to their effect on the network’s states, where non-related transactions are executed in parallel. Related transactions are executed in sequence. This approach allows Sui to achieve a transaction speed of about 10,000 TPS and up to 290,000 TPS depending on network demand.

What is a Layer 1 blockchain ?

A layer 1 blockchain is a blockchain network that runs independently from other networks and has its own consensus algorithm, block validations and a native token. Examples of layer 1 blockchains are Ethereum (ETH), Blockchain (BTC) etc.

SUI Token

The native token for the Sui blockchain is called SUI and the smallest unit of SUI is called MIST. 1 SUI is equal to 1 billion MIST. The total supply of SUI tokens is capped to 10 billion (10,000,000,000) coins. Using SUI coins, we can

  • Pay gas fees

  • Stake to participate in the consensus mechanism

  • To participate in the governance voting system.

Sui networks

The Sui blockchain primarily has 3 networks. They are:

  • Mainnet - The production network.

  • Testnet - A testing network for dApp developers to test their applications.

  • Devnet - An unstable network for the Sui developers to test the new features of the Sui blockchain.

We can also fork any of the above networks to test our apps locally.

Consensus

The Sui blockchain uses Delegated Proof-of-Stake (DPoS) for consensus. This is a more democratic evolution of the Proof-of-Stake consensus algorithm. In this, users will stake their SUI to become a stakeholder. During the block generation, the stakeholders are required to participate in the voting process to select delegates (sometimes also called as witnesses or block producers). The elected delegates further undergo the block producing process. Even though every stakeholder participates in the delegate selection process, the value of the stakeholder vote is reflected by the amount of SUI staked. In other words, the higher stake that the stakeholder has, the more powerful his/her vote becomes.

Once the block is generated, verified and added to the blockchain, then the rewards that the stakeholder receives are shared among the stakeholder that voted in favor of the delegate.

Move language

The Smart Contracts of Sui blockchain are written in MOVE language. The Move language was originally developed for the Libra blockchain also known as Diem network by Meta.
Move language is inspired from RUST programming language and hence it inherits its basic concepts from Rust such as Semantics, Ownership, Borrowing etc. The Smart contract consists of Modules and Scripts. We can discuss them in the upcoming articles. The smart contracts contain <filename>.move extension.

Checkout the Hello World Sui smart contract written in Move language.

// SPDX-License-Identifier: MIT

module hello_world::hello_world {
    use std::string;
    use sui::object::{Self, UID};
    use sui::transfer;
    use sui::tx_context::{Self, TxContext};

    /// An object that contains an arbitrary string
    struct HelloWorldObject has key, store {
        id: UID,
        /// A string contained in the object
        text: string::String
    }

    public entry fun mint(ctx: &mut TxContext) {
        let object = HelloWorldObject {
            id: object::new(ctx),
            text: string::utf8(b"Hello World!")
        };
        transfer::public_transfer(object, tx_context::sender(ctx));
    }
}