WATS Wallet
Teknik7 dk okuma

Token Onayları, Allowance ve Permit: Gerçekte Neyi İmzalıyorsunuz

Token onayı, token sözleşmesinde saklanan süregelen bir izindir: belirli bir sözleşmenin, bir daha sormadan bakiyenizin belirlenmiş bir miktarına kadarını harcamasına olanak tanır. İşte ERC-20 allowance'larının gerçekte nasıl çalıştığı, Permit ve Permit2'nin neyi değiştirdiği, bir imzanın neden artık eskiden onayın taşıdığı ağırlığı taşıdığı ve WATS gibi non-custodial bir cüzdanın bu temizliğe nasıl dahil olduğu.

Alltoscan LLC tarafından, WATS Wallet'ın arkasındaki şirket Editoryal politika

Yayımlanma Güncellenme

Token onayı, bir ERC-20 token sözleşmesinin içinde tutulan zincir üstü bir izindir — bir allowance — ve belirli bir sözleşmenin, sonraki herhangi bir anda, size tekrar sormadan, tokenlarınızın belirli bir miktarına kadarını harcayabileceğini kaydeder. Bir approve() işlemiyle oluşur ve onu verdiğiniz etkileşimden daha uzun yaşar: web sitesi ortadan kaybolabilir, allowance kalır. Permit (EIP-2612) bu ayrı işlemin yerine, dApp'in kendi eylemiyle birlikte gönderdiği zincir dışı bir imza koyar; Permit2 ise aynı süreli ve miktarı sınırlı modeli EIP-2612'yi hiç uygulamamış tokenlara genişletir — yani artık bir imza harcama yetkisi devredebilir, dolayısıyla imza istekleri eskiden onaylara gösterilen dikkati hak eder. Savunma gösterişsizdir: sınırsız yerine sınırlı miktarlar onaylayın ve artık kullanmadığınız allowance'ları iptal edin. WATS gibi tamamen non-custodial bir cüzdanda — anahtarları kullanıcı tutar, WATS asla bir anahtar tutmaz — hiçbir onay, Permit imzası ya da iptal, kendi anahtarınız imzalamadan gerçekleşemez; EVM ağlarında WATS ağ ücretlerini tek bir tokenle, ATS ile aldığı için de oralarda bir temizlik işlemi, o zincirin yerel gas tokeni yok diye asla ertelenmez.

dApp'ler neden onay istiyor

ERC-20 tokenlarının Web3 kullanıcı deneyiminin yarısını şekillendiren bir tuhaflığı vardır: bir akıllı sözleşme, siz istesenizde bile, adresinizden tokenları öylece alamaz. USDC'nizi takas eden bir DEX'in önce açık izninize ihtiyacı vardır. Bu yüzden pek çok etkileşim iki adımlıdır — önce bir approve işlemi, sonra asıl takas ya da yatırma. Onay bir formalite değildir; süregelen bir harcama yetkisidir ve verildiği işlemden daha uzun yaşar.

approve() gerçekte ne verir

Bir onay imzaladığınızda token sözleşmesi bir allowance kaydeder: X adresi (dApp'in sözleşmesi), tokenlarınızın en fazla N kadarını, harcanana, düşürülene ya da iptal edilene dek, dilediği zaman harcayabilir. İki özellik önemlidir. Birincisi, allowance token sözleşmesinde durur ve ziyaret ettiğiniz web sitesine değil, onayladığınız sözleşmeye verilir — arayüz ortadan kalkabilir, izin kalır. İkincisi, harcama anında sizin katılımınız gerekmez: yetki bir kez verildikten sonra onaylı sözleşme, sizden yeni bir imza almadan, sonraki herhangi bir işlemde tokenları çekebilir. Onayları kullanışlı yapan da tam olarak budur — saldırı yüzeyi yapan da.

Sınırsız onaylar: pratik ve kalıcı bir risk

Her onay gas'e mal olduğundan, birçok dApp bir daha onay istememek için fiilen sınırsız bir allowance ister. Kolaylık gerçektir, ama takas da öyle: bir sözleşmeye sınırsız allowance, o tokendeki tüm bakiyenizin sonsuza dek o sözleşmenin güvenliğine bağlı olması demektir. Sözleşme yıllar sonra istismar edilirse — ya da baştan beri kötü niyetliyse — saldırganın anahtarınıza ya da imzanıza ihtiyacı yoktur; verdiğiniz allowance yeterlidir. En büyük cüzdan boşaltma vakalarının birçoğu anahtar hırsızlığı değildi; sadece eski onayların paraya çevrilmesiydi.

Permit ve Permit2: imzayla onay

Modern iyileştirme Permit'tir (EIP-2612): zincir üstü bir approve işlemi yerine, dApp'in kendi eylemiyle birlikte gönderdiği zincir dışı bir mesaj imzalarsınız — iki işlem yerine bir, ayrı onay gas'i yok ve izin bir son kullanma tarihiyle sınırlandırılabilir. Permit2, fikri EIP-2612'yi hiç uygulamamış tokenlara genelleştirir ve ortak bir onay merkezi gibi çalışır: Permit2 sözleşmesinin kendisine bir kez sıradan bir zincir üstü onay verirsiniz, ondan sonra her dApp kendi miktarını ve süresini taşıyan bir imzayla yetkilendirilir. Bu takasta net olmakta fayda var — Permit2 onayları ortadan kaldırmaz, onları tek bir noktada toplar; dolayısıyla Permit2'ye verdiğiniz o süregelen allowance da takip etmeniz gereken bir onaydır. Bunlar gerçek iyileştirmelerdir, ama neyi değiştirdiklerine dikkat edin: eskiden işlemlerin yaptığı işi artık imzalar yapıyor. Sizi yanlış Permit mesajını imzalamaya ikna eden bir oltalama sitesi, kötü niyetli bir onayla aynı sonuca ulaşır — dolayısıyla imzaladığınızı okumak eskisinden daha da önemlidir.

Saldırı yüzeyi: drainer'lar ve bayat allowance'lar

Onay istismarı iki tatta gelir. Aktif: drainer siteleri gerçek dApp'leri taklit eder ve "claim" ya da "cüzdan doğrula" gibi zararsız görünen eylemler kılığında onaylar (veya Permit imzaları) ister. Pasif: yıllar önce meşru sözleşmelere verdiğiniz allowance'lar, sözleşme, yönetici anahtarları ya da yükseltme yolu ele geçirilene dek uykuda bekler. İkisi de bağlan-ve-onayla akışını Web3'ün güvenlik açısından kritik anı olarak görmek için birer nedendir; güvenli yolunu cüzdanınızı bir dApp'e bağlama rehberimizde anlatıyoruz.

Gerçekten işe yarayan onay hijyeni

Üç alışkanlık riskin çoğunu kapatır. dApp izin veriyorsa, özellikle büyük bakiyeler için sınırlı miktarlar onaylayın — sonraki ek onay, ucuz bir sigortadır. Allowance'ları saygın bir onay denetleyicisiyle düzenli inceleyip iptal edin; artık kullanmadığınız her şeyi atılacak ölü ağırlık sayın — iptalin kendisi de allowance'ı sıfıra çeken bir zincir üstü işlemdir, yani gas'e mal olur ve diğer her işlem gibi sizin imzanızı gerektirir. Ve ciddi varlıkları, aktif dApp cüzdanınızdan ayrı, onay imzalamayan bir adreste tutun. Daha katmanlı alışkanlıklar cüzdan güvenliği en iyi uygulamalarımızda. Bir imza isteği göründüğünde, imzalamadan önce türüne göre okuyun:

  • Token onayı (approve veya setApprovalForAll): harcayan adresi ve tutarı kontrol edin; tanımadığınız bir harcayana verilen sınırsız tutar bir kırmızı bayraktır.
  • EIP-2612 Permit veya Permit2 typed data: harcayanı, tutarı ve son tarihi kontrol edin; tanımadığınız bir harcayanlı ya da uzun son tarihli bir imza, görünür hiçbir işlem olmadan harcama yetkisini devreder.
  • EIP-7702 yetkilendirmesi: delege adresini kontrol edin, çünkü onu imzalamak hesabınızın kodunu o sözleşmeye yönlendirir; delegeyi tanımıyorsanız reddedin ve bir EIP-7702 delegasyonunu nasıl kontrol edip iptal edeceğinize bakın.
  • Düz personal_sign mesajı: metnin okunabilir olduğundan ve yaptığınız işlemle örtüştüğünden emin olun, örneğin tanıdığınız bir sitenin giriş mesajı gibi, ve zararsız bir doğrulama gibi sunulan okunamaz hex verisine karşı temkinli olun.

WATS bu tabloda nerede

Onaylar imzadır ve imzalar cüzdanın alanıdır. WATS tamamen non-custodial'dir — anahtarlarınızı siz tutarsınız, WATS asla bir anahtar tutmaz — dolayısıyla her onay, Permit imzası ve iptal, yalnızca sizin anahtarınız imzaladığında gerçekleşir; Chrome uzantısından, mobil uygulamadan ya da WATS'tan, Ethereum, BNB Smart Chain, Arbitrum One, Optimism, Base, Polygon, Gnosis, Celo, Mantle, Cronos, Solana ve TON genelinde. Bu aynı zamanda herhangi bir cüzdanın sizin için yapabileceğinin dürüst sınırını da çizer: cüzdan isteği size gösterebilir, ama harcayanın ve miktarın kastettiğiniz şey olduğuna yalnızca siz karar verebilirsiniz.

Ücret tarafı, eski allowance'ları yerinde bırakmanın diğer yaygın bahanesini ortadan kaldırır. WATS'ta, EVM ağlarında onay ve iptal işlemleri dahil her eylem, zincirin yerel gas tokeni yerine tek bir tokenle, ATS ile ücretlendirilir — bir ERC-4337 paymaster aracılığıyla; bu model Chrome uzantısında ve mobil uygulamada aynıdır. Solana ve TON, WATS'ta tam desteklenen zincirlerdir; Solana işlemleri kendi yerel ücretini SOL ile öder, TON'daki ücretler de ATS ile ödenir. Bu bir indirim değildir: ağ hak ettiğini yine alır ve temeldeki maliyet değişmez — değişen, ödemeyi hangi tokenin yaptığıdır. ATS'nin kendisi BSC (BNB Chain) ağında durur; zincir başına ayrı ATS bakiyesi tutmazsın, her EVM ağının ücreti bu tek bakiyeden düşülür. Toplanan ATS yakılır ve arz 100M'den 30M'lik tabana doğru iner. WATS Wallet bu birleşimi sunar.

Yani bu yazının pratik özeti kısa bir rutindir: sınırlı onayları tercih edin, bir Permit imzasının gerçekte neye yetki verdiğini imzalamadan önce okuyun ve üç ayda bir onay denetleyicisi açıp artık kullanmadığınız harcayanları temizleyin. Somut adım, bu rutini sizinle anahtarınızın arasına asla girmeyen bir cüzdandan yürütmektir: WATS'ta, Chrome uzantısında ya da mobil uygulamada her onay ve her iptal, yalnızca kendi anahtarınız imzaladığı için vardır — WATS asla bir anahtar tutmaz — ve EVM ağlarında iptalin bedeli, o zincirin talep ettiği yerel gas tokeni yerine ATS ile ödenir.

Sıkça sorulan sorular

Token allowance nedir?

Allowance, bir ERC-20 token sözleşmesine kaydedilen süregelen bir izindir: belirli bir sözleşmenin, tokenlarınızın belirli bir miktara kadarını harcayabileceğini söyler. Bir approve işlemi imzaladığınızda oluşur ve — kullandığınız web sitesinden bağımsız olarak — harcanana, değiştirilene ya da iptal edilene dek sürer. Harcama anında onaylı sözleşmenin sizden başka bir imzaya ihtiyacı yoktur.

Sınırsız (sonsuz) token onayları güvenli mi?

Kullanışlıdırlar ama kalıcı bir kuyruk riski taşırlar: o tokendeki tüm bakiyeniz, onaylanan sözleşmenin süresiz olarak asla istismar edilmemesine ya da kötü niyetli olmamasına bağlıdır. Küçük aktif bakiyelerde kolaylık çoğu zaman ağır basar; büyük varlıklar için sınırlı miktarları tercih edin ve artık kullanmadığınız allowance'ları düzenli olarak iptal edin. Büyük boşaltma vakalarının birçoğu çalınan anahtarlar değil, istismar edilen eski onaylardı.

Permit ile normal onay arasındaki fark nedir?

Normal onay, dApp harekete geçmeden önce gas'e mal olan ayrı bir zincir üstü işlemdir. Permit (EIP-2612) onu, dApp'in kendi işlemine iliştirdiği zincir dışı bir imzayla değiştirir — tek adım, isteğe bağlı son kullanma tarihleriyle; Permit2 ise bu deseni yerel Permit desteği olmayan tokenlara genişletir: Permit2 sözleşmesine verilen tek bir zincir üstü onay üzerinden, her dApp kendi imzasıyla yetkilendirilir. Güvenlik modeli de buna göre kayar: artık bir imza harcama yetkisi verebilir, dolayısıyla imza isteklerini tıpkı bir onayı inceler gibi inceleyin.

Bir token onayını nasıl iptal ederim?

İptal etmek, allowance'ı sıfıra çekmek demektir ve bunun kendisi zincir üstü bir işlemdir: saygın bir onay denetleyicisini ya da tokenin kendi arayüzünü açar, harcayan sözleşmeyi seçer ve 0 allowance yazan bir işlem imzalarsınız (Permit2 yetkileri, Permit2'nin kendi lockdown/süre dolumu mekanikleriyle iptal edilir). Gas'e mal olur, imzanızı gerektirir ve yalnızca işlemi yaptığınız zinciri etkiler — Ethereum'daki bir allowance, Arbitrum, Base ya da Polygon'dakinden ayrıdır; dolayısıyla her zincir kendi içinde temizlenmelidir.

Token onaylarını yönetmek için hangi cüzdanı kullanmalıyım?

Harcayanı ve tutarı açıkça gösteren her non-custodial cüzdan bu işi görebilir; EVM'de tek bir ücret token'ı da istiyorsanız WATS Wallet pratik bir seçimdir, çünkü tamamen non-custodial'dir — anahtarları kullanıcı tutar, WATS asla bir anahtar tutmaz — dolayısıyla her approve, Permit imzası ve iptal yalnızca kendi anahtarınız imzaladığı için vardır; Chrome uzantısından, mobil uygulamadan ya da WATS'tan Ethereum, BNB Smart Chain, Arbitrum One, Optimism, Base, Polygon, Gnosis, Celo, Mantle, Cronos, Solana ve TON genelinde, eşleştirilmiş cihazında dokunarak kimlik doğrulama adımı olarak NFC Metal Kart da kullanılabilir. WATS'ta EVM ağ ücretleri, her zincirin yerel gas tokeni yerine tek bir tokenle, ATS ile alınır; böylece birkaç EVM zincirine yayılan bir iptal turu, yanlış gas tokenini tuttuğunuz için tıkanmaz. Solana'da işlemler kendi yerel ücretini SOL ile öder, TON'daki ücretler de ATS ile ödenir. Hiçbir cüzdan, imzalamadan önce harcayanı ve miktarı okuma ihtiyacını ortadan kaldırmaz — o karar sizde kalır.

Kaynaklar

  1. ERC-20: Token Standard — Ethereum Improvement Proposals · son kontrol
  2. ERC-2612: Permit Extension for EIP-20 Signed Approvals — Ethereum Improvement Proposals · son kontrol
  3. Permit2 Overview — Uniswap Developers · son kontrol
  4. EIP-712: Typed structured data hashing and signing — Ethereum Improvement Proposals · son kontrol
  5. EIP-7702: Set Code for EOAs — Ethereum Improvement Proposals · son kontrol

İlgili yazılar

Rehber
Cüzdan temelleri

Cüzdanınızı Bir dApp'e Nasıl Bağlarsınız (ve Güvende Kalırsınız)

Cüzdanınızı bir dApp'e bağlamak, Web3'ü kullanma şeklinizdir — ve kayıpların çoğunun yaşandığı yerdir. WATS, masaüstünde tarayıcı uzantısıyla, mobilde WalletConnect QR ile bağlanır. İşte bağlanmak, imzalamak ve onaylamak arasındaki fark ve onayların nasıl iptal edileceği.

9 dk okuma
Rehber
Güvenlik ve dolandırıcılıklar

Kripto Cüzdan Güvenliği: Fonlarınızı Korumak İçin 12 En İyi Uygulama

Birbirinin üzerine yığılan on iki kripto cüzdan güvenliği uygulaması: çevrimdışı tohum cümlesi yedekleri, sıcak ve soğuk ayrımı, adres doğrulama, onayların iptali, oltalamaya karşı savunma ve isteğe bağlı, dokunarak-kimlik-doğrulama sağlayan fiziksel bir faktör.

9 dk okuma
Teknik
Cüzdan temelleri

Akıllı Hesaplar vs. EOA'lar: Ethereum Cüzdanları Nasıl Değişiyor

EOA, tek bir sabit kurala sahip düz bir anahtar çiftidir; akıllı hesap ise kuralları sözleşme kodunda yaşayan bir hesaptır — kurtarma, harcama limitleri, toplu işlem, oturum anahtarları ve paymaster'ın ödediği ücretler. İşte ikisinin maliyet, uyumluluk ve saklama (custody) açısından karşılaştırması ve EIP-7702'nin tek bir adresin ikisi birden olmasına nasıl izin verdiği.

6 dk okuma