Mengenal Token ERC-20
Beranda
Artikel
Mengenal Token ERC-20

Mengenal Token ERC-20

Tingkat Menengah
Diterbitkan Jul 31, 2020Diperbarui Dec 28, 2022
12m

Konten


Pengantar

Ethereum didirikan oleh Vitalik Buterin pada tahun 2014, memposisikan diri sebagai platform open-source untuk meluncurkan aplikasi terdesentralisasi atau decentralized applications (DApps). Banyak motivasi Buterin dalam menciptakan blockchain baru berasal dari kurangnya fleksibilitas dalam protokol Bitcoin.
Sejak kemunculannya, blockchain Ethereum telah menarik minat pengembang, bisnis, dan pengusaha, memunculkan industri yang berkembang di mana penggunanya meluncurkan smart contract dan aplikasi terdistribusi.
Dalam artikel ini, kita akan melihat standar ERC-20, framework penting dalam membuat token. Meskipun secara khusus hanya ada di jaringan Ethereum, namun, framework ini juga menginspirasi standar blockchain lainnya, seperti BEP-2 di Binance Chain.


Apa yang dimaksud dengan standar ERC-20?

Dalam Ethereum, ERC merupakan singkatan dari Ethereum Request for Comments. Ini adalah dokumen teknis yang menjabarkan standar pemrograman di Ethereum. ERC berbeda dengan Ethereum Improvement Proposal (EIP), yang, seperti BIP Bitcoin, berfungsi menyarankan perbaikan pada protokol itu sendiri. Sebaliknya, ERC bertujuan untuk membuat konvensi yang mempermudah aplikasi dan kontrak dalam berinteraksi satu sama lain.

Diciptakan oleh Vitalik Buterin dan Fabian Vogelsteller pada tahun 2015, ERC-20 mengusulkan format yang relatif sederhana untuk token berbasis Ethereum. Dengan mengikuti garis besarnya, pengembang tidak perlu menghabiskan waktu dengan memulai dari awal. Sebaliknya, mereka dapat membangun di atas fondasi yang sudah digunakan di seluruh jaringan.

Token ERC-20 yang baru diterbitkan secara otomatis dapat dioperasikan dengan layanan dan perangkat lunak yang mendukung standar ERC-20 (software wallethardware walletbursa, dll.).

Perlu dicatat bahwa standar ERC-20 dikembangkan menjadi EIP (khususnya, EIP-20). Ini terjadi beberapa tahun setelah proposal asli karena penggunaannya yang luas. Namun, bahkan bertahun-tahun kemudian, nama “ERC-20” masih melekat.


Rekap singkat token Ethereum

Tidak seperti ETH (mata uang kripto asli Ethereum), token ERC-20 tidak dimiliki oleh akun. Token-token ini hanya ada di dalam kontrak, semacam database mandiri. Kontrak tersebut menentukan aturan untuk token (seperti Nama, simbol, sifat dapat dibagi) dan menyimpan daftar yang memetakan saldo pengguna di alamat Ethereum mereka masing-masing.

Untuk memindahkan token, pengguna harus mengirim transaksi ke kontrak dan meminta kontrak tersebut mengalokasikan sebagian saldo mereka ke tempat lain. Misalnya, jika Alice ingin mengirim 5.000 BinanceAcademyToken ke Bob, ia memanggil fungsi di dalam smart contract BinanceAcademyToken yang meminta kontrak tersebut untuk melakukan transaksi dimaksud.



Fungsi yang digunakan Alice akan tampak sebagai transaksi Ethereum biasa yang membayar 0 ETH ke kontrak token. Fungsi tersebut termasuk dalam bidang tambahan dalam transaksi, yang menunjukkan apa yang ingin dilakukan Alice – dalam hal ini, mentransfer token ke Bob.

Meskipun Alice tidak mengirim ether, ia masih harus membayar biaya dalam mata uang itu agar transaksinya dimasukkan ke dalam blok. Jika tidak memiliki ETH, ia perlu menyediakannya sebelum mentransfer token.
Berikut contoh nyata dari kasus di atas pada Etherscan: seseorang melakukan panggilan ke kontrak BUSD. Anda dapat melihat token yang ditransfer, dan biaya telah dibayarkan, meskipun kolom Nilai menunjukkan bahwa 0 ETH telah dikirim.

Sekarang kita telah mengetahui sedikit mengenai konsep dasarnya, mari kita lihat lebih dalam untuk memahami struktur kontrak ERC-20 yang khas. 


Bagaimana token ERC-20 dibuat?



Agar sesuai dengan ERC-20, kontrak Anda harus mencakup enam fungsi wajib: totalSupply, balanceOf, transfer, transferFrom, approve, dan allowance. Selain itu, Anda dapat menentukan fungsi opsional, seperti name, symbol, dan decimal. Mungkin dari namanya, terlihat jelas bagi Anda kegunaan dari fungsi-fungsi tersebut. Jika tidak, jangan khawatir – kita akan mengurainya satu per satu. 

Di bawah ini adalah fungsi yang muncul dalam bahasa Solidity yang dibuat khusus di Ethereum.


totalSupply

function totalSupply() public view returns (uint256)
Ketika dipanggil oleh pengguna, fungsi di atas mengembalikan total pasokan token yang disimpan oleh kontrak.


balanceOf 

function balanceOf(address _owner) public view returns (uint256 balance)
Tidak seperti totalSupply, balanceOf mengambil parameter (alamat). Saat dipanggil, fungsi ini mengembalikan saldo kepemilikan token alamat itu. Ingat bahwa akun di jaringan Ethereum bersifat publik, sehingga Anda dapat menanyakan saldo pengguna mana pun asalkan Anda tahu alamatnya.


transfer

function transfer(address _to, uint256 _value) public returns (bool success)
fungsi transfer dengan tepat mentransfer token dari satu pengguna ke pengguna lain. Di sini, Anda memberikan alamat yang ingin Anda kirimi dan jumlah yang akan ditransfer.
Saat dipanggil, transfer memicu sesuatu yang disebut event (atau disebut transfer event), yang pada dasarnya memberitahu blockchain untuk menyertakan referensi.


transferFrom

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
Fungsi transferFrom merupakan pilihan lain selain transfer, yang memungkinkan sedikit lebih banyak pemograman dalam aplikasi desentralisasi. Seperti halnya transfer, fungsi ini digunakan untuk memindahkan token, tetapi token yang dimaksud tidak harus milik pihak yang memanggil kontrak. 

Dengan kata lain, Anda dapat mengotorisasi seseorang – atau kontrak lain – untuk mentransfer dana atas nama Anda. Penggunaannya dalam dunia nyata bisa berupa pembayaran untuk layanan berbasis langganan, di mana Anda tidak ingin mengirim pembayaran secara manual setiap hari/minggu/bulan. Sebaliknya, sebuah program akan melakukannya untuk Anda.

Fungsi ini memicu event yang sama dengan transfer.


approve

function approve(address _spender, uint256 _value) public returns (bool success)
approve adalah fungsi lain yang berguna dari sudut pandang pemograman. Dengan fungsi ini, Anda dapat membatasi jumlah token yang dapat ditarik oleh smart contract dari saldo Anda. Tanpa fungsi ini, Anda berisiko kehilangan semua dana (atau dieksploitasi) karena malfungsi kontrak. 
Ambil contoh model berlangganan yang telah disebutan sebelumnya. Misalkan Anda memiliki sejumlah besar BinanceAcademyToken, dan ingin mengatur pembayaran berulang mingguan ke DApp streaming. Anda sibuk membaca konten Binance Academy siang dan malam, jadi Anda tidak ingin meluangkan waktu setiap minggu untuk membuat transaksi secara manual.
Anda memiliki saldo BinanceAcademyToken yang banyak, jauh melebihi yang diperlukan untuk membayar biaya berlangganan. Untuk mencegah DApp menghabiskan semua saldo, Anda dapat menetapkan limit dengan approve. Misalkan biaya berlangganan Anda satu BinanceAcademyToken per minggu. Jika Anda membatasi nilai yang disetujui sebanyak dua puluh token, maka langganan Anda dapat dibayarkan secara otomatis selama lima bulan.

Hal yang paling buruk yang bisa terjadi, jika DApp mencoba untuk menarik semua dana Anda atau jika bug ditemukan, Anda hanya akan kehilangan dua puluh token. Ini mungkin tidak ideal, tetapi tentu saja lebih baik demikian daripada kehilangan semua aset Anda.

Saat dipanggil, approve memicu event approval. Seperti event transfer, event ini menulis data ke blockchain.


allowance 

function allowance(address _owner, address _spender) public view returns (uint256 remaining)
allowance dapat digunakan bersamaan dengan approve. Jika izin kontrak diberikan kepada Anda untuk mengelola token, Anda dapat menggunakan fungsi ini untuk memeriksa berapa banyak yang masih bisa ditarik. Misalnya, jika langganan Anda telah menggunakan dua belas dari dua puluh token yang Anda setujui, memanggil fungsi allowance akan mengembalikan total delapan.


Fungsi opsional

Fungsi yang kita bahas di atas bersifat wajib. Di sisi lain,fungsi name, symbol, dan decimal tidak perlu dimasukkan, tetapi dapat membuat kontrak ERC-20 Anda sedikit lebih cantik. Masing-masing fungsi ini memungkinkan Anda untuk menambahkan nama yang dapat dibaca manusia, menetapkan simbol (seperti ETH, BTC, BNB), dan menentukan berapa banyak tempat desimal yang dapat digunakan untuk membagi token. Misalnya, token yang digunakan sebagai mata uang mungkin mendapat manfaat lebih jika dapat dibagi daripada token yang mewakili kepemilikan properti.


Lihat contoh berikut di GitHub untuk melihat unsur-unsur ini dalam kontrak yang sebenarnya.


Apa manfaat token ERC-20?



Dengan menggabungkan semua fungsi di atas, kita mendapatkan kontrak ERC-20. Kita dapat meminta total pasokan, memeriksa saldo, mentransfer dana, dan memberikan izin kepada DApps lain untuk mengelola token kita.

Daya tarik terbesar token ERC-20 adalah fleksibilitasnya. Konvensi yang ditetapkan tidak membatasi pengembangan, sehingga para pihak dapat mengimplementasikan fitur tambahan dan menetapkan parameter khusus yang sesuai dengan kebutuhan masing-masing.


Stablecoin

Stablecoin (token yang dipatok ke mata uang fiat) sering menggunakan standar token ERC-20. Transaksi ke kontrak BUSD yang disebutkan sebelumnya merupakan salah satu contoh, dan sebagian besar stablecoin besar juga tersedia dalam format ini.

Untuk stablecoin yang didukung fiat, penerbit menyimpan cadangan euro, dolar, dll. Kemudian, untuk setiap unit dalam cadangan tersebut, mereka mengeluarkan token. Ini berarti bahwa jika $10.000 dikunci dalam brankas, penerbit dapat membuat 10.000 token, masing-masing dapat ditukarkan dengan $1.

Secara teknis, ini cukup mudah diimplementasikan dalam Ethereum. Penerbit cukup meluncurkan kontrak dengan 10.000 token. Kemudian, mereka akan membagikannya kepada pengguna dengan janji bahwa nantinya token tersebut dapat ditebus dengan jumlah mata uang fiat yang proporsional. 

Pengguna dapat melakukan sejumlah hal dengan token tersebut – mereka dapat membeli barang dan layanan, atau menggunakannya di DApps. Atau, mereka dapat meminta agar penerbit segera menukarnya. Dalam hal ini, penerbit akan membakar token yang dikembalikan (membuatnya tidak bisa digunakan) dan menarik fiat dengan jumlah yang sama dari cadangan mereka.

Kontrak yang mengatur sistem ini, sebagaimana disebutkan di atas, relatif sederhana. Namun, meluncurkan stablecoin membutuhkan banyak pekerjaan di sisi eksternal, seperti pekerjaan logistik, mematuhi peraturan pemerintah setempat, dll.


Token sekuritas

Token sekuritas mirip dengan stablecoin. Pada tingkat kontrak, keduanya bahkan bisa identik karena berfungsi dengan cara yang sama. Perbedaan terlihat di tingkat penerbit. Token sekuritas mewakili sekuritas, seperti saham, obligasi, atau aset fisik. Seringkali (meskipun tidak selalu demikian), jenis token ini memberikan semacam saham dalam bentuk bisnis atau barang kepada pemiliknya.


Token utilitas

Token utilitas mungkin adalah jenis token yang paling umum ditemukan saat ini. Berbeda dengan kedua jenis sebelumnya, jenis token ini tidak didukung oleh apa pun. Jika token yang didukung oleh aset digambarkan seperti saham di perusahaan penerbangan, maka token utilitas seperti program frequent-flyer: token ini memiliki fungsi, tetapi tidak memiliki nilai eksternal. Token utilitas memenuhi banyak sekali penggunaan, berfungsi sebagai mata uang dalam game, bahan bakar untuk aplikasi terdesentralisasi, poin loyalitas, dan banyak lagi.



Apakah token ERC-20 bisa ditambang?

Anda dapat menambang eter (ETH), tetapi token tidak dapat ditambang – token-token ini dicetak untuk membuat yang baru. Ketika kontrak diluncurkan, pengembang mendistribusikan pasokan sesuai dengan rencana dan roadmap.
Biasanya, pendistribusian dilakukan melalui Initial Coin Offering (ICO), Initial Exchange Offering (IEO), atau Security Token Offering (STO). Anda mungkin pernah mendengar berbagai variasi akronim ini, tetapi konsepnya sangat mirip. Investor mengirim ether ke alamat kontrak, dan, sebagai imbalannya, menerima token baru. Uang yang terkumpul digunakan untuk mendanai pengembangan proyek lebih lanjut. Pengguna berharap dapat menggunakan token mereka (baik segera atau di kemudian hari), atau dijual kembali untuk mendapatkan keuntungan saat proyek berkembang.

Distribusi token tidak perlu diotomatisasi. Banyak crowdfunding yang memungkinkan pengguna membayar dengan berbagai mata uang digital yang berbeda (seperti BNB, BTC, ETH, dan USDT). Saldo masing-masing kemudian dialokasikan ke alamat yang disediakan oleh pengguna.


Pro dan kontra token ERC-20

Pro token ERC-20

Bersifat sepadan

Token ERC-20 bersifat sepadan – setiap unit dapat dipertukarkan dengan unit yang lain. Jika Anda memiliki BinanceAcademyToken, tidak masalah token mana yang Anda miliki, Anda dapat menukarkannya dengan BinanceAcademyToken milik orang lain, dan token-token ini tetap identik secara fungsional, sama seperti uang tunai atau emas.

Ini sangat ideal jika token Anda bertujuan menjadi semacam mata uang. Anda tidak menginginkan setiap unit memiliki sifat yang berbeda-beda, yang justru akan membuatnya tidak sepadan. Sifat tidak sepadan dapat menyebabkan beberapa token menjadi lebih – atau kurang – berharga daripada token yang lainnya.


Fleksibel

Seperti yang telah kita bahas di bagian sebelumnya, token ERC-20 dapat disesuaikan dengan mudah, dan dapat dirancang untuk berbagai aplikasi. Misalnya, dapat digunakan sebagai mata uang dalam game, dalam program poin loyalitas, sebagai koleksi digital, atau bahkan untuk mewakili hak seni dan hak milik.


Populer

Popularitas ERC-20 dalam industri mata uang kripto adalah alasan yang sangat kuat untuk menggunakannya sebagai cetak biru. Banyak bursa, dompet, dan smart contract yang sudah kompatibel dengan token-token ERC-20 yang baru diluncurkan. Terlebih lagi, dukungan dan dokumentasi pengembang sangat berlimpah. 


Kontra token ERC-20

Skalabilitas

Seperti halnya banyak jaringan mata uang kripto lainnya, Ethereum tidak kebal terhadap rasa sakit yang muncul saat bertumbuh. Dalam keadaan saat ini, jaringannya menghadapi masalah skalabilitas – mencoba mengirim transaksi di waktu-waktu sibuk akan menghasilkan biaya tinggi dan penundaan. Jika Anda meluncurkan token ERC-20 saat jaringan macet, kegunaannya bisa terpengaruh.

Masalah ini tidak hanya ada di Ethereum. Sebaliknya, ini merupakan pengorbanan yang diperlukan untuk mendapatkan sistem yang aman dan terdistribusi. Komunitas berencana untuk mengatasi masalah ini dengan melakukan migrasi ke Ethereum 2.0, yang akan mengimplementasikan peningkatan seperti Ethereum Plasma dan Ethereum Casper.
Pelajari lebih lanjut mengenai permasalahan skalabilitas di Skalabilitas Blockchain: Sidechain dan Saluran Pembayaran.


Penipuan

Meskipun bukan masalah yang berkaitan dengan teknologi itu sendiri, mudahnya meluncurkan token dapat dianggap merugikan. Sangat mudah untuk membuat token ERC-20 sederhana, yang berarti bahwa siapa pun dapat melakukannya – dengan tujuan baik atau jahat.

Karena itu, Anda harus berhati-hati dengan investasi Anda. Ada sejumlah skema Piramida dan Ponzi yang menyamar sebagai proyek blockchain. Lakukan penelitian Anda sendiri sebelum berinvestasi, untuk menyimpulkan apakah peluang yang Anda lihat sah atau penipuan.

 

ERC-20, ERC-1155, ERC-223, ERC-721 – apa perbedaannya?

ERC-20 merupakan standar token Ethereum pertama (dan, sampai saat ini, yang paling populer), tetapi tidak berarti satu-satunya. Selama bertahun-tahun, banyak standar lain yang muncul, baik yang mengusulkan perbaikan pada ERC-20, atau memiliki tujuan yang sama sekali berbeda.

Beberapa standar yang kurang umum adalah yang digunakan dalam non-fungible token (NFT). Terkadang, ada juga untungnya memiliki token unik dengan atribut yang berbeda. Jika Anda ingin menokenkan karya seni, aset in-game, dll., salah satu dari jenis kontrak ini mungkin lebih cocok.
Standar ERC-721, misalnya, digunakan dalam DApp CryptoKitties yang sangat populer. Kontrak jenis ini menyediakan API bagi pengguna untuk mencetak token non-fungible mereka sendiri, yang bersifat tidak-sepadan, untuk menyandikan metadata (gambar, deskripsi, dll.). 

Standar ERC-1155 dapat dilihat sebagai peningkatan dari ERC-721 dan ERC-20. Membuat standar yang mendukung token yang bersifat sepadan dan tidak-sepadan dalam kontrak yang sama.

Opsi lain seperti ERC-223 atau ERC-621 bertujuan untuk meningkatkan penggunaan. ERC-223 menerapkan perlindungan untuk mencegah transfer token yang tidak disengaja. ERC-621 menambahkan fungsi ekstra untuk menambah dan mengurangi pasokan token.

Untuk pembahasan lebih lanjut mengenai topik NFT, pastikan Anda melihat Panduan Crypto Collectible dan Non-Fungible Token (NFT).


Konklusi

Standar ERC-20 telah mendominasi dunia aset kripto selama bertahun-tahun, alasannya sangat masuk akal. Dengan relatif mudah, siapa pun dapat menggunakan kontrak sederhana untuk memenuhi berbagai penggunaan (token utilitas, stablecoin, dll.). Dengan demikian, bisa dikatakan bahwa ERC-20 masih lebih unggul jika dibandingkan dengan standar token lainnya. Kita tunggu saja, apakah jenis kontrak berikutnya bisa menggantikannya.