Belajar Solidity - Instalasi & Hello World
Episode 3 of 23

Belajar Solidity - Instalasi & Hello World

Menulis kontrak Solidity pertama: setup proyek Hardhat dan Foundry, membedah struktur kontrak HelloWorld dengan state variable dan getter otomatis, lalu deploy kontrak lewat Remix dan Hardhat Network sambil memahami konsep alamat dan transaksi

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 2 kita memahami arsitektur EVM — storage, memory, calldata, dan gas — pada episode ini kalian akhirnya menulis dan men-deploy kontrak pertama. Ini adalah momen penting: dari sini konsep abstrak (alamat, transaksi, gas) menjadi sesuatu yang bisa kalian lihat dan sentuh.

Mengapa episode ini penting? Karena Hello World di Solidity tidak sesederhana mencetak string ke layar. Kalian akan belajar bahwa state variable bisa diakses publik, bahwa kompiler otomatis membuatkan getter, dan bahwa men-deploy kontrak berarti membuat transaksi yang tercatat di chain — konsep yang menjadi dasar seluruh series.

Setup Proyek: Hardhat

Buat proyek Hardhat di direktori lab:

Inisialisasi proyek Hardhat
mkdir solidity-lab && cd solidity-lab
npm init -y
npm install --save-dev hardhat
npx hardhat init

Pilih opsi Create a JavaScript project dan accept semua default. Struktur yang dihasilkan:

Struktur proyek Hardhat
contracts/        # kode sumber Solidity
scripts/          # script deploy
test/             # file testing
hardhat.config.js # konfigurasi proyek

Versi alternatif tanpa JavaScript adalah Foundry — inisialisasi proyeknya:

Inisialisasi proyek Foundry
forge init solidity-foundry
cd solidity-foundry
forge build

forge init membuat struktur src/, test/, dan script/. Kedua toolchain ini kita bedah lengkap di episode 9 dan 10.

Kontrak HelloWorld Pertama

Buat file contracts/HelloWorld.sol:

contracts/HelloWorld.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.36;
 
contract HelloWorld {
    string public greeting;
 
    constructor(string memory _greeting) {
        greeting = _greeting;
    }
 
    function setGreeting(string memory _newGreeting) public {
        greeting = _newGreeting;
    }
 
    function sayHello() public view returns (string memory) {
        return greeting;
    }
}

Mari bedah bagian-bagiannya:

  • string public greeting adalah state variable. Karena dideklarasikan public, kompiler otomatis membuat getter bernama greeting() — kalian tidak perlu menulis fungsi getter manual.
  • constructor berjalan sekali saat deploy, menerima nilai awal.
  • setGreeting memodifikasi state — transaksi yang memanggilnya membayar gas untuk SSTORE.
  • sayHello() adalah view — hanya membaca state tanpa mengubah, sehingga tidak perlu gas saat dipanggil sebagai panggilan read.

Tip

Inilah pembeda utama Solidity vs bahasa biasa: fungsi view/pure bisa dipanggil tanpa biaya, sedangkan fungsi yang mengubah state memerlukan transaksi ber-gas. Pola ini akan kalian temui terus-menerus.

Deploy via Remix (Paling Cepat)

Cara tercepat melihat kontrak berjalan adalah Remix (remix.ethereum.org):

  1. Buka remix.ethereum.org, buat file HelloWorld.sol di folder contracts.
  2. Tab Solidity Compiler → klik Compile HelloWorld.sol.
  3. Tab Deploy & Run Transactions → pilih environment Remix VM → masukkan "Halo Solidity" di kolom constructor → klik Deploy.
  4. Kontrak muncul di panel Deployed Contracts dengan alamatnya; klik getter greeting untuk membaca nilainya.

Di Remix VM kalian bisa melihat console: setiap deploy dan panggilan menampilkan detail transaksi, gas yang terpakai, dan event log.

Deploy via Hardhat Network

Untuk deploy dari terminal, buat script scripts/deploy.js:

scripts/deploy.js
const { ethers } = require("hardhat");
 
async function main() {
  const HelloWorld = await ethers.getContractFactory("HelloWorld");
  const hello = await HelloWorld.deploy("Halo Solidity");
  await hello.waitForDeployment();
 
  console.log("Kontrak di-deploy ke:", await hello.getAddress());
  console.log("Greeting:", await hello.greeting());
}
 
main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

Jalankan di jaringan lokal Hardhat:

Deploy ke Hardhat Network
npx hardhat run scripts/deploy.js

Output menunjukkan alamat kontrak — misalnya 0x5FbDB2315678afecb367f032d93F642f64180aa3 — dan nilai greeting awal. Alamat itu adalah identitas kontrak di chain; transaksi yang memanggil fungsi kontrak mengirim ke alamat ini.

Warning

Jangan pernah men-deploy kontrak yang belum diuji ke mainnet Ethereum. Setiap transaksi mainnet memakan ETH asli, dan bug di kontrak immutable bisa membuat dana terkunci selamanya. Semua praktik di series ini memakai jaringan lokal atau testnet Sepolia.

Verifikasi

Pastikan seluruh alur bekerja:

Build dan uji kontrak
npx hardhat compile
npx hardhat test

npx hardhat compile harus berhasil tanpa error — artinya kompiler Solidity menerima kode kalian. Jika ada peringatan seperti unused variable, perhatikan dan bereskan; kita akan memperlakukan peringatan kompiler secara serius mulai episode 15.

Penutup

Di episode 3 ini kalian telah menulis dan men-deploy kontrak pertama:

  • Setup proyek Hardhat (npx hardhat init) dan Foundry (forge init).
  • string public greeting menghasilkan getter otomatis.
  • Fungsi view bisa dibaca gratis; fungsi yang mengubah state butuh transaksi ber-gas.
  • Deploy via Remix VM dan Hardhat Network, masing-masing menampilkan alamat dan log transaksi.

Di episode 4 selanjutnya kita akan membahas tipe data dan variabel — value types (bool, uint, int, address, bytes, enum) dan reference types (string, bytes, array, struct, mapping), plus data location storage/memory/calldata. Pastikan kontrak HelloWorld kalian sudah berhasil, karena episode selanjutnya akan memakainya sebagai basis.