Skip to main content

Pencegahan Vulnerabilities dalam Smart Contract

1. Penulisan Kode

  • Gunakan Solidity versi terbaru (≥0.8.x) yang sudah ada pengecekan overflow.
  • Pakai library terpercaya seperti OpenZeppelin.
  • Hindari kode kompleks yang tidak perlu.

2. Unit Test

  • Pastikan setiap fungsi diuji dengan input yang diketahui.
  • Gunakan framework seperti Foundry, Hardhat, atau Truffle.

Contoh unit test (Foundry):

contract MyContract {
uint256 private _value;

function setValue(uint256 newValue) external {
_value = newValue;
}

function value() external view returns (uint256) {
return _value;
}
}

function testSetValue() public {
c.setValue(123);
assertEq(c.value(), 123);
}

3. Fuzz Test

  • Uji fungsi dengan input random untuk menemukan edge case.
  • Batasi input agar relevan dengan kondisi kontrak.

Contoh fuzz test (Foundry):

function testFuzz_SetValue(uint256 x) public {
vm.assume(x < 1000);
c.setValue(x);
assertEq(c.value(), x);
}

4. Static Analysis & Audit

  • Pakai tools seperti Slither, Mythril untuk deteksi masalah umum.
  • Lakukan audit internal dan eksternal sebelum deploy.