Memahami ERC20

Artikel ini menganggap pembaca sudah mengetahui sekurang-kurangnya, konsep berikut: blockchain Ethereum, dapps, eter, kontrak pintar & ICO.

Untuk mengekang semula dengan cepat, blockchain Ethereum adalah platform pengkomputeran berasaskan blockchain sumber terbuka yang diedarkan. Platform pengkomputeran ini, rangkaian Ethereum, menjadi tuan rumah aplikasi terdesentralisasi (dapps) yang dilaksanakan dengan potongan kod yang dinamakan kontrak pintar; semua transaksi di rangkaian Ethereum, serta kos pengkomputeran untuk melaksanakan kontrak pintar, dibayar dalam Ethereum cryptocurrency eter.

Beberapa, tetapi tidak semua, dari dapp ini (aplikasi terdesentralisasi) memerlukan mata wang in-dapp tambahan – dapp ini memperkenalkan mata wang baru mereka, yang diberi nama token, dan mengumpulkan dana melalui penawaran duit syiling awal (ICO).

Platform blockchain Ethereum dibina sedemikian rupa sehingga mendorong dapps dari semua jenis – termasuk yang memerlukan penciptaan, penyelenggaraan & pemindahan aset digital. Token Ethereum khusus dapp ini dapat dilaksanakan untuk membuat jaringan dapp dengan kes penggunaan yang bermakna seperti pemfaktoran invois, pembayaran di seluruh pelayar, & kad debit cryptocurrency.

Semua idea yang disebutkan sebelumnya adalah dapp-token berasaskan Ethereum yang kini mengikuti standard pengaturcaraan token yang sangat biasa; sebenarnya, 99% daripada semua token Ethereum yang digunakan mengikuti standard ini, iaitu standard ERC20.

Piawai token ERC20, yang bermaksud Ethereum Requests for Comment, adalah sekumpulan standard “peraturan” pengaturcaraan yang diharapkan diikuti oleh semua token berdasarkan Ethereum. Pembangun bersetuju dengan enam fungsi ini & dua peristiwa sebagai tanda minimum yang dapat dilaksanakan untuk menormalkan tingkah laku yang diharapkan semasa berkomunikasi di seluruh rangkaian Ethereum – dengan mewujudkan protokol ini, pemaju Ethereum dapat bekerjasama dengan kontrak pintar luaran dengan mudah.

Memperkenalkan Ketahanan

Manakala Ethereum yang paling popular pelanggan sedang ditulis dalam Google’s GO, pilihan untuk bahasa kontrak pintar mesra pemaju banyak sekali. Pembangun boleh memilih dari bahasa seperti Vyper, Buluh, Ular & Ketahanan.

Selebihnya artikel ini akan kami ketengahkan & sintaks Soliditi berjalan kaki.

Solidity adalah bahasa pengaturcaraan berorientasikan kontrak peringkat tinggi yang digunakan untuk melaksanakan kontrak pintar. Sintaks Soliditi, bagi mereka yang biasa dengan pengaturcaraan, adalah kecacatan Javascript, Python, & Konsep C; ia ditaip secara statik, menyokong warisan & mempunyai banyak perpustakaan langsung dari awal. Untuk mendapatkan maklumat lebih lanjut mengenai Ketumpatan, anda harus pergi ke dokumentasi yang terdapat di sini: https://solidity.readthedocs.io/en/develop/#

Laluan Antara Muka ERC20

Kita akan mula menggali lebih mendalam mengenai apa sebenarnya & bagaimana standard ini dilaksanakan di seluruh rangkaian Ethereum – seperti yang telah disebutkan sebelumnya, kami akan membahasnya secara khusus dalam sintaks Soliditas.

Di tanah Ethereum, semuanya bermula & berakhir dengan kontrak. Dokumentasi soliditi mendefinisikan kontrak sebagai “kumpulan kod (itu fungsi) & data (itu negeri) yang berada di alamat tertentu di blockchain Ethereum. ” Kontrak Ethereum menyokong warisan – jadi kontrak boleh menjadi contoh kontrak lain.

Mengikut logik ini, kontrak abstrak, yang digunakan secara ketat untuk pewarisan, juga boleh digunakan sebagai tidak selamat dengan menentukan apa kontrak baru mesti mengandungi untuk menyusun. Kontrak abstrak ini, juga dikenali sebagai kontrak antara muka.

Ini bermaksud bahawa sebarang kontrak token yang merupakan contoh ERC20 tidak disusun tanpa yang berikut; sebaliknya, ini bermaksud pembangun Ethereum kini mengetahui fungsi apa & tingkah laku yang dapat mereka harapkan ketika berinteraksi dengan mana-mana token ERC20.

Piawaian ERC20 adalah kontrak antara muka yang mengandungi sejumlah enam fungsi yang dapat dilaksanakan & dua peristiwa pembalakan.

Elaun

Fungsi Elaun membolehkan dua alamat untuk membuat pemindahan unidirectional berulang; alamat dompet tokenOwner & sesaat spender dompet didefinisikan sebagai dua dompet yang akan terlibat dalam urus niaga berulang. Secara khusus, pemborong dompet akan ditarik balik sesetengah jumlah dari token dompetOwner di sesetengah selang – kedua-duanya adalah pemboleh ubah yang akan ditentukan kemudian hari.

Terima

Untuk fungsi Approve, lihat kembali fungsi Allowance kami: fungsi tersebut membolehkan dua alamat menarik berulang kali secara tidak langsung. Fungsi Approve, tepat bernama, adalah fungsi standar sederhana yang meminta pemilik dompet untuk “menyetujui” transaksi yang akan dilakukan atas namanya dalam konteks Elaun. Fungsi ini memerlukan dua input, alamat spender & jumlah token yang dihantar. Hasilnya mengembalikan boolean umum yang menentukan sama ada kelulusan diberikan atau ditolak.

BakiOf

BalanceOf adalah fungsi intuitif yang menerima satu parameter input alamat (alamat tokenOwner) & mengembalikan pemalar awam tunggal (baki uint). Pemalar uint yang dikembalikan, baki, mewakili jumlah token yang ditahan oleh alamat yang ditanyakan – ingat, urus niaga pada blockchain biasanya bersifat umum, Ethereum tidak berbeza.

Jumlah Bekalan

Fungsi TotalSupply, seperti yang anda mungkin dapat meneka dari namanya, adalah fungsi konstruktor tanpa nama yang dijalankan hanya sekali pada saat pertama penyebaran ke rangkaian Ethereum langsung. Fungsi mengembalikan jumlah tetap awamSediakan bilangan bulat yang tidak ditugaskan (uint) yang bertindak sebagai token jumlah bekalan untuk baki jangka hayat kontrak. Pemalar TotalSupply ini biasanya ditakrifkan salah satu daripada dua cara: pengekodan keras pemboleh ubah atau pembiayaan dari dompet asal.

Pindah

Fungsi Transfer adalah fungsi inti dari mana-mana token ERC20; ia mentakrifkan & melaksanakan secara langsung dompet-pemilik-untuk-rakan sebaya pemindahan token. Oleh kerana pemilik dompet membuat panggilan ini, hanya diperlukan dua parameter: alamat penerima & jumlah token yang dihantar. Kedua parameter ini biasanya diinisialisasi sebagai (alamat ke) & (token uint) Nilai pemindahan Transfer hanyalah boolean yang mengesahkan sama ada penerima (alamat “ke”) menerima token yang dihantar.

Pindahkan Dari

Fungsi TransferFrom memungkinkan kontrak pintar untuk melaksanakan pemindahan dengan parameter yang dilalui bagi pihak pemilik dompet. Berhati-hati membuat perbezaan dengan yang sebelumnya Transfefungsi r. Fungsi sebelumnya dibenarkan untuk pemilik dompet untuk menghantar token secara langsung ke alamat; ini Pindahkan Dari membenarkan untuk kontrak pintar untuk menghantar token atas nama pemilik dompet, seperti mengisi pesanan di bursa, melepaskan dana tepat pada masanya, atau membayar kemenangan kami dalam permainan nasib.

The Pindahkan Dari fungsi mempunyai tiga parameter input, alamat pemilik dompet, alamat dompet penerima, & jumlah token yang dihantar. Mereka sering diinisialisasi dalam sintaks berikut: (alamat dari, alamat ke, token uint). Output fungsi sama dengan output Transfer: satu boolean umum yang memperincikan kejayaan atau kegagalan transaksi.

Ringkasan

Enam fungsi yang diperincikan di atas adalah enam fungsi teras yang terdapat dalam 99% daripada semua token ERC20 yang sedang hidup. Dengan beberapa pengecualian (melihat anda Golem), pemaju Ethereum merasa selamat mengetahui mereka dapat sepenuhnya mengharapkan fungsi teras ini semasa mengembangkan kontrak dalaman atau ketika berinteraksi dengan kontrak awam luaran di alam liar.