Урок 4

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

في هذا الدرس الأخير، سنتناول كيفية تفاعل العقود مع بعضها البعض. سنتعلم أيضًا كيفية تنفيذ تسجيل الأحداث لمراقبة الأنشطة على blockchain.

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

المفهوم الأول الذي سنتناوله هو التفاعل التعاقدي. يشير التفاعل التعاقدي إلى كيفية توصيل العقود ومشاركة المعلومات. في Solidity، يمكن للعقود استدعاء وظائف العقود الأخرى، وإنشاء عقود أخرى، وحتى إرسال Ether إلى عقود أو عناوين أخرى.

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

فيما يلي مثال بسيط للتفاعل التعاقدي:

صلابة
صلابة البراغما > = < 0.7.0 0.9.0؛

عقد يسمى العقد {
 الوحدة العامة x؛

 وظيفة setX (الوحدة _x) العامة {
        x = _x;
    }
}

عقد المتصل بالعقد {
 دالة تستدعي SetX (العنوان _ يسمى عنوان العقد، uint _x) عام {
        CalledContract calledContract = CalledContract(_calledContractAddress);
        calledContract.setX(_x);
    }
}

في هذا المثال، يتفاعلCallerContract مع calledContract عن طريق استدعاء دالة setX الخاصة به.

تسجيل الأحداث

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

صلابة
/معرف ترخيص SPDX: GPL-3.0
صلابة البراغما > = < 0.7.0 0.9.0؛

ناخب متعاقد {
 //تعريف الحدث
 حدث VoteCast (مخاطبة الناخب، اقتراح الوحدة)؛

 //بقية العقد...

 التصويت على الوظيفة (اقتراح الوحدة) للجمهور {
        Person storage sender = voters[msg.sender];
        require(!sender.voted, "Already voted.");
        sender.voted = true;
        sender.vote = _proposal;

        proposals[_proposal].voteCount += 1;

        // Emit event
        emit VoteCast(msg.sender, _proposal);
    }

    //بقية العقد...
}

في وظيفة التصويت المحدثة، نقوم بإرسال حدث VoteCast في كل مرة يتم فيها التصويت. يسجل الحدث عنوان الناخب والاقتراح الذي صوت لصالحه.

في هذا الدرس، تعلمنا عن التفاعل التعاقدي وتسجيل الأحداث، وهما مفهومان أساسيان في Solidity. من خلال المعرفة التي اكتسبتها من هذه الدورة، فأنت الآن مجهز لبدء تطوير تطبيقات لامركزية أكثر تعقيدًا على Ethereum.

الاستنتاج

تهانينا! لقد أكملت بنجاح الدورة التدريبية «بناء نظام تصويت لامركزي».

خلال هذه الدورة، تعلمت المفاهيم الأساسية وراء نظام التصويت اللامركزي وكيفية تنفيذه باستخدام Solidity على Remix IDE. بدءًا من فهم ماهية التصويت اللامركزي وسبب أهميته، تعمقنا في ترميز العقود الذكية الخاصة بنا لتسجيل الناخبين، والإدلاء بالأصوات، وفرز الأصوات. لقد تعلمنا أيضًا كيفية التفاعل مع عقودنا ومحاكاة عملية التصويت بأكملها داخل Remix IDE. وأخيرًا، استكشفنا كيفية تفاعل العقود مع بعضها البعض وكيفية تسجيل الأحداث لتتبع الأنشطة على بلوكتشين.

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

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.
Каталог
Урок 4

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

في هذا الدرس الأخير، سنتناول كيفية تفاعل العقود مع بعضها البعض. سنتعلم أيضًا كيفية تنفيذ تسجيل الأحداث لمراقبة الأنشطة على blockchain.

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

المفهوم الأول الذي سنتناوله هو التفاعل التعاقدي. يشير التفاعل التعاقدي إلى كيفية توصيل العقود ومشاركة المعلومات. في Solidity، يمكن للعقود استدعاء وظائف العقود الأخرى، وإنشاء عقود أخرى، وحتى إرسال Ether إلى عقود أو عناوين أخرى.

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

فيما يلي مثال بسيط للتفاعل التعاقدي:

صلابة
صلابة البراغما > = < 0.7.0 0.9.0؛

عقد يسمى العقد {
 الوحدة العامة x؛

 وظيفة setX (الوحدة _x) العامة {
        x = _x;
    }
}

عقد المتصل بالعقد {
 دالة تستدعي SetX (العنوان _ يسمى عنوان العقد، uint _x) عام {
        CalledContract calledContract = CalledContract(_calledContractAddress);
        calledContract.setX(_x);
    }
}

في هذا المثال، يتفاعلCallerContract مع calledContract عن طريق استدعاء دالة setX الخاصة به.

تسجيل الأحداث

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

صلابة
/معرف ترخيص SPDX: GPL-3.0
صلابة البراغما > = < 0.7.0 0.9.0؛

ناخب متعاقد {
 //تعريف الحدث
 حدث VoteCast (مخاطبة الناخب، اقتراح الوحدة)؛

 //بقية العقد...

 التصويت على الوظيفة (اقتراح الوحدة) للجمهور {
        Person storage sender = voters[msg.sender];
        require(!sender.voted, "Already voted.");
        sender.voted = true;
        sender.vote = _proposal;

        proposals[_proposal].voteCount += 1;

        // Emit event
        emit VoteCast(msg.sender, _proposal);
    }

    //بقية العقد...
}

في وظيفة التصويت المحدثة، نقوم بإرسال حدث VoteCast في كل مرة يتم فيها التصويت. يسجل الحدث عنوان الناخب والاقتراح الذي صوت لصالحه.

في هذا الدرس، تعلمنا عن التفاعل التعاقدي وتسجيل الأحداث، وهما مفهومان أساسيان في Solidity. من خلال المعرفة التي اكتسبتها من هذه الدورة، فأنت الآن مجهز لبدء تطوير تطبيقات لامركزية أكثر تعقيدًا على Ethereum.

الاستنتاج

تهانينا! لقد أكملت بنجاح الدورة التدريبية «بناء نظام تصويت لامركزي».

خلال هذه الدورة، تعلمت المفاهيم الأساسية وراء نظام التصويت اللامركزي وكيفية تنفيذه باستخدام Solidity على Remix IDE. بدءًا من فهم ماهية التصويت اللامركزي وسبب أهميته، تعمقنا في ترميز العقود الذكية الخاصة بنا لتسجيل الناخبين، والإدلاء بالأصوات، وفرز الأصوات. لقد تعلمنا أيضًا كيفية التفاعل مع عقودنا ومحاكاة عملية التصويت بأكملها داخل Remix IDE. وأخيرًا، استكشفنا كيفية تفاعل العقود مع بعضها البعض وكيفية تسجيل الأحداث لتتبع الأنشطة على بلوكتشين.

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

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.