مدیریت بدهی
قرارداد
ZarJoin
وظیفه مدیریت وام را برعهده دارد. هنگامی که یک کاربر در طرحی شرکت می کند و رمزارزی را وثیقه می کند، سیستم زرگری امکان ایجاد زر را در این قرارداد برای او فراهم می کند. در کل پروتکل زرگری ( و بالطبع هر جای دیگری) هر زر معادل هزارتومان است. امکان ایجاد زر به معنی پرداخت وام به صورت ارز رایج ریال است.
در این قرارداد نیز مشابه با قرارداد مدیریت وثیقه، دو تابع کلیدی
join
و
exit
در آن طراحی شده است. این توابع نامهای مشابهی دارند ولی کارکرد آنها متفاوت است. در این قرارداد این دو تابع به ترتیب برای بازپرداخت وام (از بین بردن توکن های زر گرفته شده) و گرفتن وام (ایجاد زر) می باشد.
مانند سایر قراردادهای پروتکل های زرگری مجوزهای دسترسی و مدیریت دسترسی و اجرای قراردادها نیز در این قرارداد لحاظ شده است.
جزئیات فنی
مقدمه
در این قرارداد نیز از دو رابط کاربری صندوق
Vat
و توکن زر
TokenLike
استفاده می شود.
این قرارداد نیز
دارای 4 تابع عمومی
join
، exit
، cage
و
constructor
آن است. مانند همه قراردادها، سازنده این قرارداد هنگام مقداردهی اولیه قرارداد استفاده میشود و متغیرهای اصلی آن را تنظیم میکند. مشابه با قرارداد وثیقه از
cage
برای مدیریت متوقف کردن قرارداد در حالت های اجباری استفاده می شود و سازنده این قرارداد نیز ضمن مدیریت دسترسی و اجرای قرارداد آبجکت های مناسب صندوق و توکن زر را تشکیل می دهد.
مکانیسمها و مفاهیم کلیدی
متغیرهای کلیدی
متغیر | نوع داده | توضیح |
---|---|---|
vat | Vat | آدرس صندوق وام |
ilk | bytes32 | یک شناسه برای مشخص شدن نوع وثیقه ای که در این صندوق استفاده می شود |
zar | TokenLike | آدرس توکن زر |
one | uint256 | مقدار عددی ثابت 10^27 |
live | uint256 | مقدار عددی 0 یا 1 به عنوان یک پرچم برای کنترل دسترسی ها در قرارداد |
dec | uint256 | رقم اعشار توکن وثیقه |
توابع اصلی و عملکرد
تابع ()join
این تابع هنگام بازپرداخت وام ستفاده می شود و به صورت زیر عمل می کند:
- ورودیها: آدرس کاربر usr, مقدار wad از نوع uint256
- عملکرد: این تابع از نوع
external
است. ابتدا مقدارwad
توکنت زر را در سیستم زرگری به کاربر اختصاص می دهد تا بدهی او پرداخت شود و سپس این مقدار را می سوزاند تا از مالکیت کاربر خارج شود.
تابع ()exit
- ورودیها: آدرس کاربر usr, مقدار wad از نوع uint256
- عملکرد: این تابع نیز از نوع
external
است. ابتدا مجاز اجرای تابع را بررسی می کند و در صورت مجاز نبودن، خطای غیرمجاز بودن عملکرد را صادر می کند. سپس با فراخوانی تابعmove
از قرارداد صندوق، مقدارwad
را از کاربرusr
به این قرارداد منتقل می کند. در این صورت این کاربر مجاز است مقدارwad
را از سیستم زرگری وام دریافت می کند. برای این منظور این مقدار از توکن زر را برای این کاربر ضرب می کند.
ریسکها و خطاهای احتمالی
ریسک و خطاهای احتمالی این قرارداد نیز مشابه با قرارداد مدیریت وثیقه است و باید این نکات را با دقت رعایت کرد.
خطاهای کاربران
❌ دقت داشته باشید کاربران هیچوقت نباید توکنها را به صورت مستقیم به قراردادها انتقال دهند. ارسال مستقیم توکن به این قرارداد منجر به از دست رفتن دارایی می شود و کاربران قادر به بازیابی توکنهای خود نخواهند بود.
✅ سناریوی صحیح: کاربران باید از توابع مناسب مدیریت وثیقه و وام استفاده کنند .
ریسکهای خارجی
❌ حملات فیشینگ با قراردادهای مخرب:
مسئله اصلی که باید به آن دقت شود، حمله فیشینگ اصلاح شده1 است. با پیشرفت سیستم و احتمالاً ایجاد قراردادهای بیشتر در مدیریت وثیقه و وام
یا ایجاد رابطهای کاربری بیشتر، احتمال اینکه کاربر توکنهای خود را از طریق یک قرارداد
نامعتبر که توکنها را به
vat
ارسال نمیکند، بلکه آنها را به یک قرارداد یا کیف پول دیگر ارسال میکند، وجود دارد.
✅ سناریوی صحیح: اصول مراقبت از دارایی خود در مقابل حملات فیشینگ را همیشه رعایت کنید
منابع و پیوستها
1 Well-executed Phishing Attack