Bakit ang “token approval” ang pinakamasamang ideya sa DeFi.
Ang ERC-20 ay tama sa token, ngunit mali sa mahirap na bahagi. Ito ay standardize ang balances at transfers, ngunit hindi nagbigay ng malinaw na paraan kung paano gamitin ng contract ang iyong mga token. Ang isang simpleng transfer sa isang contract ay hindi kahit anong nag-uulat na dumating ang anumang bagay. Kaya nilagyan nila ito ng isang hotfix: approve + transferFrom.
Tingnan kung ano ang ipinipilit ng hotfix na ito sa iyo. Upang bigyan ng pahintulot ang isang contract na mag-spent ng iyong mga token, kailangan mong:
- i-approve ito nang isang beses para sa malaking o walang hanggang dami, at ngayon ay maaari itong makapasok sa iyong wallet kahit kailan, palagi, hanggang sa tandaan mong i-revoke. Pinipiwit mo ang isang contract na baka hindi mo nabasa.
- O i-approve ang eksaktong amount agad bago bawat aksyon, na nangangahulugan ng pangalawang transaction at pangalawang gas fee sa bawat operasyon.
Pisti sa isang unknown, o magbayad ng buwis sa bawat galaw. Ito ang dalawang pagpipilian, at ang standard ay walang mas mabuting opsyon. Kaya pumipili lahat ng tao sa pinto isa at i-click ang “infinite,” at puno ng mga wallet na may mga baril na naka-target sa kanilang sarili.
Hindi teoretikal. Ang jaredfromsubway MEV bot ay nawalan ng milyon-milyon nang ganito. Walang nahack. Ibinigay nila ang approvals habang hinahanap ang fake trades, at gamit ang transferFrom, tinakpan ng iba ang pera.
Ang pinakamasamang bahagi: umiiral na ang mas mabuting disenyo buong panahon. Ang transfer-and-call (ERC-223, ERC-1363) ay naglalayong ilipat ang eksaktong amount at i-notify ang receiver sa isang transaction lamang. Walang standing approval, walang karagdagang tx, walang unknown na may susi sa iyong account. Nasira ito dahil sa head start ng ERC-20, at ngayon ang infinite approvals ay load-bearing sa buong DeFi. Ang permit, permit2, account abstraction, lahat ng “fix” ay isang patch sa isang primitive na dapat ay hindi dapat ipinadala.
Hindi natin natanggap ang ligtas na opsyon. Natanggap natin ang kapaki-pakinabang, at patuloy nating binabayaran ito.