| Penulis | Vogelsteller, Fabian; Buterin, Vitalik |
|---|---|
| Tahun | 2015 |
| Proyek | Ethereum (EIP-20) |
| Lisensi | MIT |
| Sumber Resmi | eips.ethereum.org/EIPS/eip-20 |
EIP-20 (ERC-20) — ditulis oleh Fabian Vogelsteller dan Vitalik Buterin, diajukan 19 November 2015, mencapai status Final pada 2017 — mendefinisikan antarmuka kontrak pintar minimal dan terpadu untuk token fungible di Ethereum: enam fungsi wajib (totalSupply, balanceOf, transfer, transferFrom, approve, allowance) dan dua event (Transfer, Approval). Standar ini menetapkan API token universal sehingga wallet, exchange, DEX, atau protokol DeFi apa pun dapat berinteraksi dengan token ERC-20 mana pun menggunakan kode yang sama — menjadikan ERC-20 standar Ethereum paling berpengaruh dan fondasi dari era ICO, DeFi, dan seluruh ekonomi token kripto.
Konteks Sebelum ERC-20
Sebelum ERC-20, kontrak token Ethereum sepenuhnya bersifat custom. Token REP Augur, token DAO awal, dan token proyek-spesifik masing-masing mengimplementasikan nama fungsi, tipe parameter, dan struktur event yang berbeda-beda. Wallet membutuhkan integrasi kustom untuk setiap token; DEX tidak dapat mendaftar token baru tanpa mengaudit seluruh kode mereka.
Fabian Vogelsteller mengamati fragmentasi ini dan mengusulkan antarmuka standar minimal: jika setiap kontrak token mengimplementasikan fungsi bernama sama dengan signature yang sama, semua software hilir dapat ditulis sekali dan bekerja untuk semua token.
Insight arsitekturalnya: token ERC-20 bukan tipe aset baru — mereka adalah kontrak pintar yang mengimplementasikan API tertentu. Kontrak apa pun dengan enam fungsi ini adalah, menurut definisi, token ERC-20.
Enam Fungsi Wajib ERC-20
totalSupply()— Total pasokan tokenbalanceOf(address)— Saldo token suatu alamattransfer(address, uint256)— Transfer token dari pemanggil ke alamat tujuantransferFrom(address, address, uint256)— Transfer atas nama pihak lain (memerlukan persetujuan sebelumnya)approve(address, uint256)— Otorisasi alamat spender untuk membelanjakan token dalam batas tertentuallowance(address, address)— Periksa berapa banyak yang diizinkan spender belanjakan untuk owner
Dua event: Transfer (diemisikan setiap transfer) dan Approval (diemisikan setiap persetujuan).
Pola Approve/TransferFrom: Inovasi untuk DeFi
Interaksi dua langkah approve/transferFrom adalah inovasi kunci ERC-20 untuk interaksi kontrak pintar:
- Pengguna memanggil
approve(alamatKontrakDeFi, jumlah)— mengotorisasi kontrak untuk membelanjakan token. - Kemudian kontrak memanggil
transferFrom(pengguna, penerima, jumlah)untuk memindahkan token.
Pola ini memungkinkan protokol DeFi (Uniswap, Compound, Aave) mengakses token pengguna tanpa mengkustodikan kunci privat — pengguna mempertahankan kustodi; protokol hanya disetujui untuk membelanjakan jumlah tertentu.
Kelemahan yang diketahui: Pola approve memiliki kondisi race condition halus — terdokumentasi dalam standar. EIP-2612 (permit) kemudian menambahkan persetujuan berbasis tanda tangan (gasless approvals) sebagai perbaikan.
ERC-20 Mengaktifkan Era ICO (2017–2018)
ERC-20 memungkinkan ledakan ICO (Initial Coin Offering) 2017–2018:
- Proyek meluncurkan token dalam hitungan jam dengan men-deploy kontrak ERC-20 standar.
- Ether dikirim ke kontrak crowdsale; token ERC-20 didistribusikan.
- Semua token ERC-20 segera dapat didaftarkan di EtherDelta, IDEX, dan akhirnya Coinbase/Binance.
- MetaMask dan MyEtherWallet dapat menampilkan saldo ERC-20 apa pun tanpa pekerjaan integrasi.
Penggalangan dana ICO melebihi $5,6 miliar pada 2017 dan $7,8 miliar pada 2018 — hampir semuanya menggunakan token ERC-20.
ERC-20 sebagai Primitif DeFi
Setiap protokol DeFi dibangun di sekitar ERC-20:
- Pool AMM Uniswap adalah pasangan ERC-20.
- cToken Compound, aToken Aave, BPT Balancer — semua ERC-20.
- USDC, USDT, DAI — stablecoin ERC-20.
- LINK, UNI, AAVE, COMP, CRV — semua token governance ERC-20.
Keterbatasan dan Standar Penerus
ERC-20 memiliki keterbatasan yang terdokumentasi:
- Transfer ke kontrak: Fungsi
transferERC-20 tidak memberi tahu kontrak penerima — token yang dikirim ke kontrak yang tidak menanganinya hilang permanen. Diperkirakan ratusan juta dolar telah hilang dengan cara ini. - ERC-777: Mengusulkan hook untuk notifikasi kirim/terima; kemudian ditemukan menciptakan kerentanan reentrancy dalam protokol DeFi.
- ERC-4626: Standar vault bertokenisasi (2022); menstandarisasi wrapper ERC-20 yang menghasilkan yield.
- EIP-2612: Menambahkan
permit()untuk persetujuan gasless berbasis tanda tangan.
Fabian Vogelsteller dan Vitalik Buterin
Fabian Vogelsteller — pengembang perangkat lunak Jerman; bekerja di Ethereum Foundation 2015–2016. Mengajukan proposal ERC-20 asli. Juga menciptakan Ethereum JavaScript API (web3.js) dan blockchain LUKSO.
Vitalik Buterin — co-authored EIP-20 (dokumen EIP formal); memberikan tinjauan teknis dan ko-sponsorship untuk mengangkat standar.
Istilah Terkait
Referensi
- Vogelsteller, F. & Buterin, V. (2015). EIP-20: Token Standard. eips.ethereum.org/EIPS/eip-20