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
در حال حاضر مالک آنها میباشد را نشان میدهد.
نقشه رابط برنامه نویسی
رویدادها
رویداد واریز
باید زمانی که توکنها از طریق توابع mint
و deposit
به درون خزانه واریز میشوند، اجرا شود
1event Deposit(2 address indexed sender,3 address indexed owner,4 uint256 assets,5 uint256 shares6)کپی
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 shares7)کپی
sender
کاربری میباشد که تراکنش برداشت را اجرا نموده و مقدار shares
را که owner
مالک آن بوده، در ازای مقدار assets
مبادله کرده است. receiver
آدرس کاربری میباشد که مقدار asset
را دریافت کرده است.