Lompat ke konten utama

Memahami kontrak pintar token ERC-20

kontrak pintar
token
Solidity
erc-20
Pemula
jdourlens
5 April 2020
5 menit baca

Salah satu standar kontrak pintar paling signifikan di Ethereum dikenal sebagai ERC-20, yang telah muncul sebagai standar teknis yang digunakan untuk semua kontrak pintar di blockchain Ethereum untuk implementasi token yang sepadan (fungible).

ERC-20 mendefinisikan daftar aturan umum yang harus dipatuhi oleh semua token Ethereum yang sepadan. Akibatnya, standar token ini memberdayakan semua jenis pengembang untuk memprediksi secara akurat bagaimana token baru akan berfungsi di dalam sistem Ethereum yang lebih besar. Hal ini menyederhanakan dan memudahkan tugas pengembang, karena mereka dapat melanjutkan pekerjaan mereka, dengan mengetahui bahwa setiap proyek baru tidak perlu dikerjakan ulang setiap kali token baru dirilis, selama token tersebut mengikuti aturan.

Berikut ini, disajikan sebagai antarmuka (interface), fungsi-fungsi yang harus diimplementasikan oleh ERC-20. Jika Anda tidak yakin tentang apa itu antarmuka: periksa artikel kami tentang pemrograman OOP di Solidity (opens in a new tab).

Berikut adalah penjelasan baris demi baris tentang fungsi dari setiap fungsi tersebut. Setelah ini kami akan menyajikan implementasi sederhana dari token ERC-20.

Getter

function totalSupply() external view returns (uint256);

Mengembalikan jumlah token yang ada. Fungsi ini adalah sebuah getter dan tidak memodifikasi status kontrak. Perlu diingat bahwa tidak ada tipe data float di Solidity. Oleh karena itu, sebagian besar token mengadopsi 18 desimal dan akan mengembalikan total pasokan dan hasil lainnya sebagai berikut 1000000000000000000 untuk 1 token. Tidak setiap token memiliki 18 desimal dan ini adalah sesuatu yang benar-benar perlu Anda perhatikan ketika berurusan dengan token.

function balanceOf(address account) external view returns (uint256);

Mengembalikan jumlah token yang dimiliki oleh sebuah alamat (account). Fungsi ini adalah sebuah getter dan tidak memodifikasi status kontrak.

function allowance(address owner, address spender) external view returns (uint256);

Standar ERC-20 memungkinkan sebuah alamat untuk memberikan jatah (allowance) kepada alamat lain agar dapat mengambil token darinya. Getter ini mengembalikan sisa jumlah token yang diizinkan untuk dihabiskan oleh spender atas nama owner. Fungsi ini adalah sebuah getter dan tidak memodifikasi status kontrak dan seharusnya mengembalikan nilai 0 secara bawaan.

Fungsi

function transfer(address recipient, uint256 amount) external returns (bool);

Memindahkan sejumlah amount token dari alamat pemanggil fungsi (msg.sender) ke alamat penerima. Fungsi ini memancarkan (emit) event Transfer yang didefinisikan nanti. Fungsi ini mengembalikan nilai true jika transfer memungkinkan.

function approve(address spender, uint256 amount) external returns (bool);

Menetapkan jumlah allowance yang diizinkan untuk ditransfer oleh spender dari saldo pemanggil fungsi (msg.sender). Fungsi ini memancarkan event Approval. Fungsi ini mengembalikan nilai apakah jatah tersebut berhasil ditetapkan.

function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

Memindahkan sejumlah amount token dari sender ke recipient menggunakan mekanisme jatah (allowance). Jumlah tersebut kemudian dikurangi dari jatah pemanggil. Fungsi ini memancarkan event Transfer.

Event

event Transfer(address indexed from, address indexed to, uint256 value);

Event ini dipancarkan ketika sejumlah token (value) dikirim dari alamat from ke alamat to.

Dalam kasus melakukan mint token baru, transfer biasanya from (dari) alamat 0x00..0000 sedangkan dalam kasus membakar token, transfernya adalah to (ke) 0x00..0000.

event Approval(address indexed owner, address indexed spender, uint256 value);

Event ini dipancarkan ketika sejumlah token (value) disetujui oleh owner untuk digunakan oleh spender.

Implementasi dasar token ERC-20

Berikut adalah kode paling sederhana untuk menjadi dasar token ERC-20 Anda:

Implementasi standar token ERC-20 lain yang sangat baik adalah implementasi ERC-20 OpenZeppelin (opens in a new tab).

Pembaruan terakhir halaman: 3 Maret 2026

Apakah tutorial ini bermanfaat?