قرارداد پروکسی (Proxy contract)
خلاصه قرارداد پروکسی فراخوانیها را به قرارداد منطق میفرستد تا توسعهدهندگان بتوانند بعداً کد توکن را بدون تغییر آدرس آن عوض کنند.
قرارداد پروکسی یک قرارداد هوشمند است که آدرس و دادههای ذخیرهشدهای را که کاربران با آنها تعامل دارند در خود نگه میدارد، اما هر فراخوانی را به قرارداد جداگانهای میفرستد که منطق اصلی در آن قرار دارد. کاربران همچنان از همان آدرس استفاده میکنند، در حالی که کد پشت آن میتواند با نسخه جدید جایگزین شود. تیمها در اتریوم، BNB Chain و Base از این الگو برای رفع باگهای کدی استفاده میکنند که در غیر این صورت تغییرش ممکن نبود.
از نظر فنی، پروکسی از delegatecall استفاده میکند. این سازوکار کد قرارداد منطق را روی فضای ذخیرهسازی خود پروکسی اجرا میکند؛ بنابراین موجودیها و تنظیمات در پروکسی میمانند، اما قواعد از قرارداد پیادهسازی میآیند. یک آدرس ادمین، که میتواند یک کیف پول تکی، مولتیسیگ یا تایملاک باشد، اجازه دارد پروکسی را به پیادهسازی جدید متصل کند. استانداردهایی مثل پروکسی شفاف و UUPS در محل قرارگیری اختیار ارتقا تفاوت دارند، اما ایده یکسان است.
اهمیت این موضوع در این است که کدی که خواندهاید یا نسخه حسابرسیشدهای که دیدهاید، شاید همان کدی نباشد که فردا اجرا میشود. یک ارتقا میتواند پس از خرید شما تابع مینت، بلکلیست یا مالیات فروش پنهان اضافه کند. سلب مالکیت توکن هم ممکن است گمراهکننده باشد، چون اختیار ارتقا معمولاً دست ادمین جداگانه پروکسی است. بسیاری از پروژههای معتبر از پروکسی استفاده میکنند، پس این الگو بهتنهایی نشانه خطر نیست. مهم این است که چه کسی ارتقا را کنترل میکند و چقدر زودتر از آن باخبر میشوید.
در اکسپلورر بلاکچین بررسی کنید که آیا قرارداد برچسب پروکسی دارد و آدرس پیادهسازی و ادمین را پیدا کنید. بررسی کنید ادمین یک کیف پول معمولی است یا مولتیسیگ، آیا تایملاک اجرای ارتقا را با تأخیر اجباری همراه میکند و آیا حسابرسی نسخه فعلی پیادهسازی را پوشش میدهد یا نسخهای قدیمی را. تاریخچه پیادهسازی را برای تعویضهای اخیر بررسی کنید. در سولانا، معادل آن یک برنامه قابلارتقا با اختیار ارتقا است و لغو این اختیار یعنی کد دیگر قابلتغییر نیست.




