Mempelajari Solidity

https://user-images.githubusercontent.com/16539849/173656651-a46df615-8ec3-43fd-9619-98647a6d2bd2.png

image

Pada modul ini kamu akan mempelajari apa itu Solidity dan sintaks dasar dari bahasa tersebut.

Apa itu Solidity?

Membangun dengan Solidity

Mempersiapkan smart contracts

// Tentukan versi compiler yang ingin kamu gunakan
pragma solidity ^0.8.10;

// Buat sebuah contract yaitu HelloWorld
contract HelloWorld {

}

Variable dan tipenya

There are 3 types of variables in Solidity Terdapat tiga jenis deklarasi variable pada Solidity

Ruang lingkup dari variable didefinisikan dari dimana mereka dideklarasikan, bukan dari nilainya. Menetapkan nilai variabel lokal ke variabel global tidak membuatnya menjadi variabel global, karena variabel tersebut masih hanya dapat diakses dalam cakupannya sendiri.

// Tentukan versi compiler yang ingin kamu gunakan
pragma solidity ^0.8.10;

// Buat sebuah contract yaitu Variables
contract Variables {
    /*
        ******** State variables **********
    */
    /*
    uint berarti unsigned integer, atau non negative integer
    memiliki beberapa jenis ukuran seperti:
        - uint8   berkisar dari 0 sampai 2 ** 8 - 1
        - uint256 berkisar dari 0 sampai 2 ** 256 - 1
    `public` berarti variable dapat diakses secara internal
    oleh kontrak dan bisa dibaca oleh dunia luar
    */
    uint8 public u8 = 10;
    uint public u256 = 600;
    uint public u = 1230; // uint adalah alias dari uint256

    /*
    Nilai negatif diizinkan untuk tipe integer, misal:
    - int256 berkisar dari -2 ** 255 sampai 2 ** 255 - 1
    */
    int public i = -123; // int sama dengan int256

    // address artinya adalah ethereum address
    address public addr = 0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;

    // bool adalah untuk boolean (true/false)
    bool public defaultBoo1 = false;

    // Nilai default
    // Variable yang tidak ditentukan memiliki nilai default di Solidity
    bool public defaultBoo2; // false
    uint public defaultUint; // 0
    int public defaultInt; // 0
    address public defaultAddr; // 0x0000000000000000000000000000000000000000

    function doSomething() public {
        /*
        ******** Local variable **********
        */
        uint ui = 456;

        /*
        ******** Global variables **********
        */

        /*
            block.timestamp memberitahu kita timestamp dari blok saat ini
            msg.sender memberitahu kita address mana yang memanggil function doSomething
        */
        uint timestamp = block.timestamp; // block timestamp saat ini
        address sender = msg.sender; // address yang memanggil
    }
}

Functions, Loops dan If/Else

// Tentukan versi compiler yang ingin kamu gunakan
pragma solidity ^0.8.10;

// Buat smart contract bernama Conditions
contract Conditions {
    // State variable untuk menyimpan angka
    uint public num;

    /*
        Nama dari function ini adalah set.
        Fungsi ini mengambil variable uint bernama _num
        Function ini dideklarasi public berarti
        function ini dapat dipanggil dari dalam contract maupun eksternal
    */
    function set(uint _num) public {
        num = _num;
    }

    /*
        Nama fungsi adalah get.
        Fungsi ini mengembalikan nilai dari num.
        Fungsi ini dideklarasikan sebagai view function yang artinya
        fungsi tidak mengubah status dari variabel manapun.
        view function di Solidity tidak memerlukan gas.
    */
    function get() public view returns (uint) {
        return num;
    }

    /*
        Nama fungsi ini adalah foo.
        Fungsi ini menerima sebuah nilai uint dan mengembalikan sebuah nilai uint.
        Fungsi ini membandingkan nilai x menggunakan if/else.
    */
    function foo(uint x) public returns (uint) {
        if (x < 10) {
            return 0;
        } else if (x < 20) {
            return 1;
        } else {
            return 2;
        }
    }

    /*
        Nama dari function ini adalah loop.
        Function ini melakukan pengulangan sampai 10
    */
    function loop() public {
        // for loop
        for (uint i = 0; i < 10; i++) {
            if (i == 3) {
                // Skip to next iteration with continue
                continue;
            }
            if (i == 5) {
                // Exit loop with break
                break;
            }
        }
    }

}

Arrays, Strings