Ethereum and Solidity Basics (Teori Dasar 03)
Kenapa Ethereum?
Ethereum adalah blockchain pertama yang mendukung smart contract secara luas. Awalnya, blockchain seperti Bitcoin hanya bisa melakukan transaksi sederhana, mirip seperti mengirim uang dari satu orang ke orang lain. Namun, Ethereum membawa sesuatu yang baru dengan menyediakan lingkungan yang bisa diprogram, memungkinkan kita membuat aplikasi yang berjalan otomatis di blockchain. Itulah yang membuat Ethereum menjadi pilihan utama untuk smart contract.
Ethereum memungkinkan kita untuk:
- Membuat Aplikasi Terdesentralisasi (DApps): Ini adalah aplikasi yang berjalan di blockchain tanpa kontrol dari pihak ketiga. Contohnya, DApps untuk keuangan, game, dan voting.
- Fleksibilitas dengan Solidity: Karena Ethereum mendukung bahasa pemrograman seperti Solidity, developer dapat menulis smart contract yang kompleks dan unik.
- Keamanan dan Transparansi: Dengan sifatnya yang terdesentralisasi dan transparan, data di Ethereum sangat sulit diubah atau dipalsukan, membuatnya aman dan dapat diandalkan untuk berbagai jenis transaksi dan aplikasi.
Pengenalan Solidity
Solidity adalah bahasa pemrograman utama untuk membuat smart contract di blockchain Ethereum. Dikembangkan dengan sintaks yang mirip dengan JavaScript, Solidity dirancang untuk memudahkan developer dalam membangun dan mengontrol fungsi dari smart contract. Dengan Solidity, kita bisa menetapkan aturan, fungsi, dan kondisi yang mengatur bagaimana smart contract beroperasi.
Beberapa hal yang membuat Solidity penting:
- Statically Typed: Semua variabel harus dideklarasikan dengan tipe data tertentu, sehingga lebih mudah mengontrol bagaimana data akan diproses.
- Event-Driven: Solidity memungkinkan pembuatan event yang memudahkan pemantauan dan pelacakan aktivitas di smart contract.
- Smart Contract-Oriented: Semua yang kita buat dengan Solidity langsung dapat dipakai dalam bentuk smart contract di Ethereum.
Struktur Dasar Solidity
Di dalam Solidity, kita punya komponen utama seperti fungsi, variabel, tipe data, dan kontrol aliran (if, for, while). Berikut adalah beberapa elemen kunci dalam Solidity:
1. Fungsi (Functions)
Fungsi adalah bagian dari smart contract yang menjalankan perintah tertentu, misalnya untuk menyimpan data, mengirim token, atau memeriksa suatu kondisi.
function setNumber(uint256 _number) public {
storedNumber = _number;
}
- Di sini,
setNumber
adalah fungsi untuk menyimpan angka ke dalam variabelstoredNumber
.
2. Variabel (Variables)
Variabel digunakan untuk menyimpan data dalam smart contract. Ada beberapa jenis variabel seperti state variables
(variabel global yang tersimpan di blockchain) dan local variables
(variabel yang hanya digunakan dalam fungsi tertentu).
uint256 public storedNumber; // State variable
Pada contoh di atas, constructor menetapkan angka
menjadi 10
dan pesan
menjadi "Selamat datang di smart contract!" saat kontrak ini pertama kali diterbitkan di blockchain. Constructor tidak bisa dipanggil lagi setelah kontrak dibuat.
3. Tipe Data (Data Types)
Solidity mendukung beberapa tipe data seperti:
- uint256: Angka bulat tanpa tanda, sering digunakan untuk menyimpan angka non-negatif.
- address: Alamat yang merujuk ke pengguna atau kontrak lain di blockchain.
- bool: Tipe data yang menyimpan nilai
true
ataufalse
.
address public owner; // Menyimpan alamat dari pemilik kontrak
bool public isActive = true; // Status kontrak aktif atau tidak
- setAngka: Fungsi ini menerima input
_angka
dan menetapkannya ke state variableangka
. Ini mengubah data yang tersimpan di blockchain. - getAngka: Fungsi ini mengembalikan nilai dari
angka
tanpa mengubah data apapun, sehingga aman untuk dibaca.
4. Kontrol Aliran (Control Flow)
Kita juga bisa mengontrol alur eksekusi dengan kondisi dan loop seperti if
, for
, dan while
.
function checkNumber(uint256 _number) public pure returns (string memory) {
if (_number > 10) {
return "Angka lebih besar dari 10";
} else {
return "Angka 10 atau kurang";
}
}
Contoh Smart Contract Sederhana
Untuk menggabungkan semua konsep di atas, mari kita buat sebuah contoh smart contract sederhana yang bisa menyimpan dan menampilkan sebuah angka.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 public storedNumber; // State variable untuk menyimpan angka
// Function untuk menyimpan angka ke dalam kontrak
function setNumber(uint256 _number) public {
storedNumber = _number;
}
// Function untuk mengambil angka yang sudah disimpan
function getNumber() public view returns (uint256) {
return storedNumber;
}
}
Penjelasan
storedNumber
: Variabel global yang menyimpan angka, yang bisa diakses oleh siapa saja.setNumber
: Fungsi untuk menyimpan angka yang diberikan oleh pengguna ke dalam variabelstoredNumber
.getNumber
: Fungsi untuk mengambil angka yang tersimpan dan mengembalikannya ke pengguna.
Kontrak ini menunjukkan dasar-dasar Solidity dan bagaimana setiap komponen bekerja bersama untuk membangun smart contract.