Mengapa "pengesahan token" adalah idea terburuk dalam DeFi.
ERC-20 mendapat token dengan betul, tetapi bahagian sukar salah. Ia memstandardkan baki dan pindahan, tetapi tidak pernah menyediakan cara yang bersih bagi kontrak untuk benar-benar menggunakan token anda. Pindahan biasa ke kontrak pun tidak memberitahu apa-apa bahawa sesuatu telah tiba. Oleh itu, mereka menambahkan penyelesaian sementara: approve + transferFrom.
Lihat apa yang dipaksakan oleh penyelesaian sementara ini terhadap anda. Untuk membenarkan kontrak menghabiskan token anda, anda perlu:
- mengesahkannya sekali sahaja untuk jumlah yang sangat besar atau tanpa had, dan sekarang ia boleh mengakses dompet anda bila-bila masa sahaja, selamanya, sehingga anda ingat untuk mencabulnya. Anda mempercayai kontrak yang mungkin tidak pernah anda baca.
- ATAU mengesahkan jumlah tepat sebelum setiap tindakan, yang bermaksud transaksi kedua dan bayaran gas kedua untuk setiap operasi.
Mempercayai orang asing, atau membayar cukai pada setiap pergerakan. Itulah dua pilihan, dan piawaian ini tidak menawarkan apa-apa yang lebih baik. Jadi semua orang memilih pintu satu dan klik "tanpa had", dan rantai dipenuhi dengan dompet yang menunjukkan senjata yang dimuatkan ke arah diri mereka sendiri.
Bukan teori. Bot MEV jaredfromsubway baru-baru ini kehilangan jutaan dengan cara ini. Tiada apa-apa di-hack. Ia memberikan pengesahan semasa mengejar perdagangan palsu, dan seseorang menggunakan transferFrom untuk mengambil dana tersebut keluar.
Bahagian terburuk: reka bentuk yang lebih baik sudah wujud sepanjang masa. Transfer-and-call (ERC-223, ERC-1363) memindahkan jumlah tepat dan memberitahu penerima dalam satu transaksi. Tiada pengesahan berterusan, tiada transaksi tambahan, tiada orang asing memegang kunci ke akaun anda. Ia kalah kepada permulaan awal ERC-20, dan sekarang pengesahan tanpa had menjadi tulang belakang seluruh DeFi. Permit, permit2, abstraksi akaun, setiap "penyelesaian" hanyalah tampalan pada sesuatu yang sepatutnya tidak pernah dilancarkan.
Kita tidak mendapat pilihan yang selamat. Kita mendapat pilihan yang selesa, dan kita telah membayarnya sejak itu.