Neden "token onayı" DeFi'de en kötü fikir.
ERC-20, tokeni doğru şekilde standartlaştırdı ama zor kısmı yanlış yaptı. Bakiyeleri ve transferleri standartlaştırdı, ancak bir sözleşmenin gerçekten tokenlarınızı kullanması için hiçbir temiz yol sunmadı. Bir sözleşmeye basit bir transfer yapmak, ona hiçbir şeyin ulaştığını bile söylemez. Bu yüzden bir acil çözüm eklediler: approve + transferFrom.
Bu acil çözümün size zorladıklarına bir bakın. Bir sözleşmenin tokenlarınızı harcamasına izin vermek için ya:
- Bir kez büyük veya sonsuz bir miktar için onay verirsiniz ve artık sözleşme, geri çekene kadar her zaman cüzdanınıza erişebilir. Muhtemelen asla okumadığınız bir sözleşmeye güveniyorsunuz.
- YA da her işlem öncesinde tam olarak gerekli miktarı onaylarsınız, bu da her işlemde ikinci bir işlem ve ikinci bir gaz ücreti demektir.
Bir yabancıyı güvenin ya da her hareketinizde bir vergi ödeyin. Bu iki seçenek ve standart daha iyisini sunmuyor. Herkes birinci kapıyı seçiyor ve "sonsuz" butonuna tıklıyor, zincir ise kendi cüzdanlarına dolu silahlar yöneltmiş bireylerle doluyor.
Teorik değil. Jaredfromsubway MEV botu tam olarak bu şekilde milyonlar kaybetti. Hiçbir şey hacked edilmedi. Sahte işlemler peşinde koşarken onayları dağıttı ve biri transferFrom ile fonları çıkarttı.
En kötü kısmı: Daha iyi bir tasarım her zaman var olmuştu. Transfer-and-call (ERC-223, ERC-1363), tam miktarı taşır ve alıcıyı tek bir işlemde bilgilendirir. Sürekli onay gerekmez, ek işlem gerekmez, kimse hesabınıza anahtar tutmaz. ERC-20'nin erken avantajı nedeniyle kaybetti ve şimdi sonsuz onaylar, DeFi'nin tümüne dayanak oluşturuyor. Permit, Permit2, hesap soyutlaması, her "düzeltme" asla piyasaya sürülmemesi gereken temel bir yapı üzerine yapılan bir tamirat.
Güvenli seçeneği almadık. Konvenyanslı olanı aldık ve bundan beri bunun bedelini ödüyoruz.