Page cover

👨‍🏫Token onayları (Token Approvals) nedir?

Standart onay (Approve) yönteminin açıklaması

Token onayları (token approvals), bir akıllı sözleşmeye tokenlerinizi sizin adınıza harcama izni vermek için kullanılır. Bu, DEX borsaları, kredi protokolleri ve diğer Dapp uygulamaları tarafından kullanılan yaygın bir şemadır. Örneğin, tokenlerinizi merkeziyetsiz bir borsada (DEX) takas etmek istiyorsanız, borsaya bu tokenleri sizin adınıza takas etme izni vermeniz gerekecektir.

Token onayları NFT’lerle de kullanılır. Örneğin, NFT’nizi bir pazarda satmak istiyorsanız, pazara NFT’yi sizin adınıza transfer etme izni vermeniz gerekecektir. Veya NFT’nizi kredi almak için teminat olarak kullanmak istiyorsanız, kredi protokolüne NFT’yi sizin adınıza transfer etme izni vermeniz gerekir.

Token Onayları (Token Approvals) nasıl çalışır?

Çoğu [fungible token] (/learn/basics/what-are-tokens) ve [NFT] (/learn/basics/what-are-nfts) akıllı sözleşmesinde, kullanıcı tarafından verilen tüm izinlerin, kime ve hangi miktarda verildiğinin takip edildiği bir yapı bulunur mappingyardımıyla. Her defasında bu izinlerden birini verdiğinizde veya iptal ettiğinizde mapping güncellenir.

Bir sözleşme sizin adınıza tokenlerinizi harcamaya çalıştığında, token akıllı sözleşmesi harcayanın tokenleri harcama izni olup olmadığını kontrol eder mapping. Eğer izin varsa, tokenler harcanır. Yoksa işlem başarısız olur.

Fungible token onayları

Fungible tokenlerde akıllı sözleşmeler, başka bir adrese sizin adınıza tokenlerinizi harcama izni vermeyi sağlayan approve()isimli bir fonksiyon içerir. Bu fonksiyon iki parametre alır: harcayan adres ve token miktarı. İznin iptali, aynı parametrelerle ancak miktar 0 olacak şekilde fonksiyonun yeniden çağrılmasıyla gerçekleştirilir. approve() aynı parametrelerle ancak miktar 0 olacak şekilde.

Örneğin, merkeziyetsiz bir borsaya (DEX) adınıza 1000 USDC harcama izni vermek istiyorsanız, şu şekilde çağrı yapmalısınız: approve() şu şekilde:

USDC Onayla

NFT Onayları (Approvals)

NFT’ler için iki farklı onay türü vardır: sınırlı ve sınırsız. Sınırlı izinler (Limited approvals), akıllı sözleşmeye belirli bir NFT’nin (belirli bir id ile) transferi için izin vermek amacıyla kullanılır. Sınırsız izinler (Unlimited approvals) ise akıllı sözleşmeye cüzdanınızdaki herhangi bir NFT’yi transfer etme izni vermek için kullanılır. Sınırlı izinler aynı anda sadece bir adrese verilebilir ve bu yüzden çoğu NFT pazarı sınırsız izinleri kullanır.

Sınırlı NFT onayları (Limited Approvals)

Sınırlı NFT onayları için sözleşmeler, başka bir adrese sizin adınıza belirli bir NFT’yi transfer etme izni vermeyi sağlayan bir approve()fonksiyonu içerir. Bu fonksiyon iki parametre alır: alıcı adresi ve ilgili NFT’nin id’si. Onayın geri alınması, fonksiyonun aynı parametrelerle ancak gönderen adresi approve() 0x000... olarak belirtilerek yeniden çağrılmasıyla yapılır.Bu tür onay ayrıca transfer esnasında otomatik olarak iptal edilir.

Örneğin, OpenSea’ye ID’si 4420 olan Pudgy Penguin’inizi sizin adınıza transfer etme izni vermek istiyorsanız, şu çağrıyı yapmalısınız: approve() şu şekilde:

Pudgy Penguins 4420 Onayla

Sınırsız NFT onayları (Unlimited Approvals)

Sınırsız NFT onayları için sözleşmeler şu fonksiyonu içerir setApprovalForAll(), başka bir adrese cüzdanınızdaki herhangi bir NFT’yi sizin adınıza transfer etme izni vermenizi sağlar. Bu fonksiyon iki parametre alır: operatör adresi ve true/false değeri. Onay, fonksiyonun setApprovalForAll() parametresi ile trueolarak çağrılmasıyla verilir, iptal ise false.

parametresi ile yapılır. setApprovalForAll() şu şekilde:

Örneğin, OpenSea’ye cüzdanınızdaki herhangi bir NFT’yi sizin adınıza transfer etme izni vermek istiyorsanız, şu çağrıyı yapmalısınız:

Tüm Pudgy Penguins Onayla

Yarı-fungible token onayları (Semi-Fungible) setApprovalForAll()Yarı-fungible (Semi-Fungible) tokenler, aynı varlığın birden fazla kopyasını temsil etmek için kullanılabilen özel bir NFT türüdür. Görüleceği üzere, bu tokenlerin NFT’lerle birçok ortak yönü vardır, bu yüzden onay sistemleri de oldukça benzer görünür. En büyük fark, semi-fungible tokenlerin bir approve().

fonksiyonuna sahip olması, ancak bir

fonksiyonunun olmamasıdır.

Token onaylarındaki riskler (Token Approvals)

Token onayları akıllı sözleşme ekosisteminin kilit bir parçasıdır. Onlar olmadan birçok DeFi uygulaması yaşamsal olamazdı. Ancak token onaylarıyla ilgili riskler de vardır. Bir akıllı sözleşmeye tokenlerinizi harcama izni verirseniz, o sözleşme istediği zaman onları harcayabilir. Bu yüzden eğer akıllı sözleşme ele geçirilirse veya saldırıya uğrarsa, tokenleriniz çalınabilir. Akıllı sözleşme açıkları (exploits)arrow-up-right Token onaylarıyla ilgili risklerden biri, onay verdiğiniz akıllı sözleşmenin ele geçirilmesidir. Oldukça popüler projeler bile, Nisan 2023’te gördüğümüz gibi, saldırıya uğrayabilir

SushiSwap açık örneğinde olduğu gibi Böyle durumlarda, hackerlar ele geçirilen akıllı sözleşmeye verdiğiniz izinler varsa cüzdanınızdan token çalabilirler.arrow-up-rightBöyle durumları önlemek için biz bir

exploit tarayıcısı

oluşturduk; bu tarayıcı akıllı sözleşmeler için bilinen exploitlerin bir listesini içerir. Bu aracı, ele geçirilmiş akıllı sözleşmelerde aktif onaylarınız olup olmadığını kontrol etmek için kullanabilirsiniz.

  1. Dolandırıcılık ve kimlik avı (phishing) saldırılarıGerçek projelerin hacklenmesinin yanı sıra kripto dünyasında çok sayıda dolandırıcılık ve kimlik avı saldırısı da vardır. Dolandırıcılar sıklıkla paranızı çalmak için onayları kullanır. Onayları kullanan yaygın kimlik avı türleri şunlardır:

  2. Dolandırıcıya doğrudan onay verme: Dolandırıcı sizi, onun kontrolündeki bir akıllı sözleşmeye onay vermeniz için kandırır; bu da onun parayı doğrudan cüzdanınızdan almasına olanak tanır.

Last updated