Leçon 4

تنفيذ عقد الأصول الاصطناعية في Remix IDE

في هذا الدرس، سنقوم بتوسيع عقد Syntheticasset.sol الخاص بنا عن طريق إضافة وظائف لسك الأصول الاصطناعية واستردادها. هذه العمليات ضرورية لتشغيل الأصول الاصطناعية في سيناريو العالم الحقيقي. دعونا نحلل الكود لفهم كيفية تنفيذ هذه الوظائف.

تمديد العقد

الصلابة
//أضف متغيرات الحالة هذه إلى عقدك
رسم الخرائط (العنوان = > 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;
    }
}

التحضير: الحصول على Testnet Ether وإعداد بيئتك

الحصول على تيست نت إيثر

لنشر العقود على شبكة اختبار Goerli، ستحتاج إلى Goerli ETH (GoerLieth). على الرغم من أنها لا تحمل أي قيمة حقيقية، إلا أنها ضرورية لدفع رسوم الغاز على شبكة الاختبار.

  1. Metamask: تأكد من تحويل Metamask الخاص بك إلى شبكة اختبار Goerli.

  2. انتقل إلى صنبور Goerli لطلب بعض GoerLieth. ما عليك سوى لصق عنوان Goerli Testnet Ethereum الخاص بك، وستتلقى اختبار ETH قريبًا.

تكوين ريمكس لنشر شبكة اختبار Goerli

  1. في Remix، انتقل إلى علامة تبويب نشر & تشغيل المعاملات.

  2. بالنسبة لخيار البيئة ، حدد الموفر المحقن. يسمح هذا الخيار لـ Remix بالاتصال بأي شبكة تم تعيين Metamask عليها حاليًا، والتي يجب أن تكون Goerli Testnet.

  3. تأكد من تحديد العقد الخاص بك، Oracle IntegratedContract، في القائمة المنسدلة للعقد .

  4. بالنسبة إلى القائمة المنسدلة للحساب ، يجب أن ترى عنوان Goerli Testnet الخاص بك على إيثريوم.

تجميع ونشر العقد الممتد

الآن مع وجود الوظائف المحدثة، قم بتجميع العقد ونشره باتباع الخطوات من الدرس 3.

التفاعل مع العقد الممتد

مع نشر العقد الممتد:

  1. اتصل بوظائف MintSyntheticAsset واسترد وظائف SyntheticAsset بمبالغ مختلفة لسك واسترداد الأصول الاصطناعية على التوالي.

  2. لاحظ التغييرات في SyntheticBalance وTotalSyntheticSupply والضمانات من خلال واجهة Remix IDE.

مراقبة سلوك العقد

انخرط في العقد ولاحظ كيف تتطور متغيرات الحالة وحالة العقد الإجمالية مع تفاعلاتك. ستعمل هذه التجربة العملية على ترسيخ مفاهيم وعمليات الأصول الاصطناعية.

بينما نثري عقدنا بالوظائف الأساسية، نقترب أكثر من عقد أصول اصطناعية واقعي. في الدرس التالي، سنركز على اختبار هذا العقد للتأكد من أنه يعمل على النحو المنشود عبر سيناريوهات مختلفة. يستمر الفهم العملي للأصول الاصطناعية في التعمق مع تقدمنا. ترقبوا المزيد من التعلم العملي في الدرس القادم!

Clause de non-responsabilité
* Les investissements en cryptomonnaies comportent des risques importants. Veuillez faire preuve de prudence. Le cours n'est pas destiné à fournir des conseils en investissement.
* Ce cours a été créé par l'auteur qui a rejoint Gate Learn. Toute opinion partagée par l'auteur ne représente pas Gate Learn.
Catalogue
Leçon 4

تنفيذ عقد الأصول الاصطناعية في Remix IDE

في هذا الدرس، سنقوم بتوسيع عقد Syntheticasset.sol الخاص بنا عن طريق إضافة وظائف لسك الأصول الاصطناعية واستردادها. هذه العمليات ضرورية لتشغيل الأصول الاصطناعية في سيناريو العالم الحقيقي. دعونا نحلل الكود لفهم كيفية تنفيذ هذه الوظائف.

تمديد العقد

الصلابة
//أضف متغيرات الحالة هذه إلى عقدك
رسم الخرائط (العنوان = > 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;
    }
}

التحضير: الحصول على Testnet Ether وإعداد بيئتك

الحصول على تيست نت إيثر

لنشر العقود على شبكة اختبار Goerli، ستحتاج إلى Goerli ETH (GoerLieth). على الرغم من أنها لا تحمل أي قيمة حقيقية، إلا أنها ضرورية لدفع رسوم الغاز على شبكة الاختبار.

  1. Metamask: تأكد من تحويل Metamask الخاص بك إلى شبكة اختبار Goerli.

  2. انتقل إلى صنبور Goerli لطلب بعض GoerLieth. ما عليك سوى لصق عنوان Goerli Testnet Ethereum الخاص بك، وستتلقى اختبار ETH قريبًا.

تكوين ريمكس لنشر شبكة اختبار Goerli

  1. في Remix، انتقل إلى علامة تبويب نشر & تشغيل المعاملات.

  2. بالنسبة لخيار البيئة ، حدد الموفر المحقن. يسمح هذا الخيار لـ Remix بالاتصال بأي شبكة تم تعيين Metamask عليها حاليًا، والتي يجب أن تكون Goerli Testnet.

  3. تأكد من تحديد العقد الخاص بك، Oracle IntegratedContract، في القائمة المنسدلة للعقد .

  4. بالنسبة إلى القائمة المنسدلة للحساب ، يجب أن ترى عنوان Goerli Testnet الخاص بك على إيثريوم.

تجميع ونشر العقد الممتد

الآن مع وجود الوظائف المحدثة، قم بتجميع العقد ونشره باتباع الخطوات من الدرس 3.

التفاعل مع العقد الممتد

مع نشر العقد الممتد:

  1. اتصل بوظائف MintSyntheticAsset واسترد وظائف SyntheticAsset بمبالغ مختلفة لسك واسترداد الأصول الاصطناعية على التوالي.

  2. لاحظ التغييرات في SyntheticBalance وTotalSyntheticSupply والضمانات من خلال واجهة Remix IDE.

مراقبة سلوك العقد

انخرط في العقد ولاحظ كيف تتطور متغيرات الحالة وحالة العقد الإجمالية مع تفاعلاتك. ستعمل هذه التجربة العملية على ترسيخ مفاهيم وعمليات الأصول الاصطناعية.

بينما نثري عقدنا بالوظائف الأساسية، نقترب أكثر من عقد أصول اصطناعية واقعي. في الدرس التالي، سنركز على اختبار هذا العقد للتأكد من أنه يعمل على النحو المنشود عبر سيناريوهات مختلفة. يستمر الفهم العملي للأصول الاصطناعية في التعمق مع تقدمنا. ترقبوا المزيد من التعلم العملي في الدرس القادم!

Clause de non-responsabilité
* Les investissements en cryptomonnaies comportent des risques importants. Veuillez faire preuve de prudence. Le cours n'est pas destiné à fournir des conseils en investissement.
* Ce cours a été créé par l'auteur qui a rejoint Gate Learn. Toute opinion partagée par l'auteur ne représente pas Gate Learn.