Урок 4

استكشاف عقد ليرنكوين

في نهاية هذا الدرس، يجب أن تكون قادرًا على: 1. فهم الأجزاء والوظائف الرئيسية لعقد LearnCoin. 2. فهم دور عقود OpenZeppelin والمكتبات في عقد الرمز المميز الخاص بنا.

مقدمة العملة

في الدرس الأخير، قمنا بنشر عقد LearnCoin الخاص بنا على Goerli Testnet. في هذا الدرس، سنستكشف بالتفصيل وظائف عقد LearnCoin ونوضح ما يفعله كل جزء.

هيكل العقد

هذا هو العقد الكامل لـ LearnCoin الخاص بنا

الثعبان
//معرف ترخيص SPDX: لا يوجد
صلابة البراغما ^ 0.8.9؛

استيراد " @openzeppelin /العقود/التوكين/ERC20/erc20.sol؛ "
استيراد " @openzeppelin /العقود/التوكين/ERC20/extensions/ERC20Burnable.sol؛ "
استيراد " @openzeppelin /العقود/التوكين/ERC20/الإضافات/ERC20Snapshot.sol؛ "
استيراد " @openzeppelin /العقود/الوصول/الوصول إلى الكونترول.sol؛ "
استيراد " @openzeppelin /العقود/الأمن/Pausable.sol؛ "
استيراد " @openzeppelin /العقود/التوكين/ERC20/الامتدادات/مشروع ERC20permit.sol؛ "
استيراد " @openzeppelin /العقود/التوكين/ERC20/extensions/ERC20votes.sol؛ "
استيراد " @openzeppelin /العقود/التوكين/ERC20/الإضافات/ERC20flashmint.sol؛ "

عقد ليرنكوين هو ERC20، ERC20 قابل للحرق، لقطة ERC20، التحكم في الوصول، قابل للإيقاف المؤقت، تصريح ERC20، تصويت ERC20، ERC20 Flashmint {
 بايت 32 بايت ثابت عام SNAPSHOT_ROLE = keccak256 (SNAPSHOT_ROLE)؛ " "
 بايت 32 بايت (PAUSER_ROLE) الثابت العام = keccak256 (PAUSER_ROLE)؛ " "

 المُنشئ () ERC20 ("تعلم العملة"، " LC") ERC20Permit (تعلم العملة) " " {
        _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
        _grantRole(SNAPSHOT_ROLE, msg.sender);
        _grantRole(PAUSER_ROLE, msg.sender);
        _mint(msg.sender, 21000000 * 10 ** decimals());
    }

    لقطة الوظيفة () الدور العام فقط (SNAPSHOT_ROLE) {
        _snapshot();
    }

    إيقاف الوظيفة مؤقتًا () الدور العام فقط (PAUSER_ROLE) {
        _pause();
    }

    وظيفة إلغاء الإيقاف المؤقت () الدور العام فقط (PAUSER_ROLE) {
        _unpause();
    }

    الوظيفة _ قبل نقل الرمز (العنوان من، العنوان إلى، مبلغ uint256)
 داخلي
 عندما لا يتم الإيقاف المؤقت
 التجاوز (لقطة ERC20، ERC20)
    {
        super._beforeTokenTransfer(from, to, amount);
    }

    //الوظائف التالية هي تجاوزات تتطلبها Solidity.

    وظيفة _ afterTokenTransfer (العنوان من، العنوان إلى، مبلغ uint256)
 داخلي
 التجاوز (أصوات ERC20، ERC20)
    {
        super._afterTokenTransfer(from, to, amount);
    }

    الدالة _mint (عنوان إلى، مبلغ uint256)
 داخلي
 التجاوز (أصوات ERC20، ERC20)
    {
        super._mint(to, amount);
    }

    وظيفة _burn (حساب العنوان، مبلغ uint256)
 داخلي
 التجاوز (أصوات ERC20، ERC20)
    {
        super._burn(account, amount);
    }
}

العقد الذي قمت بنشره هو عقد رمز ERC20 يسمى LearnCoin. وهو يتضمن العديد من الميزات من مكتبة عقود OpenZeppelin، مثل الرموز القابلة للنسخ واللقطات والتحكم في الوصول والرموز القابلة للإيقاف المؤقت ووظائف التصاريح والتصويت والنعناع السريع.

بيانات استيراد العقد

تقوم بيانات الاستيراد في بداية العقد بسحب التعليمات البرمجية من مكتبة عقود OpenZeppelin:

  • ERC20.sol هو العقد الأساسي لرموز ERC20.
  • يضيف ERC20Burnable.sol القدرة لحاملي الرموز على تدمير الرموز الخاصة بهم.
  • يتيح ERC20Snapshot.sol إنشاء لقطات من أرصدة الرموز المميزة.
  • AccessControl.sol عبارة عن وحدة تعاقدية لإدارة الوصول إلى وظائف معينة.
  • يضيف Pausable.sol القدرة على إيقاف عمليات نقل الرموز وإلغاء إيقافها مؤقتًا.
  • يمكّن ERC20permit.sol حامليه من إنفاق الرموز المميزة للمستخدم عبر التصاريح.
  • يضيف ERC20votes.sol إمكانيات التصويت إلى الرمز المميز.
  • يسمح ERC20Flashmint.sol بالسك السريع للرموز.

إعلان عقد ليرنكوين

يرث عقد LearnCoin من عقود OpenZeppelin المستوردة. هذا يعني أنه سيحتوي على جميع الأساليب والخصائص من تلك العقود.

إعلانات الدور

SNAPSHOT_ROLE و PAUSER_ROLE هي قيم ثابتة (تم إنشاؤها باستخدام دالة التجزئة keccak256) التي تمثل أدوارًا محددة للتحكم في الوصول داخل العقد.

وظيفة المُنشئ

عندما يتم نشر عقد LearnCoin ، يتم استدعاء وظيفة المُنشئ. يقوم بتعيين اسم الرمز ورمزه، ويمنح حساب النشر (msg.sender) أدوار المسؤول واللقطة والإيقاف المؤقت، ويقوم بتوريد أولي من الرموز إلى حساب النشر.

وظائف إضافية

اللقطة والإيقاف المؤقت وإلغاء الإيقاف المؤقت هي وظائف تسمح للحسابات ذات الأدوار المقابلة بتنفيذ إجراءات معينة. تتيح اللقطة إنشاء لقطة وإيقافها مؤقتًا وإلغاء إيقافها مؤقتًا للسماح بإيقاف عمليات نقل الرموز وإعادة تشغيلها.

التخطي

وظائف _beforeTokenTransfer و_AfterTokenTransfer و_mint و _burn هي وظائف داخلية يتم تجاوزها من العقود الأصلية. يقومون بتطبيق المنطق المخصص لعقد LearnCoin.

  • _beforeTokenTransfer: يتم استدعاء هذه الوظيفة قبل أي نقل للرموز. إنه يضمن عدم إيقاف عمليات نقل الرموز مؤقتًا.
  • _AfterTokenTransfer: يتم استدعاء هذه الوظيفة بعد أي نقل للرموز. إنها وظيفة فارغة هنا، ولكن يمكن استخدامها للمنطق المخصص الذي يجب أن يحدث مباشرة بعد عمليات النقل.
  • _mint: تقوم هذه الوظيفة بإنشاء رموز جديدة وتعيينها لحساب معين.
  • _burn: تدمر هذه الوظيفة الرموز المميزة من حساب معين.

الاستنتاج

كانت هذه نظرة عامة سريعة على عقد LearnCoin الخاص بك. بعد نشر العقد، أصبحت الآن جاهزًا للتفاعل معه، وهو ما سنتناوله في الدرس التالي.

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.
Каталог
Урок 4

استكشاف عقد ليرنكوين

في نهاية هذا الدرس، يجب أن تكون قادرًا على: 1. فهم الأجزاء والوظائف الرئيسية لعقد LearnCoin. 2. فهم دور عقود OpenZeppelin والمكتبات في عقد الرمز المميز الخاص بنا.

مقدمة العملة

في الدرس الأخير، قمنا بنشر عقد LearnCoin الخاص بنا على Goerli Testnet. في هذا الدرس، سنستكشف بالتفصيل وظائف عقد LearnCoin ونوضح ما يفعله كل جزء.

هيكل العقد

هذا هو العقد الكامل لـ LearnCoin الخاص بنا

الثعبان
//معرف ترخيص SPDX: لا يوجد
صلابة البراغما ^ 0.8.9؛

استيراد " @openzeppelin /العقود/التوكين/ERC20/erc20.sol؛ "
استيراد " @openzeppelin /العقود/التوكين/ERC20/extensions/ERC20Burnable.sol؛ "
استيراد " @openzeppelin /العقود/التوكين/ERC20/الإضافات/ERC20Snapshot.sol؛ "
استيراد " @openzeppelin /العقود/الوصول/الوصول إلى الكونترول.sol؛ "
استيراد " @openzeppelin /العقود/الأمن/Pausable.sol؛ "
استيراد " @openzeppelin /العقود/التوكين/ERC20/الامتدادات/مشروع ERC20permit.sol؛ "
استيراد " @openzeppelin /العقود/التوكين/ERC20/extensions/ERC20votes.sol؛ "
استيراد " @openzeppelin /العقود/التوكين/ERC20/الإضافات/ERC20flashmint.sol؛ "

عقد ليرنكوين هو ERC20، ERC20 قابل للحرق، لقطة ERC20، التحكم في الوصول، قابل للإيقاف المؤقت، تصريح ERC20، تصويت ERC20، ERC20 Flashmint {
 بايت 32 بايت ثابت عام SNAPSHOT_ROLE = keccak256 (SNAPSHOT_ROLE)؛ " "
 بايت 32 بايت (PAUSER_ROLE) الثابت العام = keccak256 (PAUSER_ROLE)؛ " "

 المُنشئ () ERC20 ("تعلم العملة"، " LC") ERC20Permit (تعلم العملة) " " {
        _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
        _grantRole(SNAPSHOT_ROLE, msg.sender);
        _grantRole(PAUSER_ROLE, msg.sender);
        _mint(msg.sender, 21000000 * 10 ** decimals());
    }

    لقطة الوظيفة () الدور العام فقط (SNAPSHOT_ROLE) {
        _snapshot();
    }

    إيقاف الوظيفة مؤقتًا () الدور العام فقط (PAUSER_ROLE) {
        _pause();
    }

    وظيفة إلغاء الإيقاف المؤقت () الدور العام فقط (PAUSER_ROLE) {
        _unpause();
    }

    الوظيفة _ قبل نقل الرمز (العنوان من، العنوان إلى، مبلغ uint256)
 داخلي
 عندما لا يتم الإيقاف المؤقت
 التجاوز (لقطة ERC20، ERC20)
    {
        super._beforeTokenTransfer(from, to, amount);
    }

    //الوظائف التالية هي تجاوزات تتطلبها Solidity.

    وظيفة _ afterTokenTransfer (العنوان من، العنوان إلى، مبلغ uint256)
 داخلي
 التجاوز (أصوات ERC20، ERC20)
    {
        super._afterTokenTransfer(from, to, amount);
    }

    الدالة _mint (عنوان إلى، مبلغ uint256)
 داخلي
 التجاوز (أصوات ERC20، ERC20)
    {
        super._mint(to, amount);
    }

    وظيفة _burn (حساب العنوان، مبلغ uint256)
 داخلي
 التجاوز (أصوات ERC20، ERC20)
    {
        super._burn(account, amount);
    }
}

العقد الذي قمت بنشره هو عقد رمز ERC20 يسمى LearnCoin. وهو يتضمن العديد من الميزات من مكتبة عقود OpenZeppelin، مثل الرموز القابلة للنسخ واللقطات والتحكم في الوصول والرموز القابلة للإيقاف المؤقت ووظائف التصاريح والتصويت والنعناع السريع.

بيانات استيراد العقد

تقوم بيانات الاستيراد في بداية العقد بسحب التعليمات البرمجية من مكتبة عقود OpenZeppelin:

  • ERC20.sol هو العقد الأساسي لرموز ERC20.
  • يضيف ERC20Burnable.sol القدرة لحاملي الرموز على تدمير الرموز الخاصة بهم.
  • يتيح ERC20Snapshot.sol إنشاء لقطات من أرصدة الرموز المميزة.
  • AccessControl.sol عبارة عن وحدة تعاقدية لإدارة الوصول إلى وظائف معينة.
  • يضيف Pausable.sol القدرة على إيقاف عمليات نقل الرموز وإلغاء إيقافها مؤقتًا.
  • يمكّن ERC20permit.sol حامليه من إنفاق الرموز المميزة للمستخدم عبر التصاريح.
  • يضيف ERC20votes.sol إمكانيات التصويت إلى الرمز المميز.
  • يسمح ERC20Flashmint.sol بالسك السريع للرموز.

إعلان عقد ليرنكوين

يرث عقد LearnCoin من عقود OpenZeppelin المستوردة. هذا يعني أنه سيحتوي على جميع الأساليب والخصائص من تلك العقود.

إعلانات الدور

SNAPSHOT_ROLE و PAUSER_ROLE هي قيم ثابتة (تم إنشاؤها باستخدام دالة التجزئة keccak256) التي تمثل أدوارًا محددة للتحكم في الوصول داخل العقد.

وظيفة المُنشئ

عندما يتم نشر عقد LearnCoin ، يتم استدعاء وظيفة المُنشئ. يقوم بتعيين اسم الرمز ورمزه، ويمنح حساب النشر (msg.sender) أدوار المسؤول واللقطة والإيقاف المؤقت، ويقوم بتوريد أولي من الرموز إلى حساب النشر.

وظائف إضافية

اللقطة والإيقاف المؤقت وإلغاء الإيقاف المؤقت هي وظائف تسمح للحسابات ذات الأدوار المقابلة بتنفيذ إجراءات معينة. تتيح اللقطة إنشاء لقطة وإيقافها مؤقتًا وإلغاء إيقافها مؤقتًا للسماح بإيقاف عمليات نقل الرموز وإعادة تشغيلها.

التخطي

وظائف _beforeTokenTransfer و_AfterTokenTransfer و_mint و _burn هي وظائف داخلية يتم تجاوزها من العقود الأصلية. يقومون بتطبيق المنطق المخصص لعقد LearnCoin.

  • _beforeTokenTransfer: يتم استدعاء هذه الوظيفة قبل أي نقل للرموز. إنه يضمن عدم إيقاف عمليات نقل الرموز مؤقتًا.
  • _AfterTokenTransfer: يتم استدعاء هذه الوظيفة بعد أي نقل للرموز. إنها وظيفة فارغة هنا، ولكن يمكن استخدامها للمنطق المخصص الذي يجب أن يحدث مباشرة بعد عمليات النقل.
  • _mint: تقوم هذه الوظيفة بإنشاء رموز جديدة وتعيينها لحساب معين.
  • _burn: تدمر هذه الوظيفة الرموز المميزة من حساب معين.

الاستنتاج

كانت هذه نظرة عامة سريعة على عقد LearnCoin الخاص بك. بعد نشر العقد، أصبحت الآن جاهزًا للتفاعل معه، وهو ما سنتناوله في الدرس التالي.

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.