Study
Hardhat

Struktur Project Hardhat

Penjelasan

Project Hardhat hasil `npx hardhat init` punya struktur standar: `contracts/` berisi file Solidity, `scripts/` berisi script JavaScript untuk deployment atau interaksi, `test/` berisi file test JavaScript/TypeScript, dan `hardhat.config.js` (atau `.ts`) sebagai pusat konfigurasi seluruh project — mirip foundry.toml tapi ditulis sebagai module JavaScript, bukan format TOML. Karena berupa file JavaScript biasa, hardhat.config.js bisa berisi logika dinamis (import environment variable, kondisi if/else) yang sulit dilakukan di file konfigurasi statis. Ini adalah salah satu kelebihan pendekatan berbasis Node.js dibanding toolchain lain.

Contoh Konsep

// hardhat.config.js
require("@nomicfoundation/hardhat-toolbox");

/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
  solidity: "0.8.20",
  paths: {
    sources: "./contracts",
    tests: "./test",
    cache: "./cache",
    artifacts: "./artifacts",
  },
};

// Struktur folder:
// hello_hardhat/
// ├── hardhat.config.js
// ├── contracts/Lock.sol
// ├── scripts/deploy.js
// └── test/Lock.js

Praktikum

Buka hardhat.config.js hasil init, lalu ubah versi Solidity menjadi 0.8.24 dan tambahkan pengaturan optimizer aktif dengan 200 runs.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Gunakan `require("@nomicfoundation/hardhat-toolbox")` di awal config — paket ini membundel plugin-plugin paling umum dipakai (ethers, chai matchers, gas reporter, verify) jadi satu instalasi saja.