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

مدیریت بدهی

قرارداد ZarJoin وظیفه مدیریت وام را برعهده دارد. هنگامی که یک کاربر در طرحی شرکت می کند و رمزارزی را وثیقه می کند، سیستم زرگری امکان ایجاد زر را در این قرارداد برای او فراهم می کند. در کل پروتکل زرگری ( و بالطبع هر جای دیگری) هر زر معادل هزارتومان است. امکان ایجاد زر به معنی پرداخت وام به صورت ارز رایج ریال است.

در این قرارداد نیز مشابه با قرارداد مدیریت وثیقه، دو تابع کلیدی join و exit در آن طراحی شده است. این توابع نامهای مشابهی دارند ولی کارکرد آنها متفاوت است. در این قرارداد این دو تابع به ترتیب برای بازپرداخت وام (از بین بردن توکن های زر گرفته شده) و گرفتن وام (ایجاد زر) می باشد.

مانند سایر قراردادهای پروتکل های زرگری مجوزهای دسترسی و مدیریت دسترسی و اجرای قراردادها نیز در این قرارداد لحاظ شده است.

جزئیات فنی

مقدمه

در این قرارداد نیز از دو رابط کاربری صندوق Vat و توکن زر TokenLike استفاده می شود. این قرارداد نیز دارای 4 تابع عمومی join، exit، cage و constructor آن است. مانند همه قراردادها، سازنده این قرارداد هنگام مقداردهی اولیه قرارداد استفاده می‌شود و متغیرهای اصلی آن را تنظیم می‌کند. مشابه با قرارداد وثیقه از cage برای مدیریت متوقف کردن قرارداد در حالت های اجباری استفاده می شود و سازنده این قرارداد نیز ضمن مدیریت دسترسی و اجرای قرارداد آبجکت های مناسب صندوق و توکن زر را تشکیل می دهد.

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

متغیرهای کلیدی

متغیرنوع دادهتوضیح
vatVatآدرس صندوق وام
ilkbytes32یک شناسه برای مشخص شدن نوع وثیقه ای که در این صندوق استفاده می شود
zarTokenLikeآدرس توکن زر
oneuint256مقدار عددی ثابت 10^27
liveuint256مقدار عددی 0 یا 1 به عنوان یک پرچم برای کنترل دسترسی ها در قرارداد
decuint256رقم اعشار توکن وثیقه

توابع اصلی و عملکرد

تابع ()join

این تابع هنگام بازپرداخت وام ستفاده می شود و به صورت زیر عمل می کند:

  • ورودی‌ها: آدرس کاربر usr, مقدار wad از نوع uint256
  • عملکرد: این تابع از نوع external است. ابتدا مقدار wad توکنت زر را در سیستم زرگری به کاربر اختصاص می دهد تا بدهی او پرداخت شود و سپس این مقدار را می سوزاند تا از مالکیت کاربر خارج شود.
تابع ()exit
  • ورودی‌ها: آدرس کاربر usr, مقدار wad از نوع uint256
  • عملکرد: این تابع نیز از نوع external است. ابتدا مجاز اجرای تابع را بررسی می کند و در صورت مجاز نبودن، خطای غیرمجاز بودن عملکرد را صادر می کند. سپس با فراخوانی تابع move از قرارداد صندوق، مقدار wad را از کاربر usr به این قرارداد منتقل می کند. در این صورت این کاربر مجاز است مقدار wad را از سیستم زرگری وام دریافت می کند. برای این منظور این مقدار از توکن زر را برای این کاربر ضرب می کند.

ریسک‌ها و خطاهای احتمالی

ریسک و خطاهای احتمالی این قرارداد نیز مشابه با قرارداد مدیریت وثیقه است و باید این نکات را با دقت رعایت کرد.

خطاهای کاربران

❌ دقت داشته باشید کاربران هیچ‌وقت نباید توکن‌ها را به صورت مستقیم به قراردادها انتقال دهند. ارسال مستقیم توکن به این قرارداد منجر به از دست رفتن دارایی می شود و کاربران قادر به بازیابی توکن‌های خود نخواهند بود.

سناریوی صحیح: کاربران باید از توابع مناسب مدیریت وثیقه و وام استفاده کنند .

ریسک‌های خارجی

❌ حملات فیشینگ با قراردادهای مخرب: مسئله اصلی که باید به آن دقت شود، حمله فیشینگ اصلاح شده1 است. با پیشرفت سیستم و احتمالاً ایجاد قراردادهای بیشتر در مدیریت وثیقه و وام یا ایجاد رابط‌های کاربری بیشتر، احتمال اینکه کاربر توکن‌های خود را از طریق یک قرارداد نامعتبر که توکن‌ها را به vat ارسال نمی‌کند، بلکه آن‌ها را به یک قرارداد یا کیف پول دیگر ارسال می‌کند، وجود دارد.

سناریوی صحیح: اصول مراقبت از دارایی خود در مقابل حملات فیشینگ را همیشه رعایت کنید

منابع و پیوست‌ها

1 Well-executed Phishing Attack