Gabastian13 .dev
Blockchain & Solidity

Panduan Lengkap Smart Contract Solidity & Keamanan Web3

Gabastian13 •
#solidity#ethereum#web3#security

Smart contract pada jaringan Ethereum Virtual Machine (EVM) merupakan kode terdesentralisasi yang bersifat immutable (tidak dapat diubah) begitu dideploy ke mainnet. Karakteristik ini menuntut pengembang untuk memiliki standar keamanan dan optimasi kode yang sangat tinggi sejak hari pertama.

1. Filosofi “Code is Law” dan Pencegahan Reentrancy

Salah satu kerentanan paling klasik dan berbahaya dalam smart contract adalah Reentrancy Attack, seperti yang pernah menimpa The DAO pada tahun 2016.

// Contoh pencegahan Reentrancy dengan Checks-Effects-Interactions Pattern
function withdraw(uint256 amount) external nonReentrant {
    // 1. Checks
    require(balances[msg.sender] >= amount, "Saldo tidak mencukupi");
    
    // 2. Effects
    balances[msg.sender] -= amount;
    
    // 3. Interactions
    (bool success, ) = msg.sender.call{value: amount}("");
    require(success, "Transfer gagal");
}

Pola Checks-Effects-Interactions (CEI) memastikan bahwa perubahan state internal akun dieksekusi sebelum memanggil alamat eksternal, sehingga upaya recursive re-entry tidak dapat mengeksploitasi saldo kontrak.

2. Optimasi Gas dengan Storage Packing & Yul

Biaya gas pada Ethereum ditentukan oleh opcode EVM. Instruksi penyimpanan storage (SSTORE) merupakan salah satu operasi paling mahal (hingga 20,000 gas saat menulis slot baru).

3. Standar Fuzzing Test dengan Foundry

Framework modern seperti Foundry memungkinkan Property-Based Testing dan Invariant Fuzzing:

# Menjalankan 100,000 permutasi fuzzing acak
forge test --fuzz-runs 100000

Dengan mengombinasikan analisis statis (Slither), fuzzing, dan verifikasi formal, kita dapat meminimalisir risiko kegagalan protokol saat smart contract mengelola likuiditas di dunia nyata.

← Back to Blog