معيار القبو المرمز ERC-4626
مقدمة
ERC-4626 هو معيار لتحسين وتوحيد المعلمات الفنية للأقبية المدرة للعوائد. يوفر واجهة برمجة تطبيقات (API) قياسية للأقبية المرمزة المدرة للعوائد والتي تمثل حصصًا لرمز مميز أساسي واحد من نوع ERC-20. يحدد ERC-4626 أيضًا امتدادًا اختياريًا للأقبية المرمزة التي تستخدم ERC-20، مما يوفر وظائف أساسية لإيداع وسحب الرموز المميزة وقراءة الأرصدة.
دور ERC-4626 في الأقبية المدرة للعوائد
تساعد أسواق الإقراض، والمجمعات، والرموز المميزة التي تدر فائدة بطبيعتها المستخدمين في العثور على أفضل عائد على رموز الكريبتو المميزة الخاصة بهم من خلال تنفيذ استراتيجيات مختلفة. يتم تنفيذ هذه الاستراتيجيات باختلافات طفيفة، مما قد يكون عرضة للخطأ أو يهدر موارد التطوير.
سيؤدي استخدام ERC-4626 في الأقبية المدرة للعوائد إلى تقليل جهد التكامل وإتاحة الوصول إلى العوائد في تطبيقات مختلفة بجهد متخصص قليل من المطورين من خلال إنشاء أنماط تنفيذ أكثر اتساقًا وقوة.
تم وصف الرمز المميز ERC-4626 بالكامل في EIP-4626 (opens in a new tab).
امتداد القبو غير المتزامن (ERC-7540)
تم تحسين ERC-4626 لعمليات الإيداع والاسترداد الذرية حتى حد معين. إذا تم الوصول إلى الحد، لا يمكن تقديم أي عمليات إيداع أو استرداد جديدة. لا يعمل هذا القيد بشكل جيد مع أي نظام عقد ذكي يحتوي على إجراءات غير متزامنة أو تأخيرات كشرط أساسي للتفاعل مع القبو (على سبيل المثال، بروتوكولات أصول العالم الحقيقي، أو بروتوكولات الإقراض غير المضمونة بالكامل، أو بروتوكولات الإقراض عبر السلاسل، أو رموز التخزين السائل (LST)، أو وحدات أمان التأمين).
يوسع ERC-7540 من فائدة أقبية ERC-4626 لحالات الاستخدام غير المتزامنة. يتم استخدام واجهة القبو الحالية (deposit/withdraw/mint/redeem) بالكامل للمطالبة بالطلبات غير المتزامنة.
تم وصف امتداد ERC-7540 بالكامل في ERC-7540 (opens in a new tab).
امتداد القبو متعدد الأصول (ERC-7575)
إحدى حالات الاستخدام المفقودة التي لا يدعمها ERC-4626 هي الأقبية التي تحتوي على أصول أو نقاط دخول متعددة مثل الرموز المميزة لمزود السيولة (LP). هذه الأقبية بشكل عام غير عملية أو غير متوافقة بسبب متطلبات ERC-4626 بأن يكون هو نفسه ERC-20.
يضيف ERC-7575 دعمًا للأقبية ذات الأصول المتعددة عن طريق فصل تنفيذ الرمز المميز ERC-20 عن تنفيذ ERC-4626.
تم وصف امتداد ERC-7575 بالكامل في ERC-7575 (opens in a new tab).
المتطلبات الأساسية
لفهم هذه الصفحة بشكل أفضل، نوصي بقراءة معايير الرموز المميزة وERC-20 أولاً.
وظائف وميزات ERC-4626:
الطرق
asset
function asset() public view returns (address assetTokenAddress)
تُرجع هذه الدالة عنوان الرمز المميز الأساسي المستخدم للقبو لأغراض المحاسبة، والإيداع، والسحب.
totalAssets
function totalAssets() public view returns (uint256)
تُرجع هذه الدالة إجمالي مبلغ الأصول الأساسية التي يحتفظ بها القبو.
convertToShares
function convertToShares(uint256 assets) public view returns (uint256 shares)
تُرجع هذه الدالة مقدار shares الذي سيتم استبداله بواسطة القبو مقابل مقدار assets المقدم.
convertToAssets
function convertToAssets(uint256 shares) public view returns (uint256 assets)
تُرجع هذه الدالة مقدار assets الذي سيتم استبداله بواسطة القبو مقابل مقدار shares المقدم.
maxDeposit
function maxDeposit(address receiver) public view returns (uint256 maxAssets)
تُرجع هذه الدالة الحد الأقصى لمقدار الأصول الأساسية التي يمكن إيداعها في استدعاء deposit واحد، مع الحصص التي تم سكها لـ receiver.
previewDeposit
function previewDeposit(uint256 assets) public view returns (uint256 shares)
تتيح هذه الدالة للمستخدمين محاكاة تأثيرات إيداعهم في الكتلة الحالية.
deposit
function deposit(uint256 assets, address receiver) public returns (uint256 shares)
تقوم هذه الدالة بإيداع assets من الرموز المميزة الأساسية في القبو وتمنح ملكية shares إلى receiver.
maxMint
function maxMint(address receiver) public view returns (uint256 maxShares)
تُرجع هذه الدالة الحد الأقصى لمقدار الحصص التي يمكن سكها في استدعاء mint واحد، مع الحصص التي تم سكها لـ receiver.
previewMint
function previewMint(uint256 shares) public view returns (uint256 assets)
تتيح هذه الدالة للمستخدمين محاكاة تأثيرات عملية السك الخاصة بهم في الكتلة الحالية.
mint
function mint(uint256 shares, address receiver) public returns (uint256 assets)
تقوم هذه الدالة بسك shares بالضبط من حصص القبو إلى receiver عن طريق إيداع assets من الرموز المميزة الأساسية.
maxWithdraw
function maxWithdraw(address owner) public view returns (uint256 maxAssets)
تُرجع هذه الدالة الحد الأقصى لمقدار الأصول الأساسية التي يمكن سحبها من رصيد owner باستدعاء withdraw واحد.
previewWithdraw
function previewWithdraw(uint256 assets) public view returns (uint256 shares)
تتيح هذه الدالة للمستخدمين محاكاة تأثيرات عملية السحب الخاصة بهم في الكتلة الحالية.
withdraw
function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)
تقوم هذه الدالة بحرق shares من owner وإرسال assets بالضبط من الرموز المميزة من القبو إلى receiver.
maxRedeem
function maxRedeem(address owner) public view returns (uint256 maxShares)
تُرجع هذه الدالة الحد الأقصى لمقدار الحصص التي يمكن استردادها من رصيد owner من خلال استدعاء redeem.
previewRedeem
function previewRedeem(uint256 shares) public view returns (uint256 assets)
تتيح هذه الدالة للمستخدمين محاكاة تأثيرات عملية الاسترداد الخاصة بهم في الكتلة الحالية.
redeem
function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)
تقوم هذه الدالة باسترداد عدد محدد من shares من owner وترسل assets من الرمز المميز الأساسي من القبو إلى receiver.
totalSupply
function totalSupply() public view returns (uint256)
تُرجع إجمالي عدد حصص القبو غير المستردة المتداولة.
balanceOf
function balanceOf(address owner) public view returns (uint256)
تُرجع إجمالي مقدار حصص القبو التي يمتلكها owner حاليًا.
خريطة الواجهة
الأحداث
حدث الإيداع
يجب إصداره عند إيداع الرموز المميزة في القبو عبر طريقتي mint وdeposit.
event Deposit(
address indexed sender,
address indexed owner,
uint256 assets,
uint256 shares
)
حيث sender هو المستخدم الذي استبدل assets بـ shares، ونقل تلك shares إلى owner.
حدث السحب
يجب إصداره عند سحب الحصص من القبو بواسطة مودع في طريقتي redeem أو withdraw.
event Withdraw(
address indexed sender,
address indexed receiver,
address indexed owner,
uint256 assets,
uint256 shares
)
حيث sender هو المستخدم الذي بدأ عملية السحب واستبدل shares، المملوكة لـ owner، بـ assets. وreceiver هو المستخدم الذي تلقى assets المسحوبة.
