Cara Membuat Token ERC20 di Jaringan Ethereum Dengan Mudah

Popularitas dan penggunaan luas token ERC20 telah berkembang pesat di ruang blockchain Ethereum dalam beberapa tahun terakhir. Karena sebagian besar kontrak Ethereum sesuai dengan ERC-20 akhir-akhir ini, ini bisa sangat berguna bagi pengembang dan investor Ethereum untuk memiliki pengetahuan terperinci tentang token ini.

Fitur seperti kesederhanaan, kemudahan penggunaan, dan kemudahan penerapan berkontribusi pada keberhasilan dan penggunaan token ERC20 yang populer. Standar ERC20 menyelesaikan masalah penting yang dihadapi oleh dompet crypto dan pasar berbasis Blockchain dengan memasukkan aturan interaksi dengan token lain bersama dengan aturan pembelian.

Diimplementasikan sebagai smart contract, token ERC20 dieksekusi di Mesin Virtual Ethereum dengan cara yang terdesentralisasi, sama seperti token Ethereum lainnya.

Apa itu Solidity?

Solidity adalah bahasa yang digunakan untuk menulis smart contract Ethereum. Pengembang yang berpengetahuan luas dalam JavaScript atau bahasa seperti C dapat dengan mudah mengetahui kode yang ditulis dalam Solidity.

Pada artikel ini, kami akan menunjukkan cara membuat Smart contract ERC20 dengan menggunakan Solidity dan menyebarkan token ERC20 dengan cepat. Sebelum itu, mari kita lihat sekilas tentang pengertian dari ERC20.

Apa itu ERC20?

Standar ERC20 mendefinisikan serangkaian fungsi (yang pendek dan mendasar) yang harus diterapkan oleh semua token ERC20 untuk memungkinkan integrasi dengan kontrak, pasar, atau dompet lain.

function totalSupply() public view returns (uint256);
function balanceOf(address tokenOwner) public view returns (uint);
function allowance(address tokenOwner, address spender)
public view returns (uint);
function transfer(address to, uint tokens) public returns (bool);
function approve(address spender, uint tokens) public returns (bool);
function transferFrom(address from, address to, uint tokens) public returns (bool);

Fungsi-fungsi ini memungkinkan pengguna eksternal seperti aplikasi dompet kripto untuk mengetahui saldo akun pengguna dan mentransfer dana ke pengguna lain dengan otorisasi yang tepat.

Dua peristiwa khusus ditentukan oleh smart contract.

event Approval(address indexed tokenOwner, address indexed spender,
uint tokens);
event Transfer(address indexed from, address indexed to,
uint tokens);

Ketika pengguna diberikan hak untuk menarik token dari akun dan token ditransfer, peristiwa ini dipanggil atau dikeluarkan.

Banyak token ERC20 menampilkan bidang tambahan seperti:

string public constant name;
string public constant symbol;
uint8 public constant decimals;

Fitur penting ERC20 dan Solidity Nomenklatur meliputi:

  • Public function: Fungsi ini dapat diakses di luar kontrak itu sendiri
  • View function: Dengan kata sederhana, itu berarti ‘konstan’. Ini menyiratkan bahwa keadaan internal kontrak tidak akan diubah oleh fungsi.
  • Event function: Fungsi ini memungkinkan klien untuk diberitahu tentang kejadian tertentu dalam kontrak.

Cara Membuat Token ERC20 dalam Solidity

  1. Temukan Objek Pemetaan
  2. Atur Jumlah Token ICO
  3. Dapatkan Total Pasokan Token
  4. Menyetujui Delegasi Untuk Menarik Token
  5. Dapatkan Jumlah Token Yang Disetujui Untuk Penarikan
  6. Tambahkan SafeMath Solidity Library

Oke langsung aja ya kita bahas satu persatu langkah dan cara yang sudah kami sebutkan diatas:

1. Temukan Objek Pemetaan

Menurut gagasan Solidity untuk kunci/nilai atau associative array, Kamu harus menemukan dua objek pemetaan:

mapping(address => uint256) balances;
mapping(address => mapping (address => uint256)) allowed;

  • mapping(address => uint256): Mendefinisikan associative array yang memiliki kunci alamat tipe (angka yang digunakan untuk menunjukkan alamat akun) dan yang memiliki nilai tipe uint256 (integer 256-bit yang digunakan untuk menyimpan saldo token).
  • balances: Ini adalah objek pemetaan pertama yang akan menyimpan saldo token dari setiap akun pemilik.
  • allowed: Ini adalah objek pemetaan kedua yang akan mencakup semua akun yang telah disetujui untuk menarik token dari akun tertentu dan jumlah penarikan yang diizinkan untuk setiap akun.

Pemetaan ini akan disimpan di blockchain bersama dengan semua bidang kontrak lainnya. Kemudian, mereka akan ditambang untuk menyebarkan perubahan di semua node pengguna jaringan. Seseorang harus selalu berusaha meminimalkan ukuran penyimpanan karena penyimpanan blockchain mahal dan pengguna smart contract harus membayarnya.

Sekarang, mari kita mulai menulis ERC20 logics ke dalam apt functions.

2. Atur Jumlah Token ICO

Ada beberapa cara di mana Kamu dapat mengatur jumlah maksimal token ICO. Namun, dalam artikel ini, kami akan menggunakan pendekatan paling sederhana dengan menetapkan jumlah total token pada saat pembuatan kontrak dan awalnya menetapkan semuanya ke pemilik akun (akun yang telah menerapkan kontrak pintar):

uint256 totalSupply_;
constructor(uint256 total) public {
totalSupply_ = total;
balances[msg.sender] = _totalSupply;
}

  • konstruktor: Fungsi khusus yang dipanggil oleh Ethereum secara otomatis setelah kontrak diterapkan untuk menginisialisasi status token dengan menggunakan parameter yang diteruskan oleh akun penerapan kontrak.
  • msg: Variabel global yang dideklarasikan dan diisi oleh Ethereum itu sendiri, karena menyimpan data penting untuk melakukan kontrak.
  • msg.sender: Bidang yang berisi akun Ethereum yang menjalankan fungsi kontrak saat ini.

Akun yang bertanggung jawab untuk penerapan adalah satu-satunya yang dapat memasuki konstruktor kontrak karena fungsi ini bertanggung jawab untuk mengalokasikan token yang tersedia ke akun ‘contract owner’ setelah kontrak dimulai.

3. Dapatkan Total Pasokan Token

function totalSupply() public view returns (uint256) {
return totalSupply_;
}

Fungsi ini bertanggung jawab untuk mengembalikan jumlah semua token yang dialokasikan oleh kontrak ini terlepas dari pemiliknya.

1. Dapatkan Saldo Token Pemilik

function balanceOf(address tokenOwner) public view returns (uint) {
return balances[tokenOwner];
}

  • balanceOf: Fungsi yang bertanggung jawab untuk mengembalikan saldo token akun saat ini, yang diidentifikasi oleh alamat pemiliknya.

2. Transfer Token ke Akun Lain

function transfer(address receiver,
uint numTokens) public returns (bool) {
require(numTokens <= balances[msg.sender]);
balances[msg.sender] = balances[msg.sender] — numTokens;
balances[receiver] = balances[receiver] + numTokens;
emit Transfer(msg.sender, receiver, numTokens);
return true;
}

  • transfer: Fungsi yang bertanggung jawab untuk memindahkan numTokens (jumlah token) dari saldo pemilik ke penerima (pengguna lain).
  • msg.sender: Ini mewakili pemilik yang mentransfer yang menjalankan fungsi. Hanya pemilik token yang dapat mentransfernya ke pengguna lain.
  • require: Pernyataan yang digunakan oleh solidity untuk menegaskan predikat. Jika akun tidak memiliki cukup saldo untuk melakukan transfer dan pernyataan ini gagal, transaksi akan segera dibatalkan tanpa perubahan apa pun yang ditulis ke dalam blockchain.

4. Menyetujui Delegasi untuk Menarik Token

Fungsi ini sebagian besar digunakan dalam skenario pasar token.

function approve(address delegate,
uint numTokens) public returns (bool) {
allowed[msg.sender][delegate] = numTokens;
emit Approval(msg.sender, delegate, numTokens);
return true;
}

  • approve: Fungsi yang memungkinkan pengirim pesan (pemilik) untuk memberikan persetujuan kepada akun delegasi untuk menarik token dari akun mereka dan mentransfernya ke akun lain.

Fungsi ini sebagian besar digunakan untuk skenario di mana pemilik menawarkan token di pasar, karena memungkinkan pasar untuk menyelesaikan transaksi tanpa menunggu persetujuan sebelumnya.

Event Approval dipicu oleh fungsi ini di akhir eksekusinya.

5. Dapatkan Jumlah Token yang Disetujui untuk Penarikan

Fungsi ini sebagian besar digunakan dalam skenario pasar token.

function allowance(address owner,
address delegate) public view returns (uint) {
return allowed[owner][delegate];
}

Fungsi ini mengembalikan jumlah token yang disetujui saat ini oleh pemilik ke delegasi tertentu, sebagaimana diatur dalam fungsi persetujuan .

Transfer Token oleh Delegasi yang Disetujui

  • transferFrom: Fungsi yang memungkinkan delegasi yang menyetujui penarikan untuk mentransfer dana pemilik ke akun pihak ketiga.

function transferFrom(address owner, address buyer,
uint numTokens) public returns (bool) {
require(numTokens <= balances[owner]);
require(numTokens <= allowed[owner][msg.sender]);
balances[owner] = balances[owner] — numTokens;
allowed[owner][msg.sender] =
allowed[from][msg.sender] — numTokens;
balances[buyer] = balances[buyer] + numTokens;
Transfer(owner, buyer, numTokens);
return true;
}

Keduanya memerlukan pernyataan di awal fungsi mulai bertanggung jawab untuk memverifikasi bahwa transaksi yang dilakukan sah atau tidak, jika pemilik memiliki cukup saldo untuk mentransfer token, dan bahwa delegasi telah disetujui untuk menarik numTokens.

Selain itu, fungsi ini juga mengurangi numTokens dari tunjangan delegasi. Sesuai dengan perilaku pasar yang khas, delegasi diizinkan untuk membagi tunjangan yang diberikan menjadi beberapa penarikan terpisah.

Pada akhir langkah ini, Kamu akan memiliki implementasi token ERC20 yang valid. Namun, untuk mendapatkan token dengan kekuatan industri, diperlukan beberapa langkah lagi.

6. Tambahkan SafeMath Solidity Library

SafeMath adalah solidity library yang bertujuan untuk mengatasi peretas satu arah yang diketahui melanggar kontrak melalui serangan integer overflow.

  • Integer Overflow Attack: Dengan melewati parameter yang akan mengambil bilangan bulat yang relevan melewati nilai maksimalnya, kontrak dipaksa oleh peretas untuk menggunakan nilai numerik yang salah.

Dengan bantuan SafeMath, Kamu dapat melindungi kontrak Kamu dari serangan ini. Ini menguji kontrak untuk overflow sebelum melakukan tindakan aritmatika. Langkah ini menghilangkan risiko serangan overflow. Juga, SafeMath library berukuran sangat kecil. Jadi, tidak ada penalti pada kinerja dan biaya penyimpanan.

Kamu dapat menambahkan SafeMath Library ke kontrak Kamu dengan:

library SafeMath { // Only relevant functions
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a); return a — b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a);
return c;
}
}

  • assert: Pernyataan yang digunakan oleh SafeMath untuk verifikasi kebenaran parameter yang diteruskan. Jika pernyataan ini gagal, itu akan segera menghentikan eksekusi fungsi dan mengembalikan semua perubahan blockchain.

Gunakan pernyataan berikut untuk menambahkan perpustakaan ke compiler Solidity:

Menggunakan SafeMath Untuk Uint256;

Setelah itu, ganti kode berikut dalam kode yang Kamu tulis sebelumnya dengan SafeMath functions:

balances[msg.sender] = balances[msg.sender].sub(numTokens);
balances[receiver] = balances[receiver].add(numTokens);
balances[buyer] = balances[buyer].add(numTokens);
balances[owner] = balances[owner].sub(numTokens);

Semua fungsi dan acara smart contract digabungkan dalam Solidity menjadi ‘contract’, juga dikenal sebagai ‘blockchain class’.

Penerapan Smart Contract ERC20 Ethereum

Biasanya, pengembang Ethereum memanfaatkan alat penyebaran seperti Truffle atau Remix (yang merupakan alat yang lebih sederhana dibandingkan dengan Truffle). Untuk menggunakan Remix, Kamu  harus menginstal plugin MetaMask di browser Kamu, dan harus memiliki akun Rinkeby (Rinkeby adalah jaringan uji Ethereum) dengan minimal satu Rinkeby Ether di dalamnya.

Setelah penerapan, kontrak Kamu akan ditransfer ke semua node yang berpartisipasi dalam jaringan. Jadi, setiap perubahan yang Kamu buat pada kontrak akan disebarkan ke semua node yang berpartisipasi.

Setelah menginstal semuanya, Kamu harus pergi ke Remix dan menempelkan kode Kamu, termasuk baris pragma dan SafeMath Library.

Setelah menempelkan kode di editor online, pindah ke tab kedua dan klik “Deploy”. Setelah Kamu menyetujui konfirmasi transaksi, Kamu akan berhasil menerapkan token ERC20! Ini akan siap untuk dibeli, dibayar, dan ditransfer ke seluruh Blockchain.

Kesimpulan

Kontrak yang dibahas dalam artikel ini adalah demonstrasi singkat tentang bagaimana smart contract ERC20 pada Ethereum dikembangkan. Smart contract meningkatkan kompleksitas tergantung pada:

  • Logika bisnis Kamu
  • Pemodelan interaksi pengguna
  • Pilihan untuk mencetak atau membakar token
  • Pengenalan perubahan siklus hidup
  • Kebutuhan kemampuan tingkat admin, dll.

Pada artikel ini, kami menunjukkan kepada Kamu bagaimana Kamu dapat membuat token ERC20 sendiri. Dengan mengikuti langkah-langkah rumit secara efektif dan memperhatikan semua detail, Kamu dapat membuat dan menerapkan token ERC20 dengan sukses.

Meskipun dasar-dasar prosesnya tidak terlihat terlalu rumit, melakukan seluruh proses secara efektif dan tanpa kesalahan bisa menjadi tugas yang sangat merepotkan. Patut dicatat bahwa membuat dan menerapkan token ERC20 yang sesuai dengan kebutuhan Kamu dapat menjadi tugas yang kompleks, yang menuntut banyak upaya yang signifikan, kerja yang cermat, bimbingan ahli, dan pengawasan yang tepat untuk memastikan proses yang lancar.

Bermitra dengan tim atau perusahaan pengembangan Ethereum yang sangat efisien dapat mempermudah Kamu menangani semua kerumitan dalam membuat dan menerapkan token ERC20. Memanfaatkan keahlian dan pengalaman profesional Ethereum dapat membantu Kamu dengan mudah menerapkan semua persyaratan Kamu, memenuhi harapan Kamu, sehingga berhasil membuat dan menyebarkan token ERC20 Kamu.

5/5 - (200 votes)
Share Jika Bermanfaat Ya 🙂

Leave a Comment