> For the complete documentation index, see [llms.txt](https://read.cryptograb.wiki/cryptograb-automatic-affiliate/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://read.cryptograb.wiki/cryptograb-automatic-affiliate/cryptograb-automatic-affiliate/nova-drainer-docs/readme/chto-takoe-apruvy-tokenov-token-approvals.md).

# Что такое апрувы токенов (Token Approvals)?

Апрувы токенов (token approvals) используются для того, чтобы дать смарт-контракту разрешение тратить ваши токены от вашего имени. Это общая схема, используемая DEX-биржами, протоколами кредитования и другими Dapp-приложениями. Например, если вы хотите торговать своими токенами на децентрализованной бирже (DEX), вам нужно будет дать бирже разрешение на обмен этих токенов от вашего имени.

Апрувы токенов также используются с NFT. Например, если вы хотите продать свой NFT на торговой площадке, вам нужно будет дать торговой площадке разрешение на передачу NFT от вашего имени. Или если вы хотите использовать свой NFT в качестве залога для получения кредита (loan), вам нужно будет дать протоколу кредитования (lending protocol) разрешение на передачу NFT от вашего имени.

### Как работают апрувы токенов (Token Approvals)?

В большинстве смарт-контрактов \[взаимозаменяемых токенов] (/learn/basics/what-are-tokens) и \[NFT] (/learn/basics/what-are-nfts) есть структура *mapping*, при помощи которой отслеживаются все разрешения, которые выдал пользователь, а также кому и на какой объём. Каждый раз, когда вы предоставляете или отменяете одно из этих разрешений, *mapping* обновляется.

Когда контракт пытается потратить ваши токены от вашего имени, смарт-контракт токена проверяет *mapping*, чтобы узнать, есть ли у тратящего разрешение на трату токенов. Если да, то токены тратятся. Если нет, транзакция не проходит.

#### Апрувы взаимозаменяемых (fungible) токенов

Во взаимозаменяемых (fungible) токенах смарт-контракты содержат функцию `approve()`, позволяющую дать разрешение другому адресу потратить ваши токены от вашего имени. Эта функция принимает два параметра: адрес расходующего и количество токенов. Отмена разрешения осуществляется путем повторного вызова функции `approve()` с теми же параметрами, но с суммой, равной 0.

Например, если вы хотите дать разрешение децентрализованной бирже (DEX) потратить 1000 USDC от вашего имени, вы должны вызвать `approve()` следующим образом:

![Approve USDC](https://revoke.cash/assets/images/learn/approvals/what-are-token-approvals/erc20-approve.png)

#### NFT Апрувы (Approvals)

Для NFT существует два различных типа апрувов: ограниченное и неограниченное. Ограниченные разрешения (Limited approvals) используются для того, чтобы дать смарт-контракту разрешение на передачу конкретного NFT (с определенным id). Неограниченные разрешения (Unlimited approvals) используются для предоставления смарт-контракту разрешения на передачу любого вашего NFT. Ограниченные разрешения могут быть предоставлены только одному адресу за раз, и поэтому большинство NFT-маркетплейсов используют неограниченные разрешения.

**Ограниченные апрувы NFT (Limited Approvals)**

Для ограниченных апрувов NFT контракты содержат функцию `approve()`, позволяющую дать разрешение другому адресу на перевод определенного NFT от вашего имени. Эта функция принимает два параметра: адрес отправителя и id нужного NFT. Отзыв апрува осуществляется повторным вызовом функции `approve()` с теми же параметрами, но с указанием адреса отправителя `0x000...`. Этот вид апрува также автоматически отменяется при переводе.

Например, если вы хотите дать разрешение OpenSea на передачу вашего Pudgy Penguin с ID 4420 от вашего имени, вы должны вызвать `approve()` следующим образом:

![Approve Pudgy Penguins 4420](https://revoke.cash/assets/images/learn/approvals/what-are-token-approvals/erc721-approve.png)

**Неограниченные апрувы NFT (Unlimited Approvals)**

Для неограниченного количества апрувов NFT-контракты содержат функцию `setApprovalForAll()`, позволяющую дать разрешение другому адресу на перевод любого NFT из кошелька от вашего имени. Эта функция принимает два параметра: адрес отправителя и значение true/false. Апрув осуществляется вызовом функции `setApprovalForAll()` с параметром `true`, а отзыв - с параметром `false`.

Например, если вы хотите дать апрув OpenSea на передачу любого вашего NFT от вашего имени, вы должны вызвать `setApprovalForAll()` следующим образом:

![Approve All Pudgy Penguins](https://revoke.cash/assets/images/learn/approvals/what-are-token-approvals/erc721-setApprovalForAll.png)

#### Апрувы полувзаимозаменяемых токенов (Semi-Fungible)

Полувзаимозаменяемые (Semi-Fungible) токены - это особый тип NFT, который может использоваться для представления нескольких копий одного и того же актива. Как вы можете понять, эти токены имеют много общего с NFT, поэтому их система апрувов также выглядит очень похоже. Самое большое различие заключается в том, что у semi-fungible токенов есть функция `setApprovalForAll()`, но нет функции `approve()`.

### Риски при апруве токенов (Token Approvals)

Апрувы токенов - это ключевая часть экосистемы смарт-контрактов. Без них многие DeFi приложения были бы нежизнеспособны. Но есть и риски, связанные с апрувами токенов. Если вы даете смарт-контракту разрешение тратить ваши токены, он может потратить их в любой момент. Поэтому если смарт-контракт взломают или он будет атакован, ваши токены могут быть украдены.

#### Эксплойты смарт-контрактов

Один из рисков при апруве токенов заключается в том, что смарт-контракт, которому вы даете апрув, может быть взломан. Даже достаточно популярные проекты могут стать жертвой взлома, как мы видели в случае с [SushiSwap эксплойтом](https://revoke.cash/ru/exploits/sushiswap) в апреле 2023 года. В таких случаях хакеры могут украсть токены из вашего кошелька, если вы давали какие-либо разрешения взломанному смарт-контракту.

Чтобы предупредить такие ситуации, мы создали [обозреватель эксплойтов](https://revoke.cash/ru/exploits), который содержит список известных эксплойтов для смарт-контрактов. Вы можете использовать этот инструмент, чтобы проверить, есть ли у вас активные одобрения во взломанных смарт-контрактах.

#### Скам и фишинг-атаки

Помимо взлома настоящих проектов, в крипте также существует множество мошеннических и фишинговых атак. Скамеры часто используют апрувы, чтобы украсть ваши деньги. К числу распространенных фишингов, использующих апрувы, относятся:

1. **Прямой апрув скамеру**: Скамер обманом заставляет вас апрувнуть смарт-контракт, который он контролирует, что позволяет ему забрать деньги непосредственно из вашего кошелька.
2. **Размещение объявлений на NFT-маркетплейсе**: Скамер обманом заставит вас апрувнуть подпись, в которой ваши активы выставлены на продажу на NFT-маркетплейсе за 0 ETH, что позволит ему "купить" ваши NFT за 0 ETH.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://read.cryptograb.wiki/cryptograb-automatic-affiliate/cryptograb-automatic-affiliate/nova-drainer-docs/readme/chto-takoe-apruvy-tokenov-token-approvals.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
