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

قرارداد توکن سپرده

دامنه این صفحه

این صفحه مرجع قرارداد هوشمند در سطح ذخیره‌سازی و توابع است؛ مخاطب آن حسابرسی، بازبینی مستقل و کار مستقیم با قراردادهای روی زنجیره است. مسیر یکپارچه‌سازی سازمانی از راهنمای یکپارچه‌سازی سازمانی می‌گذرد و مستقل از این مرجع است.

مقدمه

توکن سپرده zToken با هر واریز ضرب و با هر برداشت سوزانده می‌شود. ارزشش با نسبت ۱:۱ برابر ارزش همان دارایی سپرده‌شده می‌ماند و می‌توانید با خیال راحت نگهش دارید، منتقلش کنید یا معامله‌اش کنید. ذخایر zToken همه سود جمع‌شده را مستقیم و با افزودن به موجودی کیف پول، میان دارندگان این توکن پخش می‌کنند.

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

این توکن‌ بر اساس EIP2612 نوشته شده است و در آن تمام توابع کلیدی استاندارد ERC20 شامل balanceOf، transfer transferFrom، approve و totalSupply پیاده سازی شده است. طبق پروپوزال EIP2612 ، علاوه بر این توابع، تابع‌های زیر نیز به این پیاده‌سازی اضافه شده‌اند:

  • permit: به کاربر اجازه می‌دهد تا به یک حساب (یا قرارداد) دیگر اجازه دهد از وجوه خود با استفاده از یک پیام امضا شده استفاده کند. این کار تراکنش‌های بدون کارمزد و تراکنش‌های تأیید/انتقال تکی را فراهم می‌کند.
  • nonces: مقدار نانس معتبر بعدی را برای ارسال در هنگام فراخوانی permit را برمی گرداند.

دیگر توابع کلیدی این قرارداد از این قرارند:

  • UNDERLYING_ASSET_ADDRESS: دارایی وثیقه شده تحت توکن سپرده را نشان می‌دهد.
  • RESERVE_TREASURY_ADDRESS: آدرس مخزن ذخیره توکن سپرده را می‌دهد.
  • POOL: آدرس قرارداد استخر نظیر توکن سپرده را می‌دهد.
  • scaledBalanceOf: مقدار موجودی مقیاس شده را به‌صورت داده uint256 میدهد.
  • getScaledUserBalanceAndSupply: موجودی مقیاس شده کاربر و کل عرضه اصلی را برمی‌گرداند.
  • ‍‍‍‍scaledTotalSupply: کل عرضه مقیاس شده توکن سپرده را به‌عنوان ‍uint256 برمی گرداند.

سازوکار و مفاهیم کلیدی

موجودی مقیاس شده، مانده دارایی وثیقه کاربر (مبلغ سپرده شده) بر شاخص نقدینگی جاری در لحظه است که به‌روز‌رسانی شده است. در واقع این عدد زمانی را نشان می‌دهد که کاربر در مخزن ذخیره سپرده گذاشته است، و می‌توان از آن برای محاسبه موجودی ترکیبی فعلی توکن zToken کاربران استفاده شود. یک مثال برای آن به‌صورت زیر است:

  • کاربر اول ۱۰۰۰ زر با شاخص نقدینگی ۱٫۱ سپرده‌گذاری می‌کند
  • کاربر دوم مبلغ دیگری را به همان استخر واریز می‌کند
  • شاخص نقدینگی را اکنون ۱٫۲ در نظر می‌گیریم.
  • بنابراین برای محاسبه موجودی توکن مرکب فعلی کاربر اول، عملیات معکوس باید به‌صورت زیر انجام شود:

zTokenBalance = scaledBalance * currentLiquidityIndex