Solidity

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 contract yang 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)
  • Fungsiview (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