Solidity
Pengenalan Solidity & Smart Contract
Pengertian Solidity, smart contract, dan Ethereum Virtual Machine (EVM) sebagai tempat kontrak dijalankan.
Struktur Kontrak & Pragma Version
Anatomi file Solidity: SPDX license identifier, pragma version, dan keyword contract sebagai pembungkus kode.
Tipe Data di Solidity
Tipe data dasar Solidity: uint/int, bool, address (alamat wallet/kontrak), bytes, dan string.
Variabel State & Visibility
Variabel state yang tersimpan permanen di blockchain, dan visibility (public/private/internal/external) yang mengatur siapa boleh mengaksesnya.
Function Dasar: view, pure, payable
Mendefinisikan function di Solidity, dan tiga modifier khusus: view (baca state), pure (tanpa akses state), payable (bisa menerima Ether).
Operator di Solidity
Operator aritmatika, perbandingan, dan logika di Solidity, serta perlindungan overflow/underflow bawaan sejak versi 0.8.
Percabangan di Solidity
Struktur if, else if, else di Solidity — sintaks mirip bahasa C-family.
Perulangan di Solidity
Perulangan for dan while di Solidity, dan alasan kenapa loop harus dipakai hati-hati karena batas gas.
Array di Solidity
Array fixed-size dan dynamic di Solidity, storage array (permanen) vs memory array (sementara).
Mapping di Solidity
Struktur data key-value paling penting di Solidity — mapping, dipakai untuk saldo, kepemilikan, dan lookup cepat berbasis address.
Struct di Solidity
Mengelompokkan beberapa field jadi satu tipe data kustom dengan struct, sering dikombinasikan dengan mapping.
Enum di Solidity
Merepresentasikan status/kategori tetap dengan enum, umum dipakai untuk state machine sederhana pada kontrak.
Function Modifier di Solidity
Membuat aturan yang bisa dipakai ulang di banyak function dengan modifier kustom, misalnya membatasi akses khusus pemilik kontrak.
Events & Logging di Solidity
Mencatat aktivitas penting kontrak ke blockchain log dengan event dan emit, agar bisa dipantau aplikasi luar.
Error Handling: require, revert, assert
Membatalkan transaksi dengan aman memakai require (validasi input), revert (custom error), dan assert (invariant internal).
Inheritance & Interface di Solidity
Pewarisan contract dengan is, override function, dan interface sebagai kontrak standar untuk interoperabilitas antar kontrak.
Payable & Ether: msg.sender, msg.value
Menerima Ether dengan function payable, dan variabel global msg.sender/msg.value untuk mengetahui siapa mengirim berapa.
Storage vs Memory vs Calldata
Tiga lokasi penyimpanan data di Solidity — storage (permanen, mahal), memory (sementara), dan calldata (parameter external, paling murah).
Tugas Akhir
Latihan akhir menggabungkan struct, mapping, modifier, event, dan require dalam satu smart contract sistem tabungan sederhana.