سلام به همراهان یومیکس! دنیای شگفتانگیز رمزارزها و دیفای (DeFi) پر از امکانات جدیده، اما همونطور که میدونید، امنیت همیشه حرف اول رو میزنه. وقتی با پلتفرمهای مختلف مثل صرافیهای غیرمتمرکز (DEX) یا پروتکلهای وامدهی کار میکنید، لازمه بهشون اجازههایی برای دسترسی به توکنهاتون بدید. اما آیا این اجازهها امن هستن و تا ابد باید فعال بمونن؟ اینجاست که مفهوم کلیدی “Revoke” یا لغو دسترسی وارد میدان میشه؛ یک ابزار حیاتی که هر کاربر کریپتو باید باهاش آشنا باشه.
بخش ۱: مجوز دسترسی (Approval) چیست و چرا به آن نیاز داریم؟
بیایید از پایه شروع کنیم. وقتی شما میخواهید از یک اپلیکیشن غیرمتمرکز (dApp) استفاده کنید، مثلاً توکنهایتان را در یک صرافی غیرمتمرکز مانند یونیسواپ (Uniswap) معامله کنید، یا آنها را در یک پلتفرم وامدهی مثل آوه (Aave) وثیقه بگذارید، آن dApp نمیتواند سرخود به کیف پول شما دسترسی پیدا کند و توکنها را جابجا کند (و خدا را شکر که اینطور است!).
برای اینکه این تعامل ممکن شود، شما باید بهطور صریح به قرارداد هوشمند (Smart Contract) آن dApp اجازه دهید تا از طرف شما با توکنهای مشخصی کار کند. این فرآیند معمولاً از طریق یک تابع استاندارد در قراردادهای توکن (مثل استاندارد معروف ERC-20 برای اتریوم و شبکههای سازگار) به نام approve()
انجام میشود.
مثال ساده:
فرض کنید میخواهید ۱۰۰ واحد از توکن فرضی YMX (توکن یومیکس!) را در یک استخر نقدینگی قرار دهید تا سود کسب کنید. مراحل معمولاً به این صورت است:
- شما به dApp مربوطه متصل میشوید.
- مقدار ۱۰۰ YMX را برای سپردهگذاری انتخاب میکنید.
- dApp از شما میخواهد که ابتدا «مجوز (Approve)» دسترسی به توکن YMX را صادر کنید. این یک تراکنش جداگانه روی بلاکچین است که شما باید آن را با کیف پول خود امضا و تأیید کنید.
- در این مرحله، شما به قرارداد هوشمند dApp اجازه میدهید تا *حداکثر* مقدار مشخصی از توکن YMX شما را مدیریت کند.
- پس از تأیید شدن تراکنش Approve، حالا میتوانید تراکنش دوم، یعنی «سپردهگذاری (Deposit)» یا «Stake» را انجام دهید تا ۱۰۰ توکن YMX واقعاً به استخر منتقل شود.
چرا دو مرحله؟ چرا فقط یک تراکنش «ارسال» ساده نیست؟
این طراحی دو مرحلهای (Approve سپس TransferFrom) یک لایه امنیتی مهم است. قرارداد هوشمند dApp مستقیماً نمیتواند توکنها را از کیف پول شما «بکشد» (pull). شما ابتدا باید با Approve به آن «اجازه برداشت» (allowance) بدهید، و سپس با یک تابع دیگر (معمولاً transferFrom()
که توسط dApp فراخوانی میشود)، توکنها منتقل میشوند. این یعنی کنترل همیشه دست شماست… یا حداقل در تئوری اینطور است!
بخش ۲: خطر پنهان در مجوزهای نامحدود (Unlimited Approval)
تا اینجا همه چیز خوب به نظر میرسد. اما مشکل اصلی کجاست؟ مشکل در نحوه پیادهسازی و درخواست همین مجوزها توسط بسیاری از dApp ها نهفته است. برای راحتی کاربر (و گاهی برای کاهش هزینه گس فی در آینده)، اکثر dApp ها به جای اینکه فقط برای مقدار مورد نیاز شما (مثلاً همان ۱۰۰ YMX در مثال قبل) مجوز بگیرند، از شما درخواست مجوز نامحدود (Unlimited Approval) میکنند.
یعنی شما با یک بار Approve، به آن قرارداد هوشمند اجازه میدهید تا *هر مقدار* از آن توکن خاص را در *هر زمانی* در آینده از کیف پول شما برداشت کند، بدون نیاز به اجازه مجدد! این شبیه دادن یک چک سفید امضا به dApp است.
چرا این خطرناک است؟
- آسیبپذیری قرارداد هوشمند (Smart Contract Vulnerability): قراردادهای هوشمند کد هستند و کدها میتوانند باگ داشته باشند. اگر یک قرارداد هوشمند که به آن مجوز نامحدود دادهاید، دارای یک آسیبپذیری باشد، هکرها میتوانند از آن باگ سوءاستفاده کرده و تمام توکنهایی که شما به آن قرارداد Approve کردهاید را از کیف پولتان خالی کنند! مهم نیست چقدر آن پلتفرم معتبر به نظر برسد؛ تاریخ کریپتو پر از نمونههای هک شدن پلتفرمهای بزرگ است.
- هک شدن یا کلاهبرداری توسط تیم پروژه (Rug Pull / Malicious Actors): اگر تیم توسعهدهنده یک پروژه نیت بدی داشته باشد یا بعدها پروژه هک شود (مثلاً کلیدهای ادمین قرارداد به سرقت برود)، آنها میتوانند از طریق همین مجوزهای نامحدودی که کاربران دادهاند، کیف پول کاربران را هدف قرار دهند.
- خطرات فراموش شده: شما ممکن است با دهها dApp تعامل داشته باشید و بهراحتی فراموش کنید که به کدام قراردادها چه مجوزهایی دادهاید. این مجوزهای فعال و فراموش شده مانند درهای پشتی باز به روی کیف پول شما هستند.
هشدار مهم: حتی اگر شما دیگر از یک dApp استفاده نمیکنید، تا زمانی که مجوز دسترسی (Approval) آن را لغو (Revoke) نکرده باشید، آن قرارداد هوشمند (در صورت آسیبپذیر بودن یا سوء نیت) همچنان میتواند به توکنهای شما دسترسی داشته باشد!
بخش ۳: معرفی قهرمان: Revoke چیست و چگونه کار میکند؟
خب، حالا که متوجه خطرات شدیم، راه حل چیست؟ راه حل، استفاده از مفهوم Revoke است. Revoke در لغت به معنای «لغو کردن»، «باطل کردن» یا «پس گرفتن» است. در دنیای کریپتو، Revoke کردن یک مجوز به این معنی است که شما اجازهای را که قبلاً به یک قرارداد هوشمند برای دسترسی به توکنهایتان داده بودید، پس میگیرید.
مکانیزم فنی Revoke (به زبان ساده)
از نظر فنی، Revoke کردن معمولاً به معنی انجام یک تراکنش جدید روی بلاکچین است که در آن شما دوباره تابع approve()
را برای همان قرارداد هوشمند و همان توکن فراخوانی میکنید، اما این بار مقدار مجاز (Allowance) را به صفر (0) تغییر میدهید.
وقتی مقدار مجاز صفر شود، آن قرارداد هوشمند دیگر نمیتواند هیچ مقداری از آن توکن را از کیف پول شما برداشت کند (مگر اینکه دوباره به آن مجوز بدهید).
نکته: Revoke کردن یک تراکنش بلاکچینی است و مانند هر تراکنش دیگری، نیازمند پرداخت هزینه کارمزد شبکه (Gas Fee) میباشد. این هزینه بسته به شلوغی شبکه و بلاکچین مورد استفاده (اتریوم، پالیگان، بایننس اسمارت چین و…) متفاوت است.
پس Revoke یک اقدام فعالانه و پیشگیرانه برای محافظت از داراییهای شماست. این کار مانند بستن درهای بازی است که دیگر از آنها استفاده نمیکنید.
بخش ۴: چگونه مجوزهای دسترسی را Revoke کنیم؟ (راهنمای عملی)
خوشبختانه ابزارهای خوبی برای مشاهده و لغو مجوزهای فعال کیف پولتان وجود دارد. این ابزارها بلاکچین را اسکن میکنند و تمام قراردادهایی را که شما به آنها اجازه دسترسی به توکنهایتان را دادهاید، لیست میکنند.
معروفترین و معتبرترین ابزارها در این زمینه عبارتند از:
- Revoke.cash: یکی از محبوبترین و کاربرپسندترین ابزارها که از شبکههای بلاکچینی متعددی پشتیبانی میکند.
- Etherscan (Token Approval Checker): مرورگر بلاکچین اصلی اتریوم، یک بخش اختصاصی برای بررسی و لغو مجوزها دارد. (آدرس:
https://etherscan.io/tokenapprovalchecker
) - BscScan, PolygonScan, ArbiScan و …: مرورگرهای بلاکچین برای سایر شبکهها نیز معمولاً قابلیت مشابهی را ارائه میدهند.
مراحل کلی برای Revoke کردن با استفاده از این ابزارها:
- رفتن به وبسایت ابزار: یکی از ابزارهای معتبر مانند Revoke.cash را باز کنید. (همیشه آدرس وبسایت را دوباره چک کنید تا وارد سایت فیشینگ نشوید!)
- اتصال کیف پول (Connect Wallet): کیف پول خود (مانند MetaMask, Trust Wallet و…) را به وبسایت متصل کنید.
- انتخاب شبکه (Select Network): شبکهای که میخواهید مجوزهای آن را بررسی کنید (مثلاً Ethereum, Polygon, BSC) را انتخاب نمایید.
- مشاهده لیست مجوزها: ابزار شروع به اسکن آدرس شما روی شبکه انتخابی میکند و لیستی از تمام توکنها و قراردادهایی که به آنها مجوز دادهاید را نمایش میدهد. در این لیست معمولاً اطلاعاتی مانند نام توکن، آدرس قرارداد هوشمند (Spender)، و مقدار مجاز (Allowance) نشان داده میشود. به دنبال مجوزهای “Unlimited” یا مقادیر بسیار بالا باشید.
- انتخاب و لغو (Select and Revoke): مجوزی که میخواهید لغو کنید را پیدا کرده و روی دکمه “Revoke” یا “لغو” کلیک کنید.
- تأیید تراکنش در کیف پول: کیف پول شما یک درخواست تراکنش برای تنظیم مقدار مجاز به صفر (Approve to 0) را نشان میدهد. جزئیات تراکنش و هزینه گس (Gas Fee) را بررسی کنید.
- امضا و ارسال تراکنش (Sign and Send): تراکنش را در کیف پول خود تأیید کنید.
- منتظر تأیید بمانید: پس از تأیید تراکنش در بلاکچین، آن مجوز با موفقیت لغو شده است و دیگر در لیست مجوزهای فعال شما نمایش داده نمیشود (یا مقدار آن صفر نشان داده میشود).
چند نکته مهم در زمان Revoke کردن:
- هزینه گس: برای هر Revoke باید هزینه گس پرداخت کنید. سعی کنید در زمانهایی که شبکه خلوتتر و هزینه گس پایینتر است این کار را انجام دهید.
- بررسی دقیق: قبل از Revoke کردن، مطمئن شوید که واقعاً دیگر به آن مجوز نیازی ندارید. مثلاً اگر توکنی را در یک استخر نقدینگی Stake کردهاید و مجوز آن را Revoke کنید، ممکن است برای برداشت (Unstake) آن توکنها نیاز به Approve مجدد داشته باشید.
- امنیت ابزار: فقط از ابزارهای شناخته شده و معتبر استفاده کنید و همیشه آدرس URL را دوبار چک کنید.
بخش ۵: بهترین شیوهها برای مدیریت مجوزهای دسترسی
حالا که با اهمیت و نحوه Revoke کردن آشنا شدید، چگونه میتوانید یک روال امنیتی خوب برای مدیریت این مجوزها داشته باشید؟
- بررسی دورهای: عادت کنید که به طور منظم (مثلاً ماهی یک بار یا هر چند وقت یکبار که با dApp های جدید تعامل میکنید) لیست مجوزهای فعال کیف پول خود را در شبکههای مختلف بررسی کنید.
- لغو پس از استفاده: اگر با یک dApp فقط برای یک کار خاص (مثلاً یک Swap) تعامل داشتهاید و قصد استفاده مجدد در آینده نزدیک را ندارید، بهتر است بلافاصله پس از اتمام کار، مجوز آن را Revoke کنید.
- احتیاط با dApp های جدید و حسابرسی نشده: در تعامل با پلتفرمهای جدید، کمتر شناخته شده یا آنهایی که هنوز حسابرسی امنیتی معتبری (Audit) ندارند، بسیار محتاط باشید. حتیالامکان از دادن مجوز نامحدود به آنها خودداری کنید و در صورت لزوم، پس از استفاده سریعاً Revoke کنید.
- استفاده از کیف پولهای مجزا (Optional): برخی کاربران حرفهای ترجیح میدهند برای تعاملات پرریسکتر یا تست dApp های جدید، از یک کیف پول جداگانه با موجودی کمتر استفاده کنند تا ریسک اصلی داراییهایشان کاهش یابد.
- آگاهی از محدودیت Approve (در صورت امکان): برخی dApp ها و کیف پولها ممکن است به شما اجازه دهند به جای مجوز نامحدود، یک مقدار مشخص (مثلاً فقط همان ۱۰۰ YMX) را Approve کنید. اگر این گزینه در دسترس بود، امنتر است، هرچند ممکن است برای هر تعامل جدید نیاز به Approve مجدد داشته باشید.
جمعبندی دوستانه: Revoke، سپر دفاعی شما در دنیای DeFi
خب دوستان یومیکس، امیدواریم این مقاله به شما کمک کرده باشه تا با یکی از مهمترین ابزارهای امنیتی در کیف پولهای کریپتویی، یعنی Revoke، آشنا بشید. به خاطر داشته باشید:
- دادن مجوز (Approve) به dApp ها برای تعامل ضروری است.
- مجوزهای نامحدود (Unlimited Approvals) میتوانند بسیار خطرناک باشند.
- Revoke کردن به معنی پس گرفتن این مجوزها و افزایش امنیت کیف پول شماست.
- بررسی و لغو منظم مجوزهای غیرضروری یک عادت امنیتی حیاتی است.
امنیت داراییهای دیجیتال شما تا حد زیادی به آگاهی و اقدامات خودتان بستگی دارد. با شناختن و استفاده صحیح از ابزارهایی مانند Revoke، میتوانید با خیال آسودهتری در دنیای هیجانانگیز رمزارزها و DeFi فعالیت کنید.
مراقب خودتان و داراییهایتان باشید!