Forge adalah subsistem pengujian dan deployment dari kerangka Foundry — menyediakan lingkungan pengujian baterai untuk smart contract Ethereum yang ditulis dalam Solidity, mendukung tiga metodologi pengujian yang berbeda (unit testing, fuzz testing, dan invariant testing) yang bersama-sama mencakup berbagai kelas bug dan kerentanan.
Di mana suite tes smart contract tradisional menggunakan test runner JavaScript atau Python yang mengabstraksi lingkungan eksekusi aktual, tes Forge ditulis dalam Solidity dan dijalankan dalam Forge EVM yang terisolasi — artinya bahasa yang sama, opcode yang sama, semantik gas yang sama seperti kontrak yang di-deploy, menghilangkan kesalahan terjemahan di mana perilaku tes JS menyimpang dari perilaku EVM aktual.
Tiga Mode Pengujian
Unit Test — Memvalidasi fungsi spesifik dengan input spesifik:
“`solidity
contract MyTest is Test {
MyContract c;
function setUp() public {
c = new MyContract();
}
function test_BasicTransfer() public {
vm.prank(alice); // panggilan berikutnya dari alice
c.transfer(bob, 100);
assertEq(c.balanceOf(bob), 100);
}
}
“`
Fuzz Test — Secara otomatis menghasilkan ribuan input acak untuk menemukan edge case:
“`solidity
// Forge secara otomatis menghasilkan input amount acak
function testFuzz_TransferNeverExceedsBalance(uint256 amount) public {
vm.assume(amount > 0 && amount <= alice.balance);
c.transfer(bob, amount);
assertEq(c.balanceOf(bob), before + amount);
}
“`
Invariant Test — Mendefinisikan properti yang harus selalu benar; Foundry mencoba melanggarnya dengan urutan panggilan fungsi acak:
“`solidity
function invariant_TotalSupplyAlwaysConstant() public {
assertEq(token.totalSupply(), INITIAL_SUPPLY);
}
“`
Cheatcodes
Forge menyediakan cheatcodes melalui antarmuka vm untuk manipulasi state:
vm.prank(address)— Tetapkan msg.sender untuk panggilan berikutnyavm.warp(timestamp)— Set waktu blokvm.deal(address, amount)— Set saldo ETH akunvm.expectRevert("message")— Harapkan revert dengan pesan tertentuvm.mockCall(...)— Mock nilai kembalian kontrak
Kritik
Forge memerlukan pengetahuan Solidity untuk menulis tes, tidak seperti Hardhat yang memungkinkan pengujian dalam JavaScript yang familiar bagi banyak pengembang web. Kurva pembelajaran lebih curam bagi pemula.
Sentimen Media Sosial
Di X/Twitter, Forge sangat populer di kalangan Solidity developer dan auditor smart contract. Di komunitas kripto Indonesia, Forge dikenal di kalangan developer blockchain yang serius.
Terakhir diperbarui: 2026-04
Istilah Terkait
Lihat Juga
Sumber
- Foundry Book (https://book.getfoundry.sh) — dokumentasi resmi Foundry dan Forge.
- Foundry GitHub (https://github.com/foundry-rs/foundry) — repositori open-source.
- Paradigm Blog (https://www.paradigm.xyz/blog) — artikel teknis tentang pengembangan Foundry.