الدرس رقم 3

كتابة عقد ذكي أساسي

المتغيرات والوظائف والمعدلات هي مكونات أساسية في عقود الذكاء الصلب. للصلابة نوعان من المتغيرات: المتغيرات الحالية والمتغيرات المحلية.

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

المتغيرات والوظائف والمعدلات

  • المتغيراتفي Solidity، هناك نوعان من المتغيرات - المتغيرات الحالة والمتغيرات المحلية. المتغيرات الحالة مخزنة بشكل دائم على سلسلة الكتل، بينما المتغيرات المحلية مؤقتة وتكون موجودة فقط ضمن نطاق وظيفة.
  • وظائف: الوظائف هي العناصر الأساسية للعقود الذكية. يتم استخدامها لأداء مهام محددة ، مثل إنشاء المعاملات وتنفيذ منطق مخصص. يمكن أن تحتوي الوظائف على معلمات الإدخال وقيم العائد ، مما يسمح بزيادة التخصيص والمرونة.
  • المعدلات: يعد Modifiers فريدًا من نوعه في Solidity ويُستخدم لتعديل سلوك الوظيفة. يمكن أن يساعدوا في تحسين قابلية القراءة والإدارة للشيفرة ويمكن استخدامهم للتحقق من قيم الواردة أو تنفيذ وظيفة معينة شرطيًا.

مثال1: تنفيذ عقد رمز بسيط

دعنا ننشئ عقدا رمزيا بسيطا باستخدام Solidity. سيسمح هذا العقد للمستخدمين بنقل الرموز المميزة بين الحسابات والتحقق من رصيد الرمز المميز لأي حساب.

نوع البرنامج التابعpragma صلادة ^0.8.0; العقد البسيط {    // أعلن متغيرات الحالة    عنوان المالك عمومًا;    رسم(address => uint256) الأرصدة العمومية;    // تهيئة عقد الرمز المميز    constructor(uint256 التوريد الأولي) {        المالك = msg.sender;        الأرصدة[المالك] = التوريد الأولي;    }    // وظيفة لتحويل الرموز المميزة    function transfer(address to, uint256 المبلغ) public {        require(الأرصدة[msg.sender] >= المبلغ, "الرصيد غير كافٍ");        الأرصدة[msg.sender] -= المبلغ;        الأرصدة[to] += المبلغ;    }    // وظيفة لفحص رصيد الرموز المميزة لحساب    function balanceOf(address الحساب) public view returns (uint256) {        return الأرصدة[الحساب];    }}

في هذا العقد، لدينا:

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

مثال2: تنفيذ نظام تصويت بسيط

برنامج TypeScriptpragma الصلبية ^0.8.0;نظام التصويت {    تعيين (bytes32 => uint256) عام الأصوات;    bytes32[] عام قائمة المرشحين;    constructor(bytes32[] الذاكرة candidateNames) {        قائمة المرشحين = candidateNames;    }    function voteForCandidate(bytes32 candidate) public {        تتطلب(validCandidate(candidate), "المرشح غير صالح.");        الأصوات المستلمة[candidate] += 1;    }    function totalVotesFor(bytes32 candidate) public view returns (uint256) {        تتطلب(validCandidate(candidate), "المرشح غير صالح.");        return الأصوات المستلمة[candidate];    }    function validCandidate(bytes32 candidate) public view returns (bool) {        for (uint256 i = 0; i < قائمة المرشحين.length; i++) {            if (قائمة المرشحين[i] == candidate) {                return صحيح;            }        }        return كاذب;    }}

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

يسلط الضوء على
المتغيرات والدوال والمعدلات هي مكونات أساسية في عقود Solidity الذكية.
للصلابة نوعان من المتغيرات: المتغيرات الحالية والمتغيرات المحلية.
تستخدم الوظائف لأداء المهام ويمكن أن تحتوي على معلمات الإدخال وقيم الإرجاع.
يتم استخدام المعدلات لتعديل سلوك الدالة وتحسين قراءة الكود وإدارته.
يسمح عقد SimpleToken للمستخدمين بنقل الرموز والتحقق من أرصدة الرموز.
يوضح عقد SimpleToken استخدام متغيرات الحالة، وظيفة المُنشئ، والوظائف مثل النقل والرصيد.
يتيح عقد نظام التصويت للمستخدمين التصويت للمرشحين وتتبع عدد الأصوات.
يُظهر عقد VotingSystem استخدام التعيينات والمصفوفات والوظائف مثل voteForCandidate و totalVotesFor و validCandidate.

إخلاء المسؤولية
* ينطوي الاستثمار في العملات الرقمية على مخاطر كبيرة. فيرجى المتابعة بحذر. ولا تهدف الدورة التدريبية إلى تقديم المشورة الاستثمارية.
* تم إنشاء الدورة التدريبية من قبل المؤلف الذي انضم إلى مركز التعلّم في Gate. ويُرجى العلم أنّ أي رأي يشاركه المؤلف لا يمثّل مركز التعلّم في Gate.
الكتالوج
الدرس رقم 3

كتابة عقد ذكي أساسي

المتغيرات والوظائف والمعدلات هي مكونات أساسية في عقود الذكاء الصلب. للصلابة نوعان من المتغيرات: المتغيرات الحالية والمتغيرات المحلية.

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

المتغيرات والوظائف والمعدلات

  • المتغيراتفي Solidity، هناك نوعان من المتغيرات - المتغيرات الحالة والمتغيرات المحلية. المتغيرات الحالة مخزنة بشكل دائم على سلسلة الكتل، بينما المتغيرات المحلية مؤقتة وتكون موجودة فقط ضمن نطاق وظيفة.
  • وظائف: الوظائف هي العناصر الأساسية للعقود الذكية. يتم استخدامها لأداء مهام محددة ، مثل إنشاء المعاملات وتنفيذ منطق مخصص. يمكن أن تحتوي الوظائف على معلمات الإدخال وقيم العائد ، مما يسمح بزيادة التخصيص والمرونة.
  • المعدلات: يعد Modifiers فريدًا من نوعه في Solidity ويُستخدم لتعديل سلوك الوظيفة. يمكن أن يساعدوا في تحسين قابلية القراءة والإدارة للشيفرة ويمكن استخدامهم للتحقق من قيم الواردة أو تنفيذ وظيفة معينة شرطيًا.

مثال1: تنفيذ عقد رمز بسيط

دعنا ننشئ عقدا رمزيا بسيطا باستخدام Solidity. سيسمح هذا العقد للمستخدمين بنقل الرموز المميزة بين الحسابات والتحقق من رصيد الرمز المميز لأي حساب.

نوع البرنامج التابعpragma صلادة ^0.8.0; العقد البسيط {    // أعلن متغيرات الحالة    عنوان المالك عمومًا;    رسم(address => uint256) الأرصدة العمومية;    // تهيئة عقد الرمز المميز    constructor(uint256 التوريد الأولي) {        المالك = msg.sender;        الأرصدة[المالك] = التوريد الأولي;    }    // وظيفة لتحويل الرموز المميزة    function transfer(address to, uint256 المبلغ) public {        require(الأرصدة[msg.sender] >= المبلغ, "الرصيد غير كافٍ");        الأرصدة[msg.sender] -= المبلغ;        الأرصدة[to] += المبلغ;    }    // وظيفة لفحص رصيد الرموز المميزة لحساب    function balanceOf(address الحساب) public view returns (uint256) {        return الأرصدة[الحساب];    }}

في هذا العقد، لدينا:

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

مثال2: تنفيذ نظام تصويت بسيط

برنامج TypeScriptpragma الصلبية ^0.8.0;نظام التصويت {    تعيين (bytes32 => uint256) عام الأصوات;    bytes32[] عام قائمة المرشحين;    constructor(bytes32[] الذاكرة candidateNames) {        قائمة المرشحين = candidateNames;    }    function voteForCandidate(bytes32 candidate) public {        تتطلب(validCandidate(candidate), "المرشح غير صالح.");        الأصوات المستلمة[candidate] += 1;    }    function totalVotesFor(bytes32 candidate) public view returns (uint256) {        تتطلب(validCandidate(candidate), "المرشح غير صالح.");        return الأصوات المستلمة[candidate];    }    function validCandidate(bytes32 candidate) public view returns (bool) {        for (uint256 i = 0; i < قائمة المرشحين.length; i++) {            if (قائمة المرشحين[i] == candidate) {                return صحيح;            }        }        return كاذب;    }}

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

يسلط الضوء على
المتغيرات والدوال والمعدلات هي مكونات أساسية في عقود Solidity الذكية.
للصلابة نوعان من المتغيرات: المتغيرات الحالية والمتغيرات المحلية.
تستخدم الوظائف لأداء المهام ويمكن أن تحتوي على معلمات الإدخال وقيم الإرجاع.
يتم استخدام المعدلات لتعديل سلوك الدالة وتحسين قراءة الكود وإدارته.
يسمح عقد SimpleToken للمستخدمين بنقل الرموز والتحقق من أرصدة الرموز.
يوضح عقد SimpleToken استخدام متغيرات الحالة، وظيفة المُنشئ، والوظائف مثل النقل والرصيد.
يتيح عقد نظام التصويت للمستخدمين التصويت للمرشحين وتتبع عدد الأصوات.
يُظهر عقد VotingSystem استخدام التعيينات والمصفوفات والوظائف مثل voteForCandidate و totalVotesFor و validCandidate.

إخلاء المسؤولية
* ينطوي الاستثمار في العملات الرقمية على مخاطر كبيرة. فيرجى المتابعة بحذر. ولا تهدف الدورة التدريبية إلى تقديم المشورة الاستثمارية.
* تم إنشاء الدورة التدريبية من قبل المؤلف الذي انضم إلى مركز التعلّم في Gate. ويُرجى العلم أنّ أي رأي يشاركه المؤلف لا يمثّل مركز التعلّم في Gate.