Lompat ke konten utama

Memahami kontrak pintar token ERC-20

kontrak pintar
token
Solidity
erc-20
Pemula
jdourlens
5 April 2020
4 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 rantai blok Ethereum untuk implementasi token sepadan.

ERC-20 mendefinisikan daftar aturan umum yang harus dipatuhi oleh semua token sepadan Ethereum. 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, 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 kegunaan setiap fungsi. 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 state dari kontrak. Perlu diingat bahwa tidak ada 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 saat 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 state dari kontrak.

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

Standar ERC-20 memungkinkan sebuah alamat untuk memberikan jatah 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 state dari kontrak dan seharusnya mengembalikan 0 secara bawaan.

Fungsi

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

Memindahkan amount token dari alamat pemanggil fungsi (msg.sender) ke alamat penerima. Fungsi ini memancarkan peristiwa Transfer yang didefinisikan nanti. 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 peristiwa Approval. Fungsi ini mengembalikan apakah jatah berhasil ditetapkan.

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

Memindahkan amount token dari sender ke recipient menggunakan mekanisme jatah. amount kemudian dikurangi dari jatah pemanggil. Fungsi ini memancarkan peristiwa Transfer.

Peristiwa

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

Peristiwa ini dipancarkan ketika jumlah token (value) dikirim dari alamat from ke alamat to.

Dalam kasus pencetakan token baru, transfer biasanya from alamat 0x00..0000 sedangkan dalam kasus membakar token, transfernya adalah to 0x00..0000.

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

Peristiwa ini dipancarkan ketika jumlah 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 luar biasa lainnya dari standar token ERC-20 adalah implementasi ERC-20 OpenZeppelin (opens in a new tab).