Mengapa standar dibutuhkan
Di dalam kontrak pintar ( apa itu? ), Anda dapat menulis mekanisme unik token. Ini akan berfungsi, tetapi pengembang lain (dan kontrak pintar) tidak akan dapat mengaksesnya menggunakan logika umum.
Contoh: Anda membuat token untuk item game (game terdesentralisasi sedang berkembang secara aktif sekarang) dan Anda ingin token tersebut dapat diperdagangkan di pasar untuk item dalam game (sesuatu seperti itu ). Tetapi pasar tidak tahu cara mengakses fungsi dalam kontrak Anda, mereka membutuhkan kontrak pintar terpisah untuk mendukung token Anda.
Standar datang untuk menyelamatkan. Mengetahui cara berinteraksi dengan mereka, pembuat dApps lain telah memasukkan semua yang Anda butuhkan ke dalam kode untuk bekerja dengan token pada standar tertentu.
Bagaimana standar muncul
Ethereum adalah proyek sumber terbuka (ngomong-ngomong, ERC adalah Permintaan Ethereum untuk Komentar), jadi logis jika setiap pengguna dapat mengusulkan standar token baru. Jika standar memecahkan beberapa masalah penting, maka itu bisa menjadi standar Ethereum resmi (yaitu, masuk ke daftar ini) .
Token yang dapat berfungsi dan tidak dapat dipertukarkan
Titik awal untuk mengklasifikasikan standar token adalah dapat dipertukarkan atau tidak. Token yang dapat berfungsi sama satu sama lain dan dapat digunakan sebagai mata uang. Token semi-fungible (setengah fungible) hampir tidak bisa dibedakan satu sama lain, tetapi tetap unik (misalnya: tiket di bioskop, biayanya mungkin sama, tetapi masing-masing memiliki tempat yang unik) . Token yang tidak dapat dipertukarkan (tidak dapat dipertukarkan) benar-benar unik, objek yang diberi token dalam satu salinan (contoh: objek hak cipta) .
Jika Anda tidak mengenali anak kucing itu, maka ini adalah salah satu game pertama di Ethereum (dan standar ERC-721), CryptoKitties .
ERC-20
Standar paling terkenal untuk token yang dapat dipertukarkan adalah ERC20, yang diusulkan oleh penulis ide Ethereum Vitalik Buterin pada tahun 2015. Token ini banyak digunakan untuk berbagai jenis penawaran awal (proposal pertama). Saya menghindari istilah ICO dan IEO, karena sekarang ini bukan satu-satunya cara untuk melakukan penawaran umum token (tetapi artikel ini bukan tentang itu).
Kekhususan: standar yang dapat dipertukarkan, ada ticker untuk pertukaran, dapat dibagi (jumlah digit setelah titik desimal ditentukan oleh pembuat kontrak pintar), harus memiliki total pasokan (jumlah token yang tidak dapat dikeluarkan lebih banyak).
Banyak yang telah ditulis tentang ERC-20 ( habr ), saya beralih ke standar lain.
ERC-721
Standar ini banyak digunakan untuk membuat token unik. Land in Decentraland , Binance Collectibles , berikut adalah contoh ERC-721.
ERC-721 diusulkan sebagai EIP (Ethereum Improvement Proposal) oleh Dieter Shirley pada tahun 2017, menjadi resmi pada tahun 2018.
Spesifikasi: bukan standar yang dapat dipertukarkan, tidak ada ticker, tidak dapat dibagi, harus hanya ada dalam satu salinan.
ERC-721, seperti ERC-20, tersebar luas, jadi saya tidak akan membahasnya.
ERC-777
Format ini merupakan "perbaikan" dari ERC-20 yang sudah dikenal. Ini kompatibel dengan ERC-20, tetapi memiliki beberapa keunggulan:
- saat menukar token, ia menggunakan satu transaksi, bukan dua di ERC-20;
- secara otomatis membatalkan transaksi untuk kontrak yang tidak sesuai;
- kemampuan untuk menandai alamat yang tidak dapat diandalkan;
- kemampuan untuk menunjuk operator (alamat yang memiliki hak untuk mengirim token dari alamat lain);
- transaksi yang dipercepat.
ERC-223
Juga merupakan "peningkatan" ke ERC-20, mencegah pengiriman transaksi ke kontrak acak. Jika kontrak pintar tidak memiliki fungsi untuk bekerja dengan token, maka mereka dikembalikan ke pengirim.
ERC-1155
Ide untuk standar ini diajukan oleh pengembang proyek Enjin pada tahun 2018. Enjin adalah proyek yang bertujuan untuk menyederhanakan pembuatan game di Ethereum. Oleh karena itu, standar yang mereka ajukan harus terlebih dahulu dianggap sebagai standar permainan, meskipun penerapannya tidak terbatas pada hal tersebut.
Kekhususan:
- memungkinkan Anda menerbitkan banyak token dalam satu kontrak;
- token dalam satu kontrak dapat dipertukarkan dan tidak dapat dipertukarkan pada saat yang bersamaan;
- mendukung pertukaran atom;
- mendukung transaksi "batch";
- tidak semua transaksi harus menunggu akhir blok.
Jika dua poin pertama jelas, maka poin ketiga dan keempat dapat menimbulkan pertanyaan. Pertama, mari kita lihat pertukaran atom.
Pertukaran atom
Salah satu alasan penolakan blockchain di mana-mana adalah ketidakmampuan untuk secara cepat dan efisien (dalam hal biaya) menukar satu token dengan yang lain (dan jumlah token yang berbeda meningkat setiap saat). Solusi untuk masalah ini telah dibuat - ini adalah pertukaran atom. Biasanya, pertukaran atom dipahami sebagai teknologi pertukaran terdesentralisasi antara cryptocurrency dari berbagai blockchain independen ( ditulis dengan baik tentang ini di BitcoinWiki ). Tetapi perlu juga mempertimbangkan pertukaran atom dalam konteks pertukaran token dalam kontrak pintar.
Gambar dari blog Enjin mengilustrasikan pertukaran banyak token menggunakan standar ERC-1155.
Dan transaksi batch, meskipun tidak menghemat waktu, mereka menghemat gas ( apa ini? ) Dengan menulis beberapa transaksi ke jaringan sebagai satu kesatuan.
Perlu disebutkan bahwa meskipun ERC-1155 telah menjadi lebih luas, ia meminjam banyak dari ERC875, yang muncul beberapa bulan sebelumnya. ERC-875 menawarkan fungsionalitas yang sama selain mendukung token yang sepadan.
ERC-865
Standar yang mirip dengan ERC-20, tetapi tidak menggunakan gas untuk komisi, tetapi token itu sendiri. Karena sistem pembayaran komisi gas yang kompleks (harga gas dipilih secara independen), dan terkadang ukuran komisi yang tidak dapat diprediksi, peningkatan seperti itu bisa sangat berguna untuk menerima token di Ethereum.
Tautan
Saya belum mempertimbangkan semua standar, tetapi jika kita berbicara tentang semua ERC, maka sebagian besar mirip satu sama lain, dan menawarkan solusi untuk masalah ERC-20, atau aplikasi di beberapa ceruk terpisah. Jika Anda ingin membaca kode secara detail: Github EIPs , Github OpenZeppelin . Ethereum.org .