Ръководство · Риск за портфейла · · Стефан Цезаров
Какво всъщност подписваш, когато одобряваш токен
Разрешението за харчене може да е толкова важно, колкото и самото плащане.
Отваряш приложение за размяна, избираш токен и свързваш портфейла си. Преди размяната портфейлът те кара да одобриш харчене.
Изглежда, че не излизат токени. Изглежда като стъпка за настройка.
Стъпка за настройка е—но дава на друг адрес разрешение да мести токените ти. В зависимост от това какво одобриш, това разрешение може да остане дълго след като затвориш сайта.
Одобренията са нормална част от използването на крипто приложения. Рискът е да дадеш повече достъп, отколкото си искал, или да го дадеш на грешния адрес.
Това ръководство обяснява какво означава този достъп, какво да провериш преди подписване и какво да направиш, ако вече си одобрил нещо подозрително.
Отнася се за Ethereum и съвместимите мрежи. Други блокчейни използват различни системи за разрешения.
01Одобрението дава разрешение за харчене
Портфейлът ти държи ключовете, с които разрешаваш действия. Салдото ти от токена е записано в смарт договора на токена.
За да мести тези токени, приложение за размяна или заемане обикновено първо се нуждае от твое разрешение. Даваш го на адрес, наречен spender (харчещ). Разрешеното количество се нарича allowance (лимит).
Да кажем, че искаш да размениш 50 USDC.
- Одобряването на 50 USDC позволява на харчещия да вземе до тази сума.
- Одобряването на неограничено USDC му позволява да вземе наличното ти USDC салдо, включително USDC, които получиш по-късно, докато разрешението е активно.
Това одобрение се отнася за посочения токен в тази мрежа. Само по себе си не дава достъп до всичко в портфейла ти.
Стандартното одобрение на токен обикновено няма срок. Остава, докато не го промениш или оттеглиш, или докато лимитът не бъде изхарчен. Затварянето на сайта или прекъсването на връзката с портфейла не го маха. Revoke.cash обяснява разликата между прекъсване на връзката и оттегляне (на английски).
02Различните искания дават различни разрешения
Формулировките в портфейлите се различават. Това са основните искания, които да разпознаваш:
| Искане | Какво може да разреши |
|---|---|
| Approve или лимит на харчене | Харчещият може да мести до посочена сума от един токен. |
| Set approval for all | Оператор може да прехвърля всички твои NFT от посочената колекция или договор, включително такива, които придобиеш по-късно, докато одобрението е активно. |
| Permit | Подпис, който може да бъде подаден по-късно, за да създаде лимит за токен. |
| Permit2 | Подпис, който може да разреши лимит с ограничен срок или еднократен превод, в зависимост от искането. |
“Approval for all” е по-широко от одобрението на един NFT, но все пак е ограничено до съответния NFT договор. ERC-721 определя тези разрешения (на английски).
Подпис може да разреши харчене без такса за газ
Стандартното одобрение обикновено изисква транзакция в блокчейна. Permit започва с подпис извън блокчейна: подписването само по себе си не създава транзакция и не таксува газ.
Някой друг може да подаде този подпис по-късно и да плати таксата за транзакцията.
При стандартен ERC-2612 permit deadline е последният момент, в който подписът може да бъде подаден. Това не е срок на годност на лимита, създаден при подаването. ERC-2612 описва как работи това (на английски).
Permit2 работи различно. Изисква съществуващо одобрение на токена към договора Permit2 и после поддържа или разрешения за харчене с ограничен срок, или еднократни подписани преводи. Документацията на Uniswap за Permit2 обяснява двата пътя (на английски).
Не е нужно да помниш стандартите. Запомни това:
Липсата на такса за газ не означава липса на финансови последици.
Не всеки подпис дава достъп за харчене. Съобщение за вход може да има друга цел. Чети какво разрешава искането, вместо да съдиш по бутона “Sign”.
03Как измамниците използват тези разрешения
Фалшивият сайт не винаги те кара да изпратиш крипто. Може да те помоли да “провериш портфейла си”, “да получиш награда” или “да продължиш”.
Зад този бутон има искане, което дава на нападател достъп за харчене.
После сайтът може да покаже грешка. Затваряш го с мисълта, че нищо не се е случило. Но нападателят може вече да има използваемо одобрение или подпис.
Преводът може да последва веднага или по-късно. Не получаваш второ искане да го одобриш.
Не е нужно фразата ти за възстановяване да бъде открадната, за да се случи това. Дори хардуерен портфейл не може да те защити от вредно разрешение, което сам си дал. Revoke.cash описва това ограничение (на английски).
04Пет проверки, преди да одобриш или подпишеш
1. Съпостави искането с действието, което искаш
Размяна разумно може да изисква достъп до токена, който продаваш.
Обикновен вход или обикновено получаване на airdrop не би трябвало да изисква неограничен достъп до съществуващите ти токени. Ако сайтът казва “Verify”, а портфейлът ти “Approve spending”, спри и разбери защо.
2. Провери кой получава разрешението
Харчещият е адресът, който получава достъп. Познато лого или име на договор не доказва, че принадлежи на приложението.
Използвай официалната документация на приложението, за да провериш очаквания договор и мрежа. Някои приложения използват няколко договора, така че да гадаеш по етикета на адреса е ненадеждно.
3. Ограничи сумата
Където портфейлът ти позволява, одобрявай само колкото е нужно за действието.
При размяна на 50 USDC неограниченият лимит излага повече USDC, отколкото е нужно. По-малкият лимит ограничава риска; не прави злонамерен харчещ надежден.
4. Чети подписите със същото внимание като транзакциите
Търси токена, харчещия, сумата, мрежата и всеки срок. Имената на полетата се различават.
Ако портфейлът не може да обясни искането достатъчно ясно, за да го разбереш, откажи го и проучи чрез официалната документация на приложението.
5. Дръж спестяванията отделно от непознати приложения
Използвай отделен портфейл с малко салдо, за да пробваш нови услуги. Не свързвай портфейла с дългосрочните си спестявания.
Така ограничаваш какво може да достигне едно вредно одобрение.
05Ако вече си одобрил нещо
Ако подозираш кражба в ход, действай бързо. Рутинното почистване на одобрения и изложен подпис са различни ситуации.
За съществуващи одобрения:
- Отвори директно Revoke.cash или Token Approval Checker на Etherscan. Избягвай връзки, пратени от непоискани акаунти на „поддръжка“.
- Провери всяка мрежа, която използваш. Можеш да прегледаш публичен адрес, без да подписваш транзакция.
- Оттегли разрешенията, които вече не ти трябват, като започнеш с подозрителните харчещи и излишните неограничени лимити.
- Потвърди, че всяка транзакция за оттегляне е успешна. Плащат се мрежови такси.
Оттеглянето маха разрешението за харчене. Не връща вече прехвърлени активи. Прекъсването на връзката със сайта не е заместител. Въпросите и отговорите на Revoke.cash описват тези ограничения (на английски).
Ако си подписал подозрителен permit
Неизползван подпис може да не се появи в проверка на одобренията.
Оттеглянето на видим лимит може да не обезсили този подпис. Например неизтекъл ERC-2612 permit пак може да създаде лимит, ако неговият nonce—броячът, който пречи на повторна употреба—е още валиден. Виж спецификацията ERC-2612 (на английски).
Помисли за преместване на засегнатите активи в отделен портфейл, който контролираш. Не ги връщай на изложения адрес, докато подписът не бъде обезсилен или вече не може да се използва. Преместването на активи и оттеглянето на разрешения може да е надпревара с нападателя; нито едното не гарантира, че ще действаш пръв.
Ако фразата ти за възстановяване или частният ключ са изложени, създай портфейл с нова фраза за възстановяване. Друг акаунт, изведен от изложената фраза, не е сигурна замяна.
Пази се от непоискани предложения за възстановяване, особено искания за предплащане или за фразата ти за възстановяване.
06Какво SaveSaveSaveSave може да ти помогне да провериш
Проверката на съобщения може да маркира формулировки, които те бутат към подписване на съобщения, одобряване на неограничено харчене или даване на широки разрешения за токени.
Това е предупреждение за текста, който поставяш. Не е преглед на искането в портфейла ти.
Проверката не установява какво разрешава подписът, не изброява съществуващите ти лимити и не гарантира, че харчещият е надежден. Проверка на адрес без докладвани предупреждения не е причина да го одобриш.
Използвай проверка на одобренията, за да прегледаш съществуващите разрешения. Преди да дадеш ново, установи три неща:
Кой може да харчи, до кои активи може да стигне и колко му позволяваш.
Адресът на харчещия и сайтът в илюстрацията са измислени. Това ръководство е обща информация, не финансов съвет.