# Token onayları (Token Approvals) nedir?

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 *mapping*yardı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](https://revoke.cash/assets/images/learn/approvals/what-are-token-approvals/erc20-approve.png)

#### 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](https://revoke.cash/assets/images/learn/approvals/what-are-token-approvals/erc721-approve.png)

**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 `true`olarak ç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:](https://revoke.cash/assets/images/learn/approvals/what-are-token-approvals/erc721-setApprovalForAll.png)

#### 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)](https://revoke.cash/ru/exploits/sushiswap) 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.](https://revoke.cash/ru/exploits)Bö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.
