Teknologi blockchain sudah mengubah paradigma cara berfikir generasi saat ini terkait dengan sistem yang terdesentralisasi, transparan dan dapat dipercaya. Di antara bagian penting meningkatnya adaptasi teknologi ini setelah fenomena kemunculan bitcoin adalah diperkenalkannya smart contract.
Smart contract sendiri merupakan program yang dapat berjalan sendiri dan berjalan dalam jaringan blockchain blockchain. Yang mana tiap transaksi ketika selesai akan bisa dilacak dan tidak dapat dibatalkan.
Jika kita mulai terjun ke dunia blockchain, belajar bahasa pemrograman Solidity yang digunakan untuk membuat smart contract di jaringan ethereum bisa dikatakan menjadi suatu keharusan. Karena meskipun banyak jaringan blockchain yang memiliki bahasa pemrograman tersendiri dalam pembuat smart contract, ethereum merupakan jaringan blockhain dengan kapitalisasi pasar terbesar kedua setelah bitcoin.
Pada artikel ini, kita akan mulai belajar dari sejumlah tipe nilai dasar bahasa pemrograman solidity yaitu boolean, unsigned integers, signed integers, string , dan enums.
Unsigned Integers (uint
)
Unsigned Integer merupakan jenis angka yang hanya bisa berisikan nilai positif. Tipe data ini ideal untuk digunakan pada kondisi-kondisi ketika kita tidak memerlukan angka negatif seperti membuat hitungan, id pengguna, dan lain-lain. Contoh:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract UnsignedIntegerExample {
uint8 public a = 100; // 0 -> 255
uint16 public b = 10000; // 0 -> 65535
// uint is an alias for uint256
uint public c = 1000000000000;
uint256 public d = 1000000000000;
}
Di sini kita melihat beberapa tipe data unsigned integer yaitu uint8
, uint16
, uint
, uint256
. Lalu apa perbedaannya?
uint8
mendeklarasikan unsigned integer 8-bit yang bisa menampung nilai dari 0 sampai 255.uint16
mendeklarasikan unsigned integer 16-bit yang bisa menampung nilai dari 0 sampai 65535uint
danuint256
sama-sama mendeklarasikan unsigned integer 256-bit, yang mana nilainya cukup besar yaitu2^256 - 1
atau
Tipe-tipe unsigned integer sendiri bervariasi tergantung pada maksimal bit data yang bisa ditampungya. Bervariasi di kelipatan delapan dari uint8
sampai uint256
.
Signed Integers (int
)
Signed Integer merupakan jenis angka yang bisa berisikan positif dan negatif. Tipe ini cocok digunakan untuk nilai-nilai yang memerlukan bilangan negatif seperti temperatur, perbedaan, ataupun skor. Contoh:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SignedIntegerExample {
int8 public a = 10;
int16 public b = 50;
int256 public c = a - b; // result: -40
}
Meskipun memiliki jumlah bit yang sama dengan unsigned integers. Rentang nilai yang direpresentasikan sedikit berbeda, karena signed integer bisa merepresentasikan angka negatif. Contohnya pada uint8
rentang nilai ada dari 0 sampai 255, sedangkan pada int8
rentang nilai ada dari -128
sampai 127
.
Sama seperti unsigned integers, signed integers bisa dideklarasikan setiap 8 step yang mana setiap angka merepresentasikan jumlah bit yang dimiliki. Contoh int8
,int16
,int32
,int40
dan seterusnya sampai int256
.
Boolean (bool
)
Boolean merupakan tipe data yang hanya bisa berisikan dua nilai, true
atau false
. Umumnya boolean digunakan untuk pengkondisian ataupun state management.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract BooleanExample {
bool public isActive = true;
}
Kode bool public isActive = true;
mendeklarasikan suatu state variable isActive
, dan diinisialisasikan nilai true
. Boolean akan banyak digunakan nantinya ketika kita ingin mengontrol suatu fitur di dalam kontrak terutama pada hal-hal yang berkaitan dengan pengkondisian.
String (string
)
String merupakan rangkaian karakter yang digunakan untuk menyimpan data teks. Contoh penggunaan string yang banyak digunakan adalah seperti menyimpan nama, deskripsi, ataupun suatu pesan di dalam smart contract.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract StringExample {
string public greeting = "Hello, World!";
}
Kode string public greeting = "Hello, World!";
menunjukkan pendeklarasian variabel greeting
dan inisialisasi nilainya ke "Hello, World!"
.
Enums (enum
)
Enum merupakan singkatan dari enumeration. Enum merupakan tipe data yang didefinisikan oleh user dan berisikan himpunan nama-nama opsi. Adanya enum akan membuat kode yang lebih mudah dibaca karena penamaannya yang sesuai dengan keinginnan pengguna.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract EnumExample {
enum Choice { Up, Down, Left, Right } // Define an enum
Choice public choice = Choice.Up; // Declare an enum state variable
}
Pada kode enum Choice { Up, Down, Left, Right }
, kita mendefinisikan suatu enum yang kita beri nama Choice
, di dalamnya terdapat empat pilihan yaitu Up
, Down
, Left
, dan Right
.
Kemudian pada Choice public choice = Choice.Up;
dideklarasikan variabel choice
lalu diinisalisasikan dengan Up
. Penggunaan enum
biasanya untuk merepresentasikan suatu state ataupun opsi-opsi pada smart contract seperti status pemesanan ataupun pilihan pada suatu mekanisme voting.
Penutup
Pepatah lama mengatakan perjalanan 1000 mil dimulai dengan satu langkah dasar. Belajar tipe nilai seperti boolean, unsigned integers, signed integers, string, dan enums akan berguna sebagai pondasi awal smart contract yang akan kita buat.
Dengan memahami dasar, kita bisa memiliki pengetahuan untuk memilih jenis dan alur data yang akan kita gunakan saat membuat smart contract yang lebih kompleks nantinya.
Terimakasih sudah membaca artikel ini, sampai jumpa di artikel-artikel lainnya.
Source Code : Github