Study
Hardhat

Debugging dengan Hardhat (Stack Trace Error Solidity)

Penjelasan

Salah satu keunggulan Hardhat Network dibanding node EVM lain adalah kemampuannya menampilkan stack trace Solidity yang jelas dan detail saat sebuah transaksi revert — mencantumkan baris kode persis penyebab revert, bukan hanya error generik dari EVM. Ini sangat membantu, terutama untuk error seperti out-of-gas atau revert tanpa pesan yang biasanya sulit ditelusuri. Stack trace otomatis muncul di output test yang gagal tanpa konfigurasi tambahan. Untuk transaksi yang lebih kompleks (melibatkan banyak internal call), Hardhat menampilkan call stack lengkap layer demi layer, memudahkan mengidentifikasi contract dan fungsi mana yang menjadi sumber masalah sebenarnya.

Contoh Konsep

it("harus menampilkan stack trace jelas saat revert", async function () {
  const Bank = await ethers.getContractFactory("SimpleBank");
  const bank = await Bank.deploy();

  // Transaksi ini akan revert karena saldo tidak cukup;
  // Hardhat menampilkan baris require() persis penyebabnya
  await expect(bank.withdraw(100)).to.be.revertedWith(
    "Insufficient balance"
  );
});

Praktikum

Buat test yang sengaja memicu revert pada fungsi withdraw tanpa deposit sebelumnya, jalankan tanpa expect.revertedWith untuk melihat stack trace mentah yang ditampilkan Hardhat.

Editor Latihan

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

Tips

Jangan bungkus setiap pemanggilan dengan try-catch saat sedang debugging — biarkan error naik apa adanya supaya stack trace lengkap Hardhat tampil di terminal.