Sebab 375K Untuk Meningkatkan ERC20

Dengan juggernaut berasaskan token ERC20 seperti EOS, Basic Attention Token (BAT), dan Storj, sukar untuk membantah kejayaan kontrak antara muka. Komuniti Ethereum jelas menyokong sokongan terhadap standard ini, & komuniti pemaju dan pasaran kewangan bertindak balas dengan positif. Walau bagaimanapun, untuk semua kejayaannya, standard ERC20 telah menghasilkan satu bug yang tidak begitu ketara:

Piawaian token ERC20 membawa kepada kerugian wang bagi pengguna akhir dengan membenarkan pengguna menghantar token ERC20 ke alamat token yang tidak mematuhi ERC20.

Apabila pengguna menghantar token ERC20 ke kontrak Ethereum yang tidak mengenali token ERC20, pengguna kehilangan akses ke dananya selama-lamanya. Berapa banyak dana yang terkunci kerana masalah ini? Sekali lagi, bukan jumlah yang tidak signifikan:

  • 310,067 GNT terjebak dalam kontrak Golem (kini bernilai sekitar $ 217K).
  • 242 REP terjebak dalam kontrak Augur (kini bernilai sekitar $ 15K).
  • 814 DGD terjebak dalam kontrak Digix DAO (pada masa ini bernilai kira-kira $ 125K).
  • 14,506 1ST terjebak dalam kontrak FirstBlood (pada masa ini bernilai kira-kira $ 12K).

Ini melebihi token ERC20 bernilai $ 370K + yang dibekukan dalam kontrak ini; oleh kerana senarai token ERC20 semakin meningkat, jumlah ini kemungkinan besar merupakan anggaran konservatif dari jumlah token ini yang dibekukan dalam kontrak. Senarai di atas sama sekali tidak lengkap – ini adalah beberapa token ERC20 yang lebih popular.

Tidak ada kontrak di atas yang dijangka menerima token ERC20 – jadi apabila pengguna menghantar token ke alamat ini, transaksi disahkan oleh rangkaian; namun, kontrak penerimaan tidak mengenali token. Tidak tahu apa yang harus dilakukan dengan token ini yang mengakibatkan dana terkunci selama-lamanya. Sekali lagi, token tidak akan ditolak – mereka hanya diabaikan oleh kontrak penerimaan.

Sebilangan besar transaksi ini dilakukan secara tidak sengaja oleh pengguna akhir yang memanggil pindah fungsi (berbanding fungsi transferFrom automatik yang diperkenalkan sebelumnya). Ingat bahawa ERC20 menggunakan kedua-dua Transfer & TransferFrom – ternyata beberapa pengguna akhir menggunakan Transfer untuk menghantar token ERC20 secara langsung ke kontrak yang tidak dijangka, & oleh itu jangan mengenali, token masuk.

Akhirnya, sebilangan anggota komuniti Ethereum memutuskan untuk menangani masalah ini secara langsung dengan meminta standard token ERC baru. Nombor terbitan standard token baru ini di GitHub, adalah nombor terbitan # 223.

Cadangan ERC223

Pengguna GitHub Dexaran mencadangkan standard ERC baru (ERC223) pada 5 Mac 2017 yang bertujuan untuk menyelesaikan masalah kegagalan penggantian token ini. Abstrak untuk cadangan token terbitan GitHub # 223nya adalah seperti berikut:

Berikut ini menerangkan fungsi standard kontrak token dan kontrak yang berfungsi dengan token yang ditentukan dapat dilaksanakan untuk mencegah pengiriman token secara tidak sengaja ke kontrak dan membuat transaksi token berkelakuan seperti transaksi eter.

Cadangan token Dexaran menerapkan dua ciri utama untuk segera menghentikan pengguna aplikasi yang terdesentralisasi daripada menghantar token secara tidak sengaja ke kontrak pintar yang tidak bersedia menerima token tersebut:

  1. Menggabungkan ERC20 Pindah & Pindahkan Dari berfungsi menjadi satu Pindah berfungsi dengan tiga parameter: (alamat _to, uint _value, data bait).
  2. The menerima kontrak, jika menerima token, mesti mengandungi a TokenFallBack fungsi yang menentukan dengan tepat bagaimana menangani jenis token masuk yang mana.

Pindah & Pindahkan Dari -> Pindah

Bahagian utama standard ERC20 yang menyumbang kepada masalah umum ini adalah hakikat bahawa pengguna akhir mempunyai pilihan yang salah menggunakan salah satu daripada dua fungsi yang digunakan untuk memindahkan (Transfer & Pindah Dari).

ERC223 mencadangkan penggantian kedua fungsi dengan satu Pindah fungsi.

ERC223 membolehkan pengguna akhir dapp menghantar token ke ada Alamat Ethereum, tidak kira sama ada kontrak itu dompet atau kontrak, dengan fungsi Transfer yang sama. Logiknya di sini ialah dengan menghilangkan pilihan bagi pengguna untuk mencetuskan fungsi Transfer atau fungsi TransferFrom ke hanya satu fungsi Transfer, pengguna akhir tidak lagi berpotensi untuk menggunakan fungsi yang salah.

Fungsi Transfer yang baru dicadangkan menerima tiga parameter (sebelumnya hanya diterima dua), dan yang lebih penting, ia kelihatan memanggil fungsi TokenFallback pada alamat penerima. Tanpa tiga parameter yang ditentukan, fungsi Transfer gagal disusun; tanpa alamat penerima yang mengandungi fungsi TokenFallback, transaksi fungsi Transfer akan gagal & tiada token akan dipindahkan.

token fungsiFallBack ()

Dalam pengembangan Ethereum terdapat pengubah kontrak kena bayar yang digunakan untuk menyiapkan kontrak untuk menerima Ether – ini bermaksud kontrak sekarang mengharapkan mata wang digital. Sekiranya kontrak berlaku tidak mengandungi pengubah hutang, transaksi yang dihantar dibatalkan & dikembalikan. Tidak ada yang mewah, ini adalah Ethereum 101.

Cara berfikir yang serupa mengenai fungsi tokenFallback ERC223 adalah bahawa pengubah yang perlu dibayar adalah dengan menyiapkan kontrak untuk menerima Ether, kerana fungsi tokenFallback adalah untuk menyiapkan kontrak untuk menerima token x.

Dalam standard ini, pemaju kontrak mesti laksanakan tokenFallback jika mereka mahu kontrak mereka berfungsi dengan token tertentu. Sekiranya penerima adalah alamat bukan kontrak, transaksi token ERC223 akan dilaksanakan seperti pemindahan token ERC20 semasa. Sebaliknya, jika penerima adalah kontrak, maka kontrak token ERC223 akan mula-mula cuba memanggil tokenFallback pada kontrak penerima; jika tiada fungsi tokenFallback, transaksi akan gagal.

Evolusi ERC

Walaupun keadaan draf kasar ERC223, standard ERC lain berada di cakrawala – ERC 721. ERC721 memberi tumpuan kepada tidak berjangkit aset seperti CryptoKitties, Decentraland land, & mungkin juga aset harta tanah satu hari. Kemajuan ERC 721 boleh didapati di sini: https://github.com/ethereum/eips/issues/721

Semua menunjukkan bahawa ketika masih muda, komuniti Ethereum sangat serius untuk meningkatkan platform kontrak pintarnya dengan meletakkan standard yang tepat di hadapan gelombang pemaju baru yang semakin meningkat. Perlahan-lahan tetapi pasti, bug token ERC akan berkurang – dan kemudian persoalannya akan menjadi skala standard terkini?