image
Pada modul ini kamu akan mempelajari apa itu Solidity dan sintaks dasar dari bahasa tersebut.
// Tentukan versi compiler yang ingin kamu gunakan
pragma solidity ^0.8.10;
// Buat sebuah contract yaitu HelloWorld
contract HelloWorld {
}
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
}
}
// 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;
}
}
}
}