الصلابة
//أضف متغيرات الحالة هذه إلى عقدك
رسم الخرائط (العنوان = > uint256) التوازن التركيبي العام؛
uint256 إجمالي الإمدادات الاصطناعية العامة؛
في المقتطف أعلاه:
SyntheticBalance
عبارة عن رسم خرائط يتتبع رصيد الأصول الاصطناعية لكل عنوان.TotalSyntheticSupply
هو متغير يتتبع إجمالي المعروض من الأصول الاصطناعية المتداولة.الصلابة
//قم بتحديث وظيفة Mint SyntheticAsset
الوظيفة: الأصول الاصطناعية (uint256 _amount) العامة {
require(collateral >= _amount, "Insufficient collateral");
syntheticBalance[msg.sender] += _amount;
totalSyntheticSupply += _amount;
collateral -= _amount;
}
في وظيفة مينت سينثيتيك أسيت
:
كشف
الحساب المطلوب مما إذا كانت هناك ضمانات كافية لسك الكمية المطلوبة من الأصول الاصطناعية.الرصيد التركيبي
للمتصل (
msg.sender )
بمقدار _amount.إجمالي
العرض التخليقي
بمقدار _amount.الضمان
بمقدار _amount
حيث يتم استخدامه لدعم الأصول الاصطناعية المسكوكة حديثًا.الصلابة
//قم بتحديث وظيفة استرداد الأصول الاصطناعية
وظيفة استرداد الأصول الاصطناعية (uint256 _amount) عامة {
require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
syntheticBalance[msg.sender] -= _amount;
totalSyntheticSupply -= _amount;
collateral += _amount;
}
في وظيفة استرداد الأصول التركيبية
:
كشف
الحساب المطلوب مما إذا كان لدى المتصل رصيد كافٍ من الأصول الاصطناعية لاستردادها.الرصيد التركيبي
للمتصل بمقدار
_amount.إجمالي
العرض التخليقي بمقدار _amount
.الضمان
بمقدار _amount
حيث يتم تحريره مرة أخرى عند استرداد الأصول الاصطناعية.تيبسكريبت
//معرف ترخيص SPDX: معهد ماساتشوستس للتكنولوجيا
صلابة البراغما ^0.8.0؛
عقد الأصول الاصطناعية {
uint256 سعر الأصول الأساسية العامة؛
uint256 الضمانات العامة؛
عنوان المالك العام؛
رسم الخرائط (العنوان = > uint256) التوازن التركيبي العام؛
uint256 إجمالي الإمدادات الاصطناعية العامة؛
المُنشئ () {
owner = msg.sender;
}
المُعدِّل أونليونر () {
require(msg.sender == owner, "Not the contract owner");
_;
}
سعر تحديث الوظيفة (uint256 _price) للجمهور فقط المالك {
underlyingAssetPrice = _price;
}
وظيفة ضمان الإيداع (uint256 _amount) العامة {
collateral += _amount;
}
وظيفة سحب الضمانات (uint256 _amount) العامة {
require(collateral >= _amount, "Insufficient collateral");
collateral -= _amount;
}
دالة getSyntheticassetPrice () عوائد العرض العام (uint256) {
return underlyingAssetPrice;
}
الوظيفة: الأصول الاصطناعية (uint256 _amount) العامة {
require(collateral >= _amount, "Insufficient collateral");
syntheticBalance[msg.sender] += _amount;
totalSyntheticSupply += _amount;
collateral -= _amount;
}
وظيفة استرداد الأصول الاصطناعية (uint256 _amount) عامة {
require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
syntheticBalance[msg.sender] -= _amount;
totalSyntheticSupply -= _amount;
collateral += _amount;
}
}
لنشر العقود على شبكة اختبار Goerli، ستحتاج إلى Goerli ETH (GoerLieth). على الرغم من أنها لا تحمل أي قيمة حقيقية، إلا أنها ضرورية لدفع رسوم الغاز على شبكة الاختبار.
Metamask: تأكد من تحويل Metamask الخاص بك إلى شبكة اختبار Goerli.
انتقل إلى صنبور Goerli لطلب بعض GoerLieth. ما عليك سوى لصق عنوان Goerli Testnet Ethereum الخاص بك، وستتلقى اختبار ETH قريبًا.
في Remix، انتقل إلى علامة تبويب نشر & تشغيل المعاملات
.
بالنسبة لخيار البيئة
، حدد الموفر المحقن
. يسمح هذا الخيار لـ Remix بالاتصال بأي شبكة تم تعيين Metamask عليها حاليًا، والتي يجب أن تكون Goerli Testnet.
تأكد من تحديد العقد الخاص بك،
Oracle IntegratedContract، في
القائمة المنسدلة للعقد .
بالنسبة إلى القائمة المنسدلة للحساب
، يجب أن ترى عنوان Goerli Testnet الخاص بك على إيثريوم.
الآن مع وجود الوظائف المحدثة، قم بتجميع العقد ونشره باتباع الخطوات من الدرس 3.
مع نشر العقد الممتد:
اتصل بوظائف MintSyntheticAsset
واسترد وظائف SyntheticAsset بمبالغ مختلفة لسك واسترداد الأصول
الاصطناعية على التوالي.
لاحظ التغييرات في SyntheticBalance
وTotalSyntheticSupply
والضمانات
من خلال واجهة Remix IDE.
انخرط في العقد ولاحظ كيف تتطور متغيرات الحالة وحالة العقد الإجمالية مع تفاعلاتك. ستعمل هذه التجربة العملية على ترسيخ مفاهيم وعمليات الأصول الاصطناعية.
بينما نثري عقدنا بالوظائف الأساسية، نقترب أكثر من عقد أصول اصطناعية واقعي. في الدرس التالي، سنركز على اختبار هذا العقد للتأكد من أنه يعمل على النحو المنشود عبر سيناريوهات مختلفة. يستمر الفهم العملي للأصول الاصطناعية في التعمق مع تقدمنا. ترقبوا المزيد من التعلم العملي في الدرس القادم!
الصلابة
//أضف متغيرات الحالة هذه إلى عقدك
رسم الخرائط (العنوان = > uint256) التوازن التركيبي العام؛
uint256 إجمالي الإمدادات الاصطناعية العامة؛
في المقتطف أعلاه:
SyntheticBalance
عبارة عن رسم خرائط يتتبع رصيد الأصول الاصطناعية لكل عنوان.TotalSyntheticSupply
هو متغير يتتبع إجمالي المعروض من الأصول الاصطناعية المتداولة.الصلابة
//قم بتحديث وظيفة Mint SyntheticAsset
الوظيفة: الأصول الاصطناعية (uint256 _amount) العامة {
require(collateral >= _amount, "Insufficient collateral");
syntheticBalance[msg.sender] += _amount;
totalSyntheticSupply += _amount;
collateral -= _amount;
}
في وظيفة مينت سينثيتيك أسيت
:
كشف
الحساب المطلوب مما إذا كانت هناك ضمانات كافية لسك الكمية المطلوبة من الأصول الاصطناعية.الرصيد التركيبي
للمتصل (
msg.sender )
بمقدار _amount.إجمالي
العرض التخليقي
بمقدار _amount.الضمان
بمقدار _amount
حيث يتم استخدامه لدعم الأصول الاصطناعية المسكوكة حديثًا.الصلابة
//قم بتحديث وظيفة استرداد الأصول الاصطناعية
وظيفة استرداد الأصول الاصطناعية (uint256 _amount) عامة {
require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
syntheticBalance[msg.sender] -= _amount;
totalSyntheticSupply -= _amount;
collateral += _amount;
}
في وظيفة استرداد الأصول التركيبية
:
كشف
الحساب المطلوب مما إذا كان لدى المتصل رصيد كافٍ من الأصول الاصطناعية لاستردادها.الرصيد التركيبي
للمتصل بمقدار
_amount.إجمالي
العرض التخليقي بمقدار _amount
.الضمان
بمقدار _amount
حيث يتم تحريره مرة أخرى عند استرداد الأصول الاصطناعية.تيبسكريبت
//معرف ترخيص SPDX: معهد ماساتشوستس للتكنولوجيا
صلابة البراغما ^0.8.0؛
عقد الأصول الاصطناعية {
uint256 سعر الأصول الأساسية العامة؛
uint256 الضمانات العامة؛
عنوان المالك العام؛
رسم الخرائط (العنوان = > uint256) التوازن التركيبي العام؛
uint256 إجمالي الإمدادات الاصطناعية العامة؛
المُنشئ () {
owner = msg.sender;
}
المُعدِّل أونليونر () {
require(msg.sender == owner, "Not the contract owner");
_;
}
سعر تحديث الوظيفة (uint256 _price) للجمهور فقط المالك {
underlyingAssetPrice = _price;
}
وظيفة ضمان الإيداع (uint256 _amount) العامة {
collateral += _amount;
}
وظيفة سحب الضمانات (uint256 _amount) العامة {
require(collateral >= _amount, "Insufficient collateral");
collateral -= _amount;
}
دالة getSyntheticassetPrice () عوائد العرض العام (uint256) {
return underlyingAssetPrice;
}
الوظيفة: الأصول الاصطناعية (uint256 _amount) العامة {
require(collateral >= _amount, "Insufficient collateral");
syntheticBalance[msg.sender] += _amount;
totalSyntheticSupply += _amount;
collateral -= _amount;
}
وظيفة استرداد الأصول الاصطناعية (uint256 _amount) عامة {
require(syntheticBalance[msg.sender] >= _amount, "Insufficient synthetic balance");
syntheticBalance[msg.sender] -= _amount;
totalSyntheticSupply -= _amount;
collateral += _amount;
}
}
لنشر العقود على شبكة اختبار Goerli، ستحتاج إلى Goerli ETH (GoerLieth). على الرغم من أنها لا تحمل أي قيمة حقيقية، إلا أنها ضرورية لدفع رسوم الغاز على شبكة الاختبار.
Metamask: تأكد من تحويل Metamask الخاص بك إلى شبكة اختبار Goerli.
انتقل إلى صنبور Goerli لطلب بعض GoerLieth. ما عليك سوى لصق عنوان Goerli Testnet Ethereum الخاص بك، وستتلقى اختبار ETH قريبًا.
في Remix، انتقل إلى علامة تبويب نشر & تشغيل المعاملات
.
بالنسبة لخيار البيئة
، حدد الموفر المحقن
. يسمح هذا الخيار لـ Remix بالاتصال بأي شبكة تم تعيين Metamask عليها حاليًا، والتي يجب أن تكون Goerli Testnet.
تأكد من تحديد العقد الخاص بك،
Oracle IntegratedContract، في
القائمة المنسدلة للعقد .
بالنسبة إلى القائمة المنسدلة للحساب
، يجب أن ترى عنوان Goerli Testnet الخاص بك على إيثريوم.
الآن مع وجود الوظائف المحدثة، قم بتجميع العقد ونشره باتباع الخطوات من الدرس 3.
مع نشر العقد الممتد:
اتصل بوظائف MintSyntheticAsset
واسترد وظائف SyntheticAsset بمبالغ مختلفة لسك واسترداد الأصول
الاصطناعية على التوالي.
لاحظ التغييرات في SyntheticBalance
وTotalSyntheticSupply
والضمانات
من خلال واجهة Remix IDE.
انخرط في العقد ولاحظ كيف تتطور متغيرات الحالة وحالة العقد الإجمالية مع تفاعلاتك. ستعمل هذه التجربة العملية على ترسيخ مفاهيم وعمليات الأصول الاصطناعية.
بينما نثري عقدنا بالوظائف الأساسية، نقترب أكثر من عقد أصول اصطناعية واقعي. في الدرس التالي، سنركز على اختبار هذا العقد للتأكد من أنه يعمل على النحو المنشود عبر سيناريوهات مختلفة. يستمر الفهم العملي للأصول الاصطناعية في التعمق مع تقدمنا. ترقبوا المزيد من التعلم العملي في الدرس القادم!