پرش به محتوا
web50

مجوزهای کیف پول در دیفای؛ دسترسی‌هایی که بعد از پایان معامله باقی می‌مانند

مجوزهای کیف پول ممکنه مدت‌ها بعد از پایان معامله هم فعال بمونن. یعنی حتی وقتی از یک صرافی غیرمتمرکز خارج شدی و اتصال کیف پولت رو قطع کردی، قراردادی که قبلاً بهش دسترسی دادی، هنوز می‌تونه در محدودهٔ همون مجوز توکن جابه‌جا کنه.

این موضوع برای کسی که از دیفای استفاده می‌کنه مهمه؛ چون بخشی از امنیت دارایی به تصمیم‌هایی برمی‌گرده که موقع زدن دکمه‌هایی مثل Approve یا Sign می‌گیریم. تصمیم‌هایی که معمولاً خیلی سریع از کنارشون رد می‌شیم.

توی این مقاله می‌بینیم این مجوزها چطور کار می‌کنن، کدوم دسترسی‌ها نیاز به بررسی دارن و چطور می‌تونیم مجوزهای قدیمی رو پیدا و لغو کنیم. مثال‌ها مربوط به اتریوم و شبکه‌های سازگار با اون، مثل آربیتروم، بیس و BNB Chain هستن.

مجوزهای کیف پول چی هستن؟

وقتی می‌خوای توی یک برنامهٔ دیفای توکن تبدیل کنی، وام بدی یا وارد استخر نقدینگی بشی، ممکنه برنامه اول ازت بخواد اجازهٔ استفاده از یک توکن رو تأیید کنی. به این دسترسی Token Approval می‌گن.

در مدل معمول توکن‌های ERC-20، این اجازه مشخص می‌کنه کدوم آدرس می‌تونه تا چه مقداری از یک توکن مشخص رو از موجودی تو جابه‌جا کنه. آدرس دریافت‌کنندهٔ مجوز معمولاً یک قرارداد هوشمنده و در ابزارهای بررسی با اسم Spender نمایش داده می‌شه.

سه چیز رو باید از هم تشخیص بدی:

  • توکن: دسترسی برای کدوم دارایی صادر شده؟
  • Spender: کدوم آدرس اجازهٔ استفاده از اون دارایی رو گرفته؟
  • Allowance یا سقف مجوز: تا چه مقداری اجازهٔ برداشت وجود داره؟

مثلاً مجوز استفاده از USDC به یک قرارداد، به‌خودی‌خود اجازهٔ برداشت همهٔ دارایی‌های کیف پولت رو نمی‌ده. دامنهٔ همون مجوز به توکن، آدرس دریافت‌کننده و شبکهٔ مشخص محدود می‌شه.

فرق اتصال کیف پول، تأیید دسترسی و انجام معامله

این سه مرحله ممکنه پشت سر هم اتفاق بیفتن، ولی هرکدوم معنی متفاوتی دارن:

عملیات چه اتفاقی می‌افته؟ نکتهٔ مهم
اتصال کیف پول یا Connect سایت به آدرس انتخاب‌شده دسترسی پیدا می‌کنه و می‌تونه درخواست‌هایی برای کیف پول بفرسته. اتصال معمولی، به‌تنهایی مجوز برداشت توکن نیست.
تأیید دسترسی یا Approve برای یک آدرس، سقف استفاده از توکن مشخص می‌کنی. ممکنه بعد از معامله هم مقداری از این دسترسی باقی بمونه.
انجام معامله عملیاتی مثل تبدیل توکن یا واریز به پروتکل اجرا می‌شه. تمام‌شدن معامله لزوماً مجوز قبلی رو لغو نمی‌کنه.
لغو مجوز یا Revoke دسترسی مشخص‌شده روی شبکه لغو می‌شه. معمولاً به تراکنش و پرداخت کارمزد شبکه نیاز داره.

بعضی برنامه‌ها این مراحل رو ترکیب می‌کنن یا از امضا برای گرفتن مجوز استفاده می‌کنن. برای همین، تعداد پنجره‌هایی که می‌بینی معیار خوبی برای تشخیص نوع دسترسی نیست؛ باید متن درخواست رو بخونی.

چرا قطع اتصال کیف پول، مجوز برداشت رو حذف نمی‌کنه؟

دکمهٔ Disconnect ارتباط سایت با کیف پول رو قطع می‌کنه، اما مجوز توکن قبلاً روی بلاکچین ثبت شده. قطع اتصال، اون اطلاعات رو تغییر نمی‌ده.

بستن مرورگر، پاک‌کردن افزونه یا تغییر رمز ورود کیف پول هم مجوز ثبت‌شده رو لغو نمی‌کنه. ضمن اینکه اطلاعات عمومی آدرس همچنان از طریق بلاکچین قابل مشاهده‌ست.

برای بستن دسترسی برداشت، باید خودِ مجوز مربوط به همون توکن و قرارداد رو لغو کنی. این تفاوت در راهنمای رسمی متامسک دربارهٔ قطع اتصال هم توضیح داده شده.

مجوز نامحدود چطور دارایی رو در معرض ریسک قرار می‌ده؟

بعضی برنامه‌ها موقع تأیید دسترسی، عددی خیلی بزرگ پیشنهاد می‌دن که عملاً مجوز نامحدود حساب می‌شه. هدف معمولاً اینه که برای هر بار استفاده، دوباره تراکنش تأیید مجوز نفرستی و کارمزد جدا ندی.

این راحتی یک هزینه داره: اگر قرارداد مخرب باشه یا آسیب‌پذیری قابل سوءاستفاده‌ای داشته باشه، موجودی همون توکن ممکنه در معرض برداشت قرار بگیره.

فرض کن برای تبدیل ۱۰۰ واحد از یک توکن، مجوز نامحدود دادی. معامله انجام شده و موجودی باقی‌مونده رو هم بعداً به کیف پول دیگه‌ای منتقل کردی. اگر مجوز هنوز فعال باشه و دوباره همون توکن رو روی همون شبکه به این آدرس واریز کنی، دسترسی قدیمی می‌تونه موجودی جدید رو هم دربر بگیره.

صفرشدن موجودی با صفرشدن مجوز فرق داره. موجودی می‌گه چقدر توکن داری؛ مجوز می‌گه چه کسی تا چه مقداری اجازهٔ استفاده از اون رو داره.

اگر کیف پول امکان تعیین سقف رو می‌ده، مقدار موردنیاز عملیات رو بررسی کن. راهنمای تعیین سقف دسترسی در متامسک این تنظیم رو توضیح داده. مجوز محدود، دامنهٔ ریسک رو کمتر می‌کنه، اما معتبر بودن قرارداد همچنان مهمه.

قبل از تأیید مجوزهای کیف پول، چی رو بررسی کنیم؟

به‌جای ردشدن سریع از پنجرهٔ تأیید، این موارد رو چک کن:

  • آدرس سایت: از دامنهٔ رسمی پروژه وارد شدی یا لینکی از تبلیغ، پیام خصوصی و گروه باز کردی؟
  • شبکه: درخواست مربوط به همون شبکه‌ایه که قصد استفاده ازش رو داری؟
  • نام و آدرس توکن: دارایی درخواست‌شده با کاری که می‌خوای انجام بدی مطابقت داره؟
  • آدرس دریافت‌کنندهٔ مجوز: Spender رو با اطلاعات رسمی پروژه مقایسه کن؛ اسم نمایشی به‌تنهایی کافی نیست.
  • مقدار دسترسی: برنامه به چه سقفی نیاز داره و چه سقفی درخواست کرده؟
  • نوع درخواست: داری تراکنش می‌فرستی، مجوز می‌دی یا پیامی رو امضا می‌کنی؟

اگر درخواست با کاری که انتظار داشتی جور نیست، تأییدش نکن و اول دلیلش رو بررسی کن.

آموزش بررسی و لغو مجوزهای کیف پول با Revoke.cash

ابزار Revoke.cash امکان بررسی و لغو مجوزهای توکن رو فراهم می‌کنه. برای دیدن اطلاعات می‌تونی آدرس عمومی کیف پولت رو وارد کنی؛ برای لغو، باید با کیف پول مربوط به همون آدرس تراکنش تأیید کنی.

۱. آدرس و شبکهٔ درست رو انتخاب کن

وارد دامنهٔ دقیق revoke.cash شو، آدرس عمومی رو وارد کن و شبکهٔ موردنظر رو انتخاب کن. مجوزهای یک آدرس روی اتریوم با مجوزهای همون آدرس روی بیس یا آربیتروم جدا هستن.

۲. فهرست دسترسی‌ها رو بررسی کن

برای هر مورد، توکن، آدرس Spender و سقف مجوز رو ببین. قراردادهایی که دیگه ازشون استفاده نمی‌کنی و دسترسی‌های نامحدود رو بررسی کن. اگر به یک تأیید اخیر مشکوکی، مرتب‌سازی از جدیدترین به قدیمی‌ترین می‌تونه کمک کنه.

۳. مجوز موردنظر رو لغو کن

کیف پول درست رو متصل کن و روی Revoke بزن. درخواست کیف پول رو بخون و مطمئن شو توکن، شبکه و آدرس دریافت‌کنندهٔ مجوز درست هستن.

۴. کارمزد و نتیجهٔ تراکنش رو چک کن

لغو معمولی مجوز به کارمزد شبکه نیاز داره. بعد از تأیید، منتظر موفق‌شدن تراکنش بمون و دوباره وضعیت دسترسی رو بررسی کن. درخواست در حالت Pending هنوز نهایی نشده.

مراحل و تصاویر ابزار در راهنمای رسمی لغو مجوزها قابل مشاهده‌ست.

برای این کار هیچ‌وقت عبارت بازیابی یا کلید خصوصی رو داخل سایت وارد نکن. بررسی و لغو مجوز به این اطلاعات نیاز نداره.

چرا موقع لغو دسترسی باز هم کلمهٔ Approve می‌بینیم؟

در مدل معمول ERC-20، دادن مجوز و لغو اون با یک تابع انجام می‌شه. تفاوت اینه که موقع لغو، سقف دسترسی برای همون Spender روی صفر قرار می‌گیره.

پس دیدن کلمهٔ Approve به‌تنهایی به معنی صدور دسترسی جدید نیست؛ مقدار و جزئیات درخواست رو بررسی کن. در مجوزهای کلی NFT هم لغو معمولاً با غیرفعال‌کردن دسترسی انجام می‌شه.

این رفتار در استاندارد ERC-20 و پرسش‌های متداول Revoke.cash توضیح داده شده.

امضاهای Permit؛ بدون کارمزد هم می‌شه مجوز داد

همهٔ دسترسی‌ها از مسیر یک تراکنش معمولی Approve صادر نمی‌شن. بعضی توکن‌ها از سازوکاری به اسم Permit پشتیبانی می‌کنن که با امضای پیام، امکان ثبت مجوز رو فراهم می‌کنه.

در این حالت ممکنه خودت موقع امضا کارمزدی پرداخت نکنی، اما شخص یا برنامهٔ دیگه‌ای بعداً امضا رو به قرارداد ارائه بده. پس بدون کارمزد بودنِ درخواست، نشونهٔ بی‌خطر بودنش نیست.

در استاندارد ERC-2612، مهلت امضا مشخص می‌کنه تا چه زمانی می‌شه از امضا برای ثبت مجوز استفاده کرد؛ این مهلت لزوماً تاریخ انقضای دسترسیِ ثبت‌شده نیست.

یک نکتهٔ مهم دیگه: امضایی که هنوز روی شبکه استفاده نشده، ممکنه در فهرست مجوزهای ثبت‌شده دیده نشه. صفرکردن مجوز فعلی هم لزوماً اون امضای استفاده‌نشده رو باطل نمی‌کنه. اگر امضای مشکوک دادی، خالی‌بودن فهرست مجوزها به‌تنهایی برای نتیجه‌گیری دربارهٔ امنیت کیف پول کافی نیست.

Permit2 چه تفاوتی داره؟

Permit2 سازوکاری توسعه‌داده‌شده توسط یونی‌سواپه که مدیریت مجوزها و انتقال مبتنی بر امضا رو برای توکن‌ها فراهم می‌کنه. در این مدل، ممکنه هم به قرارداد Permit2 دسترسی داده باشی و هم داخل اون، برای یک برنامه مجوز مشخصی صادر شده باشه.

بعضی از این مجوزها تاریخ انقضا دارن، اما باید هر دو لایهٔ دسترسی رو بررسی کنی. جزئیات این تفاوت در راهنمای Permit2 توضیح داده شده.

لغو مجوز چه مشکلاتی رو حل نمی‌کنه؟

لغو دسترسی، انتقالی که قبلاً انجام شده رو برنمی‌گردونه. همچنین ریسک سرمایه‌ای که از قبل داخل یک پروتکل واریز کردی، با بستن مجوز برداشت از کیف پول از بین نمی‌ره.

اگر عبارت بازیابی یا کلید خصوصی افشا شده باشه، موضوع فراتر از یک مجوز توکنه. فرد دیگه می‌تونه مستقیماً از حساب استفاده کنه و Revoke این دسترسی رو قطع نمی‌کنه.

در صورت افشای عبارت بازیابی، به کیف پولی با عبارت بازیابی کاملاً جدید روی دستگاه سالم نیاز داری. اگر هر موجودی تازه فوراً منتقل می‌شه، شارژ مکرر کیف پول برای کارمزد می‌تونه باعث ضرر بیشتر بشه. راهنمای افشای عبارت بازیابی این وضعیت رو جداگانه توضیح داده.

سؤال‌های متداول دربارهٔ مجوزهای کیف پول

مجوزهای توکن خودبه‌خود منقضی می‌شن؟

مجوز معمول ERC-20 تاریخ انقضای پیش‌فرض نداره. تا وقتی مصرف، تغییر یا لغو نشده باشه، ممکنه باقی بمونه. بعضی سازوکارهای دیگه امکان تعیین زمان انقضا دارن.

برای لغو دسترسی باید کارمزد بدیم؟

برای لغو معمول روی شبکه، بله. بررسی فهرست مجوزها تراکنش نمی‌خواد، اما تغییر دسترسی ثبت‌شده معمولاً نیاز به پرداخت کارمزد داره.

لغو مجوز باعث خارج‌شدن از استیکینگ می‌شه؟

معمولاً نه؛ دارایی واریزشده سر جاش می‌مونه. ممکنه برای واریز مجدد به تأیید تازه نیاز داشته باشی. بعضی عملیات وابسته به مجوز، مثل اجرای سفارش فروش NFT، هم ممکنه متوقف بشن.

کیف پول سخت‌افزاری جلوی سوءاستفاده از مجوز رو می‌گیره؟

اگر خودت مجوز مخرب رو تأیید کنی، سخت‌افزاری بودن کیف پول اون دسترسی رو بی‌اثر نمی‌کنه. حفاظت از کلید خصوصی و بررسی مجوزها هر دو ضروری هستن.

یک مجوز NFT می‌تونه شامل کل مجموعه باشه؟

بله. بعضی مجوزها برای یک NFT مشخص هستن، ولی گزینه‌هایی مثل SetApprovalForAll می‌تونن به اپراتور اجازهٔ جابه‌جایی NFTهای تو در قرارداد همون مجموعه رو بدن. دامنهٔ درخواست رو قبل از تأیید بخون.

چک‌لیست کوتاه مدیریت مجوزهای کیف پول

  • قبل از تأیید، توکن، شبکه، Spender و سقف دسترسی رو بررسی کن.
  • تا حد امکان، دسترسی رو متناسب با نیاز عملیات تنظیم کن.
  • قطع اتصال سایت رو جایگزین لغو مجوز حساب نکن.
  • دسترسی‌های قدیمی رو روی هر شبکه‌ای که استفاده می‌کنی مرور کن.
  • بعد از Revoke، موفق‌شدن تراکنش و وضعیت جدید مجوز رو چک کن.
  • امضاهای بدون کارمزد رو با همون دقت تراکنش‌ها بخون.

جمع‌بندی

مدیریت مجوزهای کیف پول بخشی از استفادهٔ روزمره از دیفای محسوب می‌شه. لازم نیست برای بررسی هر دسترسی برنامه‌نویس باشی؛ باید بدونی به چه آدرسی، برای کدوم توکن و تا چه مقداری اجازه دادی.

از شبکه‌ای شروع کن که بیشتر ازش استفاده می‌کنی. مجوزها رو ببین، دسترسی‌های بدون استفاده رو بررسی کن و مواردی که دیگه نیاز نداری لغو کن. همین مرور ساده کمک می‌کنه تصمیم‌های قدیمی، بدون اطلاع تو برای مدت طولانی فعال نمونن.

1 دیدگاه

  1. Hossein 2 هفته پیش

    vaqean mofid bood merci az shoma ❤❤