پرش به مطلب اصلی

قرارداد زر

​​

مقدمه

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

جزییات قرارداد

توابع اصلی

  • Mint: ضرب کردن زر برای یک آدرس مشخص
  • Burn: سوزاندن زر برای یک آدرس مشخص
  • Approve: تایید انتقال
  • Permit: مجوز انتقال با استفاده از پیام امضا شده
  • name: نام توکن سیستم زربان
  • symbol: نماد توکن زر، ZAR
  • version: نسخه
  • decimals: تعداد رقم اعشار که برابر 18 است
  • totalSupply: مجموع عرضه
  • balanceOf: موجودی زر یک آدرس مشخص
  • allowance: تاییدیه
  • nonces: مقدار تصادفی مورد نیاز برای Permit
  • wad: مقدار ریزدانه اعشار توکن بر مبنای نمایش دهدهی

مکانیسم و مفاهیم کلیدی

زر در قرارداد ، zar.sol به عنوان یک توکن ERC20 روی شبکه آربیتروم عمل می کند. توضیحات لازم برای توکن زر در اینجا آورده شده است. اما توصیه می‌شود برای آشنایی با عملکردهای اصلی این نوع از توکن‌ها استاندارد اصلی ERC20 را نیز مطالعه کنید.

تفاوت‌های اساسی آن با سایر ERC20ها

  1. TransferFrom: در قرارداد زر به شکل کمی متفاوت از تابع معمولی transferFrom به شکل استاندارد استفاده می‌شود. در این قرارداد اجازه "تایید نامحدود" نیز داده می‌شود. به این صورت که اگر کاربر آدرسی را برای حداکثر مجاز در مقدار داده uint256 تأیید کند، آن آدرس اجازه این مقدار تأیید نامحدود را خواهد داشت، تا زمانی که خلاف آن دستور داده نشود .
  2. تابع Permit مجوز یک تابع تایید مبتنی بر پیام امضا شده است. این تابع به کاربر اصلی اجازه می‌دهد تا پیامی را امضا کند که می‌تواند توسط طرف دیگر برای ارسال روی شبکه ثبت شود. اینکار می تواند برای جاهایی مفید باشد که در آن نیازی نیست کاربر اصلی اتر پرداخت کند.
    • برای استفاده از این قابلیت، کاربر باید پیامی را شامل مالک، مصرف کننده، نانس، تاریخ انقضا و مبلغ مجاز امضا کند. سپس آن را به Permit ارسال می‌کند. در این صورت این قرارداد مجوز انجام تراکنش کاربر را با توجه به پارامترهای تایید شده را خواهد داشت.

نکات

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

  • نکته دیگر در مورد عملکرد transferFrom وجود دارد. به این صورت که اگر src == msg.sender باشد، این تابع نیازی به approval ندارد و آن را به عنوان یک انتقال عادی از msg.sender به آدرس مقصد در نظر می گیرد.