Solidity adalah bahasa pemrograman dominan untuk menulis smart contract Ethereum — bahasa bertipe statis dan berorientasi objek yang dipengaruhi oleh C++, Python, dan JavaScript, yang dikompilasi ke bytecode EVM — format biner yang berjalan di setiap node Ethereum, dan hampir setiap protokol DeFi, kontrak NFT, dan DAO utama di Ethereum (dan rantai yang kompatibel dengan EVM) ditulis dalam Solidity.
Karakteristik Utama
- Bertipe statis: Tipe variabel harus dideklarasikan pada waktu kompilasi
- Berorientasi kontrak: Kode diorganisir ke dalam unit
contractyang mengandung variabel state, fungsi, event, dan modifier - Target EVM: Dikompilasi ke bytecode EVM; mewarisi batasan EVM (aritmatika 256-bit, biaya gas, model penyimpanan)
- Spesifik versi: Kontrak menentukan versi compiler dengan
pragma solidity ^0.8.0;
Fitur Bahasa Inti
“`solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract SimpleStorage {
uint256 public storedValue;
event ValueChanged(uint256 newValue);
function store(uint256 value) external {
storedValue = value;
emit ValueChanged(value);
}
}
“`
Konsep kunci:
- Variabel state — Disimpan permanen di blockchain (mahal gas)
- Fungsi —
view(baca saja),pure(tanpa akses state),external/public/internal/private - Events — Log data off-chain (murah)
- Mappings — Penyimpanan key-value:
mapping(address => uint256) balances
Kelas Kerentanan Penting
| Kerentanan | Deskripsi | Eksploit Terkenal |
|---|---|---|
| Reentrancy | Kontrak memanggil kontrak eksternal sebelum memperbarui state | The DAO hack (2016, $60 juta) |
| Integer overflow | Aritmatika membungkus batas integer tetap | Berbagai hack DeFi (pra-Solidity 0.8) |
| tx.origin auth | Menggunakan tx.origin alih-alih msg.sender untuk autentikasi | Serangan phishing |
| Front-running | Transaksi terlihat di mempool sebelum konfirmasi | Serangan sandwich DEX |
Solidity 0.8 (2020) menambahkan pemeriksaan overflow bawaan, menghilangkan kelas integer overflow sebagai masalah default.
Framework dan Alat Umum
| Alat | Tujuan |
|---|---|
| Hardhat | Framework testing JS dan lingkungan pengembangan lokal |
| Foundry | Framework testing berbasis Rust; test native Solidity yang cepat |
| Remix IDE | IDE berbasis browser untuk prototipe cepat |
| OpenZeppelin | Library kontrak yang telah diaudit (ERC-20, ERC-721) |
| Slither | Alat analisis statis untuk deteksi kerentanan |
Alternatif Solidity
| Bahasa | Target | Catatan |
|---|---|---|
| Vyper | EVM | Dipengaruhi Python, lebih sederhana |
| Cairo | StarkNet | VM native ZK |
| Rust/Anchor | Solana | Ekosistem terpisah |
| Move | Aptos/Sui | Berorientasi aset |
Sejarah
- 2014 — Gavin Wood mengusulkan Solidity di Devcon 0 (Berlin)
- 2015 — Compiler pertama dirilis bersama peluncuran mainnet Ethereum
- 2016 — The DAO hack memicu fokus keamanan besar di komunitas
- 2017 — Boom ICO; adopsi Solidity meledak
- 2020 — Solidity 0.8 memperkenalkan pemeriksaan overflow
Istilah Terkait
Lihat Juga
Sumber
- Wood, G. (2014). Ethereum: A Secure Decentralised Generalised Transaction Ledger (Yellow Paper). Ethereum Foundation.
- Atzei, N., Bartoletti, M., & Cimoli, T. (2017). A Survey of Attacks on Ethereum Smart Contracts. USENIX 2017.
- ConsenSys Diligence. (2023). Ethereum Smart Contract Security Best Practices. ConsenSys GitHub.
Terakhir diperbarui: 2026-04