قرارداد استخر وامدهی
این صفحه مرجع قرارداد هوشمند در سطح ذخیرهسازی و توابع است؛ مخاطب آن حسابرسی، بازبینی مستقل و کار مستقیم با قراردادهای روی زنجیره است. مسیر یکپارچهسازی سازمانی از راهنمای یکپارچهسازی سازمانی میگذرد و مستقل از این مرجع است.
مقدمه
استخر وامدهی مهمترین قرارداد بخش بازار نقدینگی زربان است. توابع اصلی این قرارداد هوشمند در زیر آورده شدهاند. توابع deposit، borrow، withdraw و repay در این قرارداد صرفاً برای توکنهای با استاندارد ERC20 است و نمیتوان از آنها برای اتر استفاده کرد.
عملکردهای کلیدی
deposit: واریز مقدار مشخصی از یک دارایی، ضرب کردن توکن zToken به اندازه مناسب و انتقال آن به آدرس مشخصwithdraw: برداشت مقداری از دارایی وثیقه؛ به معنی آزاد کردن دارایی وثیقه و سوزاندن بخش معادل آن از zTokenborrow: قرض گرفتن مقداری از دارایی با نرخ مشخص شده و فرستادن آن به کسی که تراکنش را زده استrepay: بازپرداخت بدهی فرد مشخصی با نرخی که در تابع ذکر شده است.-
swapBorrowRateMode: حالت های نرخ وام کسی که این تابع را فراخوانی میکند را بین پایدار و متغیر تغییر میدهد. -
setUserUseReserveAsCollateral: مشخص میکند که یک دارایی از کسی که تابع را فراخوانی میکند بهعنوان وثیقه استفاده شود یا خیر. -
liquidationCall: موقعیتهایی که شاخص سلامت آنها کمتر از یک است را نقد میکند. flashLoan: اجرای عملیات وام لحظهای1
سازوکار و مفاهیم کلیدی
قرارداد استخر وامدهی، توابع اصلی وامدهی را در اختیار میگذارد. در این قرارداد شما میتوانید با استفاده از توابع deposit و withdraw به ترتیب با گذاشتن وثیقه مناسب و با ضرب کردن توکن zToken وام بگیرید و یا با سوزاندن این توکن مقدار وثیقه خود را آزاد کنید.
- هنگام اجرای تابع
deposit، باید مجوز خرج کردن وجوه از طرفmsg.senderبرای حداقل مقدار ذکر شده صادر شود. این مجوز با فراخوانی تابعapproveقبل از فراخوانی این تابع ممکن میشود. - هنگام فراخوانی
borrowباید مقدار وثیقه کافی وجود داشته باشد. میتوان این مقدار را به نمایندگی از طرفmsg.senderو با فراخوانی تابعapproveDelegationنیز انجام داد.
وقتی شاخص سلامت یک موقعیت کمتر از ۱ باشد، مدیران نقدکننده2 بخشی یا تمام مبلغ قرض باقیمانده را از طرف وامگیرنده بازپرداخت میکنند، در حالی که در ازای آن بنا به تصمیم خود مقداری از وثیقه با تخفیف دریافت میکنند (که بهعنوان پاداش انحلال3 نیز شناخته میشود). اگر آنها بخواهند معادل یک توکن وثیقه یا دارایی پایه را مستقیماً دریافت کنند، وقتی انحلال با موفقیت انجام شد، شاخص سلامت موقعیت افزایش می یابد و به بالای ۱ می رساند.
وقتی تابع flashloan فراخوانی میشود در واقع مقدار amounts درخواست شده از دارایی ها را به قرارداد receiverAddress ارسال میکند و اگر مبالغ وام لحظهای و کارمزد آن تا پایان تراکنش برگردانده نشود، پارامترهای زیر را در پاسخ ارسال میکند:
- عدد ۰ برگردانده میشود،
- اگر عدد ۱ برگردانده شود، آدرس
onBehalfOfیک بدهی ثابت متحمل میشود. - اگر عدد ۲ برگردانده شود، آدرس
onBehalfOfبدهی متغیری را متحمل میشود.
رویدادها: همچنین قرارداد هوشمند چندین رویداد را تعریف میکند که قرارداد استخر وام در هنگام انجام اقدامات خاصی منتشر میکند. رویدادهایی مانند «واریز»، «برداشت»، «قرض»، «بازپرداخت»، «وام لحظهای»، «نقد شدن» و غیره، اطلاعات مهمی در مورد تراکنشهای مربوط به استخر وام ارائه میدهند.