Menyelami Ethereum dan Ethereum Virtual Machine (EVM): bagaimana state tersimpan, cara kerja gas, perbedaan akun EOA dan contract, serta praktik men-deploy kontrak pertama ke testnet Sepolia

Setelah di episode 2 kita memahami block, hashing, dan consensus, pada episode ini kita masuk ke ekosistem yang paling relevan untuk karir blockchain developer: Ethereum dan Ethereum Virtual Machine (EVM). Kenapa Ethereum? Karena mayoritas smart contract di dunia — Solidity, DeFi, NFT, tokenization — hidup di EVM. Menguasai EVM berarti kalian bisa bekerja di Ethereum, BNB Chain, Polygon, Base, dan puluhan chain lainnya dengan satu keterampilan.
EVM adalah "CPU virtual" yang berjalan di ribuan node sekaligus. Setiap node mengeksekusi kode kontrak yang sama dan menghasilkan hasil yang sama — inilah yang menjamin state Ethereum konsisten tanpa perlu mempercayai node mana pun.
Ethereum bisa dipandang sebagai state machine: satu state raksasa (daftar semua akun dan saldo) yang diubah oleh transaksi. State ini tidak disimpan di database pusat, melainkan digabung ke dalam setiap block dan direplikasi ke seluruh node.
┌──────────────────────────────────────────────┐
│ ETHEREUM STATE │
│ ├── Account A (EOA) → saldo ETH, nonce │
│ ├── Account B (EOA) → saldo ETH, nonce │
│ ├── Contract X → storage, code hash │
│ └── ... (jutaan akun) │
├──────────────────────────────────────────────┤
│ Transaksi → mengubah state → dikemas block │
└──────────────────────────────────────────────┘Sebagai developer, kalian berinteraksi dengan mesin ini lewat tiga primitif: transaksi (mengubah state), call (membaca state tanpa biaya), dan gas (biaya eksekusi).
| Tipe | Dipicu oleh | Isi State | Contoh |
|---|---|---|---|
| EOA (Externally Owned Account) | Private key pengguna | Balance, nonce | Wallet MetaMask |
| Contract account | Transaksi/function call | Balance, storage, code | Kontrak ERC-20 |
Perbedaan kritis: EOA dikendalikan manusia (punya private key), contract dikendalikan kode. EOA bisa memulai transaksi; contract hanya bisa bertindak ketika dipanggil. Ini menjadi dasar banyak pola keamanan dan otomasi yang akan kita bahas.
Setiap operasi di EVM punya harga gas tetap — menjumlahkan angka itu murah, menyimpan data lebih mahal. Transaksi menghitung total gas, lalu biaya total = gas * harga gas (gwei). Kalian harus paham tiga istilah:
Kenapa gas penting? Karena ia membuat setiap program on-chain tunduk pada disiplin efisiensi. Kontrak yang boros komputasi (loop panjang, storage besar) akan sangat mahal dipakai — ini yang mendorong optimasi yang kita pelajari di episode 17.
Tip
Gunakan hardhat-gas-reporter atau forge test --gas-report untuk melihat biaya gas setiap fungsi selama pengembangan. Membangun kebiasaan membaca gas report sejak dini menghemat banyak biaya production nanti.
Mari deploy kontrak paling sederhana ke Sepolia testnet — jaringan uji coba Ethereum yang menggunakan ETH faucet (gratis, bukan uang asli).
Buat proyek dan kontrak:
mkdir ~/blockchain-lab/hello-evm && cd ~/blockchain-lab/hello-evm
npm init -y
npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox
npx hardhat init --yesBuat kontrak HelloEVM:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
contract HelloEVM {
string public message;
event MessageChanged(address indexed by, string value);
constructor(string memory _message) {
message = _message;
}
function setMessage(string memory _message) external {
message = _message;
emit MessageChanged(msg.sender, _message);
}
}Tambahkan jaringan Sepolia di hardhat.config.js:
require("@nomicfoundation/hardhat-toolbox");
module.exports = {
solidity: "0.8.24",
networks: {
sepolia: {
url: "https://ethereum-sepolia-rpc.publicnode.com",
accounts: [process.env.PRIVATE_KEY],
},
},
};Ambil ETH gratis dari faucet Sepolia, lalu deploy:
PRIVATE_KEY=<private_key_testnet> npx hardhat run scripts/deploy.js --network sepoliaWarning
Gunakan hanya wallet testnet dengan private key khusus untuk development. Jangan pernah memakai wallet utama — key yang bocor ke log atau repositori berarti dana hilang. Di episode 18 kita bahas pengelolaan key yang benar.
Setelah deploy, verifikasi kode kontrak di explorer (Sepolia Etherscan) supaya transparan dan bisa dibaca siapa pun:
PRIVATE_KEY=<private_key_testnet> npx hardhat verify <alamat_kontrak> "Halo EVM" --network sepoliaVerifikasi penting bukan hanya untuk kredibilitas — aplikasi frontend dan alat analitik membaca ABI terverifikasi untuk menampilkan antarmuka kontrak kalian.
Inti yang harus dibawa pulang:
npx hardhat run --network sepolia.Di episode 4 selanjutnya kita mulai menulis bahasa yang akan menemani kalian bertahun-tahun — Solidity dasar: tipe data, fungsi, modifier, events, dan token standard ERC-20, dengan praktik membangun kontrak token pertama kalian. Mari lanjut ke episode 4!