پرش به محتوای اصلی
Change page

ERC-4626 استاندارد خزانه توکنیزه شده

آخرین ویرایش: @Bijan_F(opens in a new tab), ۱۹ اردیبهشت ۱۴۰۳

مقدمه

ERC-4626 استانداردی برای بهینه‌سازی و یکپارچه‌سازی متغیر‌های فنی خزانه‌های سودده می‌باشد. این الگو یک API (وب‌سرویس) استاندارد را برای ارتباط با خزانه‌های سودده توکنیزه شده‌ که نشانگر ارزش سهمی یک توکن ERC-20 پایه هستند، فراهم می‌کند. ERC-4626 همچنین یک افزونه‌ی اختیاری را برای خزانه‌های توکنیزه شده‌ای که از توکن‌های ERC-20 استفاده میکنند، ترسیم می‌کند که شامل عملکرد حداقلی برای سپرده‌گذاری، برداشت و نمایش موجودی توکن‌ها است.

نقش استاندارد ERC-4626 در خزانه‌های سودده

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

استاندارد ERC-4626 با ایجاد الگوهای پیاده‌سازی پایدار و نبوغ آمیز، باعث کاهش زحمت یکپارچه‌سازی خزانه‌های سودده خواهد شد و امکان دسترسی به قابلیت کسب سود در اپلیکیشن‌های مختلف را، با صرف کمترین دانش فنی از سوی برنامه نویسان فراهم می‌کند.

توکن ERC-4626 به طور کامل در EIP-4626(opens in a new tab) توضیح داده شده است.

پیش نیاز ها

برای درک بهتر مطالب این صفحه، به شما پیشنهاد می‌کنیم تا ابتدا درباره‌ی استانداردهای توکن و ERC-20 مطالعه بفرمائید.

توابع و ویژگی های ERC-4626:

روشها

asset

1function asset() public view returns (address assetTokenAddress)
کپی

این تابع، آدرس توکن پایه را که در خزانه برای واریز، برداشت و حسابداری مورد استفاده قرار میگیرد، فراخوانی می‌کند.

totalAssets

1function totalAssets() public view returns (uint256)
کپی

این تابع، مجموع مقدار توکن پایه را که در خزانه نگهداری می‌شود نشان می‌دهد.

convertToShares

1function convertToShares(uint256 assets) public view returns (uint256 shares)
کپی

این تابع مقدار سهمی که خزانه در ازای مقدار دارایی معاوضه خواهد کرد را نشان می‌دهد.

convertToAssets

1function convertToAssets(uint256 shares) public view returns (uint256 assets)
کپی

این تابع مقدار سهمی که خزانه در ازای مقدار دارایی (توکن پایه) معاوضه خواهد کرد را نشان می‌دهد.

maxDeposit

1function maxDeposit(address receiver) public view returns (uint256 maxAssets)
کپی

این تابع حداکثر مقدار توکن پایه قابل واریز را که می‌تواند در یک تراکنش deposit توسط receiver اجرا شود، نمایش می‌دهد.

previewDeposit

1function previewDeposit(uint256 assets) public view returns (uint256 shares)
کپی

این تابع به کاربران اجازه می‌دهد تاثیر تراکنش واریز خود را بر بلوک فعلی شبیه‌سازی کنند.

deposit

1function deposit(uint256 assets, address receiver) public returns (uint256 shares)
کپی

این تابع دارایی یا همان توکن پایه را به خزانه واریز می‌کند و حق مالکیت سهام (shares) را به گیرنده (receiver) اعطا می‌کند.

maxMint

1function maxMint(address receiver) public view returns (uint256 maxShares)
کپی

این تابع حداکثر مقدار سهامی که در یک تراکنش mint توسط receiver می‌تواند ضرب شود را نمایش می‌دهد.

previewMint

1function previewMint(uint256 shares) public view returns (uint256 assets)
کپی

این تابع به کاربران اجازه می‌دهد تا تاثیر تراکنش ضرب دارایی خود را بر بلوک فعلی شبیه‌سازی کنند.

ضرب سکه

1function mint(uint256 shares, address receiver) public returns (uint256 assets)
کپی

این تابع با واریز مقدار assets از توکن پایه، دقیقاً به مقدار shares از سهام خزانه را برای آدرس receiver صادر می‌کند.

maxWithdraw

1function maxWithdraw(address owner) public view returns (uint256 maxAssets)
کپی

این تابع حداکثر مقدار توکن پایه که در یک تراکنش برداشت یا withdraw توسط owner می‌تواند برداشت شود را نمایش می‌دهد.

previewWithdraw

1function previewWithdraw(uint256 assets) public view returns (uint256 shares)
کپی

این تابع به کاربران اجازه می‌دهد تا تاثیر تراکنش برداشت دارایی (توکن پایه) خود را بر بلوک فعلی شبیه‌سازی کنند.

عقب نشینی

1function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)
کپی

این تابع مقدار shares یا سهام را از آدرس owner می‌سوزاند و دقیقاً به مقدار assets، توکن پایه را از خزانه به آدرس receiver ارسال می‌کند.

maxRedeem

1function maxRedeem(address owner) public view returns (uint256 maxShares)
کپی

این تابع حداکثر مقدار سهام را که از موجودی owner، از طریق اجرای تابع redeem می‌توان برداشت کرد، نشان می‌دهد.

previewRedeem

1function previewRedeem(uint256 shares) public view returns (uint256 assets)
کپی

این تابع به کاربران اجازه می‌دهد تا تأثیر تراکنش بازخرید سهام (redeem) خود را بر روی بلوک فعلی شبیه سازی نمایند.

redeem

1function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)
کپی

این تابع مقدار مشخصی از shares را از جانب owner بازخرید می‌کند و به مقدار assets، توکن پایه از خزانه به آدرس receiver ارسال می‌کند.

totalSupply

1function totalSupply() public view returns (uint256)
کپی

مقدار مجموع سهم‌های خزانه بازخرید نشده که در گردش هستند را نشان می‌دهد.

balanceOf

1function balanceOf(address owner) public view returns (uint256)
کپی

مقدار مجموع سهم‌های خزانه ای که owner در حال حاضر مالک آن‌ها می‌باشد را نشان می‌دهد.

نقشه رابط برنامه نویسی

نقشه رابط برنامه نویسی ERC-4626

رویدادها

رویداد واریز

باید زمانی که توکن‌ها از طریق توابع mint و deposit به درون خزانه واریز می‌شوند، اجرا شود

1event Deposit(
2 address indexed sender,
3 address indexed owner,
4 uint256 assets,
5 uint256 shares
6)
کپی

sender کاربری می‌باشد که مقدار assets را در ازای مقدار shares مبادله کرده و مقدار shares را به آدرس owner انتقال داده است.

رویداد برداشت

باید زمانی که سهم‌ها توسط یک سپرده گذار با استفاده از توابع redeem یا withdraw برداشت می‌شوند، اجرا شود.

1event Withdraw(
2 address indexed sender,
3 address indexed receiver,
4 address indexed owner,
5 uint256 assets,
6 uint256 shares
7)
کپی

sender کاربری می‌باشد که تراکنش برداشت را اجرا نموده و مقدار shares را که owner مالک آن بوده، در ازای مقدار assets مبادله کرده است. receiver آدرس کاربری می‌‎باشد که مقدار asset را دریافت کرده است.

بیشتر بخوانید

آیا این مقاله مفید بود؟