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

قرارداد استخر وام دهی

مقدمه

استخر‌ وام‌دهی مهم‌ترین قرارداد بخش بازار نقدینگی زربان است. توابع اصلی این قرارداد هوشمند در زیر آورده شده‌اند. توابع deposit، borrow، ‍withdraw و repay در این قرارداد صرفا برای توکن‌های با استاندارد ERC20 است و نمی‌توان از آنها برای اتر استفاده کرد.

عملکردهای کلیدی

  • deposit: واریز مقدار مشخصی از یک دارایی، ضرب کردن توکن zToken به اندازه مناسب و انتقال آن به آدرس مشخص
  • withdraw: برداشت مقداری از دارایی وثیقه؛ به معنی آزاد کردن دارایی وثیقه و سوزاندن بخش معادل آن از zToken
  • borrow: قرض گرفتن مقداری از دارایی با نرخ مشخص شده و فرستادن آن به کسی که تراکنش را زده است
  • repay: بازپرداخت بدهی فرد مشخصی با نرخی که در تابع ذکر شده است.
  • swapBorrowRateMode: حالت های نرخ وام کسی که این تابع را فراخوانی می‌کند را بین پایدار و متغیر تغییر می‌دهد.
  • setUserUseReserveAsCollateral: مشخص می‌کند که یک دارایی از کسی که تابع را فراخوانی می‌کند به عنوان وثیقه استفاده شود یا خیر.
  • ‍‍liquidationCall: موقعیت‌هایی که شاخص سلامت آنها کمتر از یک است را نقد می‌کند.
  • flashLoan: اجرای عملیات وام لحظه‌ای1

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

قرارداد استخر وام‌دهی توابع اصلی مهیا کردن وام را فراهم می‌کند. در این قرارداد شما می‌توانید با استفاده از توابع deposit و withdraw به ترتیب با گذاشتن وثیقه مناسب و با ضرب کردن توکن zToken وام بگیرید و یا با سوزاندن این توکن مقدار وثیقه خود را آزاد کنید.

  • هنگام اجرای تابع deposit ، باید مجوز خرج کردن وجوه از طرف msg.sender‍ برای حداقل مقدار ذکر شده صادر شود. این مجوز با فراخوانی تابع approve‍‍ قبل از فراخوانی این تابع ممکن می‌شود.
  • هنگام فراخوانی borrow باید مقدار وثیقه کافی وجود داشته باشد. می‌توان این مقدار را به نمایندگی از طرف msg.sender و با فراخوانی تابع approveDelegation نیز انجام داد.

وقتی شاخص سلامت یک موقعیت کمتر از 1 باشد، مدیران نقدکننده2 بخشی یا تمام مبلغ قرض باقیمانده را از طرف وام گیرنده بازپرداخت می‌کنند، در حالی که در ازای آن بنا به تصمیم خود مقداری از وثیقه با تخفیف دریافت می‌کنند (که به عنوان پاداش انحلال3 نیز شناخته می‌شود). اگر آنها بخواهند معادل یک توکن وثیقه یا دارایی پایه را مستقیماً دریافت کنند، وقتی انحلال با موفقیت انجام شد، شاخص سلامت موقعیت افزایش می یابد و به بالای 1 می رساند.

وقتی تابع flashloan فراخوانی می‌شود در واقع مقدار amounts درخواست شده از دارایی ها را به قرارداد receiverAddress ارسال می کند و اگر مبالغ وام لحظه‌ای و کارمزد آن تا پایان تراکنش برگردانده نشود، پارامترهای زیر را در پاسخ ارسال می کند:

  • عدد ۰ برگردانده می‌شود،

  • اگر عدد 1 برگردانده شود، آدرس onBehalfOf یک بدهی ثابت متحمل می شود.

  • اگر عدد 2 برگردانده شود، آدرس onBehalfOf بدهی متغیری را متحمل می شود.

    رویدادها: همچنین قرارداد هوشمند چندین رویداد را تعریف می کند که قرارداد استخر وام در هنگام انجام اقدامات خاصی منتشر می کند. رویدادهایی مانند «واریز»، «برداشت»، «قرض»، «بازپرداخت»، «وام لحظه‌ای»، «نقد شدن» و غیره، اطلاعات مهمی در مورد تراکنش‌های مربوط به استخر وام ارائه می‌دهند.

1 Flashloan

2 Liquidators

3 liquidation bonus