Fiyatlar yükleniyor…

Token Onayları Doğru Şekilde Nasıl İptal Edilir?

Eski sınırsız onaylar, onları isteyen dapp kapandıktan sonra bile kalabilir. Güvenli temizlik rutini ve iptalin kaldırmadığı imza riskini öğrenin.

Token Onayları Doğru Şekilde Nasıl İptal Edilir?

Token onayı nedir ve neden iptal etmek isteyesiniz?

Merkeziyetsiz bir borsada token takas ettiğinizde, bir borç verme piyasasında teminat yatırdığınızda veya varlıkları getiri ürününe taşıdığınızda, hedef sözleşme genellikle tokenlarınızı kendi başına çekemez. ERC20 tokenları basit bir allowance modeliyle tasarlanmıştır: token sözleşmesi kullandığınız uygulamayı bilmez ve uygulama, siz açıkça yetkilendirmediğiniz sürece tokenları hareket ettiremez. Bu nedenle bir işlemden veya yatırımdan önce cüzdanınız sizden, fiilen Uniswap router'ının USDC'min en fazla X kadarını ya da sınırsız miktarını harcayabileceğini söyleyen bir onay işlemi imzalamanızı ister.

Bu imzalanmış onay, token sözleşmesinin içinde, zincir üzerinde saklanır ve siz iptal edene kadar orada kalır. Bir router için 100 USDC onayladıysanız ve 95 kullandıysanız, kalan 5 allowance olarak durur. Sınırsız bir miktarı onayladıysanız, bu allowance siz iptal edene kadar sonsuza dek yaşar. Temel sorun da budur. MetaMask gibi cüzdanlar bunu dev sayı yerine 'sınırsız' olarak gösterir, kısmen kullanıcının ne kadar açıkta olduğunu gizlemek için.

Onaylar kendi başına kötü değildir. DeFi böyle çalışır. Risk üç yerden gelir. Birincisi, onay verdiğiniz dapp sonradan hacklenir ve saldırgan hâlâ aktif olan allowance'ı çağırır. İkincisi, dapp en başından beri dolandırıcılıktır ve onay tüm saldırı yükünün kendisidir. Üçüncüsü, aylar önce bir protokol kullandınız, unuttunuz ve o protokol o zamandan beri el değiştirdi, yükseltildi veya taşındı. Bu sorunların hiçbiri teorik değildir: 2022 Badger DAO olayı, kısmen Badger router'ındaki eski onaylar kötüye kullanıldığı için yaklaşık 120 milyon dolar kaybettirdi ve sayısız kişisel kaybın izi phishing sitelerine verilen onaylara kadar gider.

Gerçekte ne ters gidebilir: gerçek risk yüzeyi

Onay riskini düşünmenin en temiz yolu üç katmanı ayırmaktır: harcayıcı sözleşme, token sözleşmesi ve imza katmanı. Her katmanın başarısız olduğunda farklı bir etki alanı vardır ve çoğu rehber bunları tek bir şeye indirger. Aynı şey değillerdir.

Harcayıcı sözleşme. Bu, izin verdiğiniz dapp, router veya vault'tur. Bu sözleşme yükseltilirse, istismar edilirse veya admin anahtarları tarafından basitçe rug pull yapılırsa, ona işaret eden her allowance artık saldırgana işaret eden bir allowance olur. Sınırsız onayla saldırgan, ek imza gerekmeksizin tek bir çağrıda cüzdanınızdaki o türdeki tüm tokenları boşaltabilir.

Token sözleşmesi. Onay, tokenın kendisi üzerinde kaydedilir. İptal etmek, tokena o harcayıcı için allowance'ınızı tekrar sıfıra ayarlayan yeni bir işlem göndermek demektir. Bu işlem mine edilene kadar eski allowance hâlâ aktiftir. 'Geri al' düğmesi yoktur, yalnızca eski allowance'ın üzerine yazan yeni bir işlem vardır.

İmza katmanı. Çoğu kullanıcının kaçırdığı kısım budur. Modern cüzdanlar ve dapp'ler zincir dışı imzalar (eth_sign, EIP 2612 permit, Uniswap'ın Permit2'si) kullanır, böylece gas ödemeden, hatta hiç işlem göndermeden onay verebilirsiniz. Bu imzalar onay olarak zincirde saklanmaz, imzalayanın geçmişinde yaşar. Kötü niyetli bir imza, bir harcayıcıya cüzdanınızdan token çekme izni verebilir ve zincir içi onaylarınızı iptal etmek bu konuda kesinlikle hiçbir şey yapmaz. Çözüm, aşağıda ele aldığımız farklı bir araçtır.

Dürüst çerçeve şu: iptal etmek gereklidir ama yeterli değildir. Artan zincir içi allowance'ların yavaş sızıntısını kapatır, ancak dün bir permit imzasının açtığı kapıyı kapatmaz.

Sonsuz ve sınırlı onaylar: hangisi gerçekten daha güvenli?

Çoğu cüzdan kolaylık için varsayılan olarak 'sınırsız' seçeneğini kullanır, çünkü alternatif, bakiyeniz her değiştiğinde yeni bir onay imzalamaktır. Güvenlik açısından sınırlı onay kesinlikle daha güvenlidir, ancak bunun da bir bedeli vardır.

Sonsuz onay, bir dapp'i ilk kez kullandığınızda size bir işlem maliyeti çıkarır, ardından devam eden işlem maliyeti sıfır olur, çünkü izin gelecekteki her etkileşimi karşılayacak kadar büyüktür. Dezavantajı, yukarıda anlatılan uzun kuyruk riskinin ta kendisidir: 2021'de bir kez kullandığınız bir dapp, 2026'da hâlâ tokenlarınız üzerinde açık çek yetkisine sahip olabilir. Buna karşılık sınırlı onay, izin tüketildiği ve yeniden artırılması gerektiği için kabaca her para yatırdığınızda veya işlem yaptığınızda size bir işlem maliyeti çıkarır.

Pratikte, bilinçli kullanıcılar orta yolu seçer. Sonsuz onayları yalnızca haftalık olarak etkileşim kurdukları, defalarca sınanmış küçük bir sözleşme grubuna verirler, diğer her şey için sınırlı onay kullanırlar. Revoke.cash bunu denetlemeyi kolaylaştırır, çünkü her spender'ı, izni ve tokenı tek ekranda gösterir.

Bir nüans: bazı tokenlar ERC20'yi standart dışı şekillerde uygular. Örneğin USDT, sıfır olmayan bir değerden başka bir sıfır olmayan değere doğrudan onay değişikliğine izin vermez. Önce izni sıfıra ayarlamanız, bu işlemin mine edilmesini beklemeniz ve ardından yeni izni ayarlamanız gerekir. Revoke.cash bunu otomatik olarak halleder; bunu Etherscan üzerinden elle yapıyorsanız önce izni sıfıra ayarlamanız gerekir.

Revoke.cash ve Etherscan token onay denetleyicisi

Bunlar yeni başlayanların ilk karşılaşacağı iki araçtır ve rakip olmaktan çok aynı veriye bakan iki farklı görünümdür. İkisi de on chain onay olaylarınızı doğrudan Ethereum'dan okur, bu nedenle hiçbir araç fonlarınızın saklama yetkisini almaz ve hiçbiri sizin adınıza bir şey imzalayamaz.

Revoke.cash, ERC20 tokenlar, ERC721 ve ERC1155 NFT'ler dahil olmak üzere şimdiye kadar onayladığınız her tokenı ve Ethereum dışındaki zincirleri de kapsayan özel bir dapp'tir, çoğu büyük EVM ve az sayıda non EVM chain dahil. İzinleri spender sözleşmesine göre gruplar, bilinen protokoller için risk etiketleri gösterir ve artık elinizde olmayan tokenlara ait izinleri öne çıkarır, bu en yaygın gizli risktir. Ayrıca cüzdanınızda önceden doldurulmuş bir revoke işlemine bağlantı verir. Site açık kaynaklıdır ve erken DeFi döneminden beri vardır, bu da güven açısından önemlidir.

Etherscan token onay denetleyicisi, Etherscan block explorer'ın içinde yer alır. Bir cüzdan adresi bağlarsınız ve ilgili token ile spender sözleşmelerine bağlantılarla birlikte o adrese bağlı her ERC20 onayını listeler. Daha muhafazakâr ve daha az özelliklidir, ancak Etherscan'in marka güvenini devralır ve bir Revoke.cash sonucu tuhaf görünüyorsa faydalı bir ikinci görüştür.

Her iki araç da kendi cüzdanınızda bir iptal işlemi imzalamanızı gerektirir. Aynı şeyi token sözleşmesinde Etherscan'in write contract sekmesi üzerinden doğrudan 'approve(spender, 0)' çağırarak da yapabilirsiniz, ancak bu yol hata yapmaya daha açıktır ve denetlemesi daha zordur. Yeni başlayanlar için Revoke.cash daha temiz varsayılan seçenektir.

İmza tuzağı: neden revoke etmek yeterli değildir?

Permit imzaları (EIP 2612) ve Uniswap'ın Permit2'si, onayları daha ucuz veya gas'sız hale getirmek için tanıtıldı. Bir onay işlemi göndermek yerine, off chain bir mesaj imzalarsınız ve bu mesaj 'spender X'in token Z'mden Y miktarına kadarını taşımasına izin veriyorum' der. Bu mesaj daha sonra spender tarafından gönderilir ve token sözleşmesi bunu on chain doğrulayıp, bunu kullanan eylemle aynı işlem içinde izni sizin için ayarlar. Kullanıcının bakış açısından UX daha akıcıdır: daha az onay, ayrı gas yok.

Tuzak şudur: kötü niyetli bir site de sizden çok daha büyük bir izin ve çok daha uzun bir son kullanma süresiyle tam olarak aynı imzayı isteyebilir. İmza, spender onu gönderene kadar hiçbir şey yapmaz, ancak gönderildikten sonra başka herhangi bir on chain onaydan ayırt edilemez. Daha kötüsü, bazı phishing kitleri hemen kullanılmayan, bunun yerine kullanıcı konuyu geride bıraktıktan sonra daha sonra kullanıma sokulmak üzere dark web'de satılan permit imzaları ister.

On chain onaylarınızı revoke etmek bunlara dokunmaz. Bir permit tarafından oluşturulan izin yalnızca gönderimden sonra on chain var olur ve var olduktan sonra Revoke.cash'te diğer tüm onaylar gibi görünür, bu yüzden yine de revoke edebilirsiniz. Ancak tehlikeli pencere gönderimden öncedir, bu sırada ne Etherscan ne de Revoke.cash bunu görebilir. Bu pencere yalnızca imza katmanında kapatılır.

Pratik savunma araçları cüzdan düzeyindedir: Scam Sniffer, Pocket Universe, Blowfish gibi araçlar ve Rabby ile MetaMask'in daha yeni sürümü gibi cüzdanlardaki yerleşik uyarılar, şüpheli imzaları siz imzalamadan önce yakalar. Benimsenmesi gereken disiplin basittir: mesajı, spender'ı ve verdiği izni tamamen anlamadıkça asla bir permit veya off chain onay imzalamayın. Cüzdanınızın size gösterdiği uyarı ekranlarını okuyun. Yalnızca bir siteyi görüntülemek istemişken dapp sizden permit istiyorsa, phishing sinyali budur.

Güvenli, tekrarlanabilir bir temizlik rutini

Bir rutinin amacı, o anda 'bunu revoke etmeli miyim' kararını ortadan kaldırmaktır, çünkü hata yapma olasılığınızın en yüksek olduğu an budur. Rutini üç ayda bir veya yüzde 100 emin olmadığınız bir protokolle herhangi bir etkileşimden sonra çalıştırın.

Adım 1: Revoke.cash'i açın veya yedek olarak Etherscan token onay denetleyicisini kullanın ve denetlemek istediğiniz cüzdanı bağlayın. Spender listesini gözden geçirin. Tanımadığınız her şey veya artık kullanmadığınız bir protokole işaret eden her şey revoke adayıdır.

Adım 2: Risk etiketine göre sıralayın. Revoke.cash bilinen protokolleri ve bilinen kötü niyetli spender'ları işaretler. İkinci gruptaki her şey, izin boyutu ne olursa olsun hemen revoke edilmelidir.

Adım 3: Kalan spender'lar için sonsuz ve sınırlı arasında karar verin. Protokol haftalık rotasyonunuzdaysa sonsuz onayı koruyun ve sadece not alın. Aylık veya daha seyrek kullanıyorsanız izni kullanmayı düşündüğünüz tam miktara ayarlayın ya da sıfırlayıp daha sonra yeniden onaylayın.

Adım 4: Yapabildiğiniz yerde toplu işlem kullanın. Revoke.cash, bazı cüzdanlarda birden fazla revoke işlemini tek bir işlemde sıraya almanıza izin verir, bu da gas maliyetini belirgin şekilde azaltır. Ethereum mainnet üzerinde yoğun zamanlarda bir düzine onayı tek tek revoke etmek gas olarak 20 ila 60 $ tutabilir, toplu sürüm ise bir base fee artı küçük bir ek yük maliyeti getirir. Revoke işlemleri üzerinde on chain zaman baskısı yoktur, bu nedenle maliyet önemliyse düşük gas aralığını bekleyebilirsiniz.

Adım 5: Revoke ettikten sonra, hedeflenen her iznin artık sıfır göründüğünü doğrulamak için denetleyiciyi bir kez daha çalıştırın. Ardından cüzdanınızdaki imza geçmişinizi denetleyin, Rabby ve MetaMask yakın tarihli imzalanmış mesajları gösterir, ve tanıdık gelmeyen her şeyi işaretleyin. Açıklayamadığınız her şeyi ele geçirilmiş kabul edin ve fonları yeni bir cüzdana taşımayı düşünün.

Onay hijyenini akıllı şekilde nasıl sürdürürsünüz

Onay hijyeni tek seferlik bir panik düğmesi değildir. API anahtarlarını yenilemek veya banka ekstrelerini gözden geçirmek gibi bir alışkanlıktır ve en çok sıradan hale geldiğinde fayda sağlar. Zippfeed, wallet ve DeFi başlıklarını duygu puanlaması (bullish, neutral veya bearish) ve önem derecesiyle öne çıkarır, böylece büyük bir protokol istismarını bildirildiği anda fark edebilir ve haber gündemi değişmeden eski izinlerinizi denetleyebilirsiniz.

Sıkça sorulan sorular

Token onaylarını iptal etmek güvenli mi?
Evet. İptal işlemi, belirli bir harcayıcı için allowance değerini yeniden sıfıra çeken on chain bir işlem gönderir ve bu süreçte hiçbir fon hareket etmez. Yalnızca gas ödersiniz. Tek risk, sahte bir Revoke.cash veya Etherscan sitesiyle etkileşime girmektir. Bu yüzden gerçek URL’leri yer imlerinize eklemeli, arama reklamlarından veya DM’lerden gelen bağlantıları asla takip etmemelisiniz. Bu genel eğitim içeriğidir, finansal tavsiye değildir.
Bir onayın iptali teknik olarak nasıl çalışır?
Cüzdanınız, harcayıcı adresi ve sıfır allowance ile standart ERC20 approve fonksiyonunu çağıran bir işlemi token sözleşmesine gönderir. İşlem onaylandıktan sonra eski allowance değerinin üzerine yazılır ve harcayıcı artık o tokenı cüzdanınızdan çekemez. USDT gibi sıfır olmayan değerler arasında doğrudan değişikliğe izin vermeyen tokenlarda önce allowance değerini sıfıra çekmeniz, işlemin onaylanmasını beklemeniz ve ardından yeni bir tutarı onaylamanız gerekir.
Tüm onaylarımı tek seferde iptal etmeli miyim?
Her şeyi iptal etmek makul bir başlangıçtır, ancak aktif olarak kullandığınız küçük bir güvenilir protokol grubu varsa şart değildir. Pratik bir orta yol, tanımadığınız veya kullanmadığınız her şeyi iptal etmek, sınırsız onayları yalnızca düzenli kullandığınız dapp’ler için tutmak ve geri kalanını kesin tutarlara çevirmektir. Doğru cevap DeFi kullanım şeklinize bağlıdır ve bu finansal tavsiye değildir.
İptal işlemi phishing amaçlı permit imzalarını neden kaldırmaz?
Permit ve Permit2 imzaları, harcayıcı bunları gönderdiğinde on chain allowance oluşturan off chain mesajlardır. Gönderilene kadar Revoke.cash ve Etherscan tarafından görünmezler. Mevcut on chain onaylarınızı iptal etmek de onları geçersiz kılmaz. Savunma cüzdan düzeyindedir. İmza uyarı araçları kullanmak, neyi imzaladığınızı dikkatle okumak ve beklenmedik her permit isteğini phishing girişimi olarak görmek gerekir.
İlgili tokenler
$ETH