Belajar Blockchain Developer - Tools (Hardhat/Foundry)
Episode 6 of 28

Belajar Blockchain Developer - Tools (Hardhat/Foundry)

Menguasai toolchain profesional Hardhat dan Foundry: struktur proyek, task, menulis deployment script, interaksi cepat dengan kontrak, dan workflow lengkap membangun proyek dari nol sampai deploy

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

Pendahuluan

Setelah di episode 5 kalian menguasai pola desain kontrak, pada episode ini kita memperkuat alat kerjanya: Hardhat dan Foundry. Dua toolchain ini adalah standar industri — Hardhat berbasis Node.js dengan ekosistem plugin yang luas, Foundry berbasis Rust dengan kecepatan eksekusi yang luar biasa. Menguasai keduanya memberi kalian fleksibilitas penuh dalam tim mana pun.

Episode ini membangun proyek lengkap: struktur, deployment script, interaksi, dan workflow yang bisa kalian jadikan template untuk proyek berikutnya.

Hardhat: Ekosistem Node.js

Struktur proyek Hardhat standar:

Struktur proyek Hardhat
my-project/
├── contracts/          # kode Solidity
├── scripts/            # deployment & automation
├── test/               # unit test
├── hardhat.config.js   # konfigurasi compiler, jaringan, plugin
└── package.json

Mulai proyek dan instal plugin:

Buat proyek Hardhat
mkdir hardhat-lab && cd hardhat-lab
npm init -y
npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox
npx hardhat init --yes

hardhat-toolbox menggabungkan plugin testing (chai), coverage, gas reporter, verifikasi Etherscan, dan network helpers dalam satu paket — hemat waktu setup.

Foundry: Kecepatan Rust

Foundry menyediakan perintah inti: forge (build/test/deploy), cast (interaksi chain), dan anvil (local node). Inisialisasi proyek:

Buat proyek Foundry
mkdir foundry-lab && cd foundry-lab
forge init
forge build

Struktur Foundry hampir sama dengan Hardhat: src/ untuk kontrak, test/ untuk test, script/ untuk deployment. Perbedaan terbesar ada di kecepatan dan workflow test (kita bedah di episode 7).

Note

Pilih berdasarkan kebutuhan: Hardhat unggul saat kalian butuh plugin ekosistem dan bahasa JavaScript di seluruh stack; Foundry unggul untuk test fuzz, kecepatan, dan kontrol alur yang presisi. Banyak tim production memakai keduanya sekaligus.

Deployment Script

Deployment yang benar bukan sekadar menjalankan deploy() — ia harus verifiable, idempotent, dan menangkap alamat untuk digunakan lapisan berikutnya. Contoh Hardhat:

scripts/deploy.js
const hre = require("hardhat");
 
async function main() {
  const [deployer] = await hre.ethers.getSigners();
  console.log("Deploying with:", deployer.address);
 
  const MyToken = await hre.ethers.getContractFactory("MyToken");
  const token = await MyToken.deploy(1_000_000);
  await token.waitForDeployment();
 
  const address = await token.getAddress();
  console.log("MyToken deployed to:", address);
 
  // Simpan alamat untuk lapisan berikutnya
  require("fs").writeFileSync("deployments/token.json", JSON.stringify({ address }));
}
 
main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

Jalankan di local network (anvil / hardhat node):

Deploy di local node
npx hardhat node &
npx hardhat run scripts/deploy.js --network localhost

Foundry punya pendekatan serupa dengan Forge Script:

script/Deploy.s.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
 
import {Script} from "forge-std/Script.sol";
import {MyToken} from "../src/MyToken.sol";
 
contract Deploy is Script {
    function run() external {
        vm.startBroadcast();
        new MyToken(1_000_000);
        vm.stopBroadcast();
    }
}
Jalankan Foundry deploy
forge script script/Deploy.s.sol --rpc-url http://127.0.0.1:8545 --broadcast

Interaksi Cepat dengan cast

Untuk inspeksi dan interaksi on-chain tanpa menulis kode, cast sangat praktis:

Interaksi via cast
cast call 0x<TokenAddress> "name()(string)" --rpc-url http://127.0.0.1:8545
cast send 0x<TokenAddress> "transfer(address,uint256)" 0x<Penerima> 100 \
  --private-key 0x<KeyDev> --rpc-url http://127.0.0.1:8545
cast balance 0x<Penerima> --rpc-url http://127.0.0.1:8545

cast call untuk membaca (gratis), cast send untuk menulis (transaksi). Kemampuan membaca ABI secara langsung dari antarmuka ini membuat debugging jauh lebih cepat.

Workflow Lengkap

Workflow yang dipakai tim production di 2026:

Alur development harian
1. npx hardhat node / anvil          → local chain
2. npx hardhat run scripts/deploy.js  → deploy ke local
3. npx hardhat test                  → unit test + coverage
4. forge test --gas-report           → cek biaya gas
5. deploy ke testnet (Sepolia)       → uji integrasi
6. verifikasi di explorer            → transparansi

Semua langkah ini menargetkan satu contract yang sama — kontrak kalian harus berperilaku identik di local, testnet, dan mainnet. Perbedaan lingkungan biasanya muncul di bagian yang berhubungan dengan dunia luar (oracles, jaringan lain), yang kita bahas di episode 11 dan 16.

Penutup

Inti yang harus dibawa pulang:

  • Hardhat (Node.js, plugin kaya) dan Foundry (Rust, cepat) adalah dua standar toolchain.
  • Deployment script harus menyimpan alamat dan idempotent.
  • cast mempercepat debugging dan interaksi on-chain.
  • Workflow: local node → test → gas report → testnet → verifikasi.

Di episode 7 selanjutnya kita membahas lapisan yang membuat kontrak kalian dipercaya — testing & auditing: unit test, fuzzing, dan invariant testing dengan Foundry, plus cara membangun test suite yang komprehensif. Mari lanjut ke episode 7!

Belajar Blockchain Developer - Tools (Hardhat/Foundry) | Belajar Blockchain Developer