Mengenal dua toolchain utama pengembangan Solidity: Foundry dengan forge build, test, dan script plus cast untuk interaksi RPC, serta Hardhat dengan Hardhat Network, scripts deploy, dan ekosistem plugin hardhat-toolbox, termasuk kapan memilih masing-masing

Setelah di episode 8 kalian memahami events dan cara DApp mengonsumsinya, pada episode ini kita fokus pada alat kerja sehari-hari: Foundry dan Hardhat. Keduanya adalah toolchain yang dipakai tim produksi untuk build, test, dan deploy kontrak.
Mengapa episode ini penting? Karena menulis Solidity di editor saja tidak cukup — kalian butuh compiler, jaringan lokal, script deploy, dan framework testing. Foundry dan Hardhat adalah dua cara dominan untuk itu, dan memahami keduanya membuat kalian fleksibel di tim mana pun.
Foundry adalah toolchain berbasis Rust yang seluruhnya berorientasi Solidity — bahkan test dan script-nya ditulis dalam Solidity. Komponen utamanya:
| Tool | Fungsi |
|---|---|
forge | Build, test, deploy script, dan manajemen proyek |
cast | Interaksi RPC: baca state, kirim transaksi, decode data |
anvil | Node Ethereum lokal untuk development |
forge build
forge test -vvvforge build meng-compile kontrak ke out/ dan menulis ABI; forge test menjalankan test di test/. Kita bedah testing lengkap di episode 10.
Foundry men-deploy lewat script Solidity yang dijalankan dengan forge script:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.36;
import {Script, console} from "forge-std/Script.sol";
import {HelloWorld} from "../src/HelloWorld.sol";
contract DeployScript is Script {
function run() external {
vm.startBroadcast();
new HelloWorld("Halo dari Foundry");
vm.stopBroadcast();
}
}forge script script/Deploy.s.sol --rpc-url http://127.0.0.1:8545 --broadcastvm.startBroadcast() menandai bagian yang menghasilkan transaksi nyata; tanpa --broadcast, forge script hanya mensimulasikan (dry-run).
cast adalah Swiss-army knife untuk RPC:
cast call 0x5FbDB... "greeting()" --rpc-url http://127.0.0.1:8545
cast send 0x5FbDB... "setGreeting(string)" "Halo baru" \
--rpc-url http://127.0.0.1:8545 --private-key 0xac0974...cast call untuk membaca state (gratis), cast send untuk mengirim transaksi. anvil menyediakan akun development dengan ETH dalam jumlah besar — sempurna untuk praktik.
Hardhat adalah framework berbasis Node.js dengan ekosistem plugin JavaScript terbesar. Komponen utamanya:
| Fitur | Fungsi |
|---|---|
| Hardhat Network | Node Ethereum lokal built-in |
hardhat-toolbox | Paket plugin: ethers.js, Chai, coverage, gas reporter |
| Scripts | Deploy & task dalam JavaScript/TypeScript |
| Ekosistem plugin | Etherscan verify, gas reporter, Tenderly, dan lainnya |
npx hardhat node
npx hardhat run scripts/deploy.js --network localhostnpx hardhat node membuka Hardhat Network di http://127.0.0.1:8545 dengan akun development otomatis — ekuivalen anvil di Foundry.
Install satu paket untuk mendapatkan ekosistem lengkap:
npm install --save-dev @nomicfoundation/hardhat-toolboxToolbox membundel ethers.js, network helpers, testing (Chai/Mocha), coverage, dan gas reporter sekaligus — jadi satu instalasi sudah cukup untuk workflow produksi.
| Aspek | Foundry | Hardhat |
|---|---|---|
| Bahasa test/script | Solidity | JavaScript/TypeScript |
| Bahasa inti | Rust | Node.js |
| Kecepatan | Sangat cepat (native) | Lambat untuk suite besar |
| Ekosistem plugin | Fokus, solidity-native | Paling luas (verifikasi, gas, Tenderly) |
| Fuzzing & cheatcode | vm.* bawaan, sangat kuat | Perlu plugin |
| Cocok untuk | Dev cepat, fuzz, deploy sederhana | Tim JS, integrasi frontend, ekosistem plugin |
Tip
Tidak perlu memilih salah satu secara fanatik. Banyak tim produksi memakai Foundry untuk testing/fuzz dan Hardhat untuk deploy + verifikasi di proyek yang sama. Series ini memakai keduanya agar kalian nyaman di ekosistem mana pun.
Inti yang harus dibawa pulang:
forge build/test/script + cast untuk RPC + anvil node lokal — semuanya Solidity.hardhat-toolbox.Di episode 10 selanjutnya kita akan membahas testing: Foundry & Hardhat — menulis test dengan forge test, cheatcode vm.prank, vm.deal, dan vm.warp, test berbasis Mocha/Chai + ethers.js, serta coverage dengan solidity-coverage. Sampai jumpa di episode 10!