في أسواق التجارة الإلكترونية التقليدية، مثل Amazon و eBay، تسهل السلطة المركزية المعاملات بين المشترين والبائعين. تتحكم هذه السلطة المركزية في المعاملات وتحافظ على قوائم المنتجات وتدير حل النزاعات. في حين أن هذا النموذج المركزي له مزاياه، إلا أنه يحتوي أيضًا على العديد من الجوانب السلبية، بما في ذلك خطر الرقابة والرسوم المرتفعة والاعتماد على الثقة.
من ناحية أخرى، يستفيد السوق اللامركزي من تقنية بلوكتشين لتمكين المعاملات من نظير إلى نظير بدون وسطاء. إنه يلغي الحاجة إلى الثقة حيث أن المعاملات شفافة ويمكن التحقق منها من قبل جميع المشاركين على blockchain. تتضمن أمثلة الأسواق اللامركزية OpenBazaar وبروتوكول Origin.
تعد Remix IDE (بيئة التطوير المتكاملة) أداة قوية ومفتوحة المصدر مصممة خصيصًا لتطوير عقود إيثريوم الذكية. يتم تشغيله مباشرة في متصفح الويب الخاص بك، لذلك لا تحتاج إلى تثبيت أي شيء على جهاز الكمبيوتر الخاص بك.
يمكنك الوصول إلى بيئة التطوير المتكاملة الخاصة بـ Remix على https://remix.ethereum.org. عندما تفتح Remix في متصفحك، ستجد ثلاث لوحات:
اللوحة اليسرى: هذا هو المكان الذي يمكنك فيه إنشاء ملفات Solidity واستيرادها وإدارتها. يتضمن أيضًا العديد من المكونات الإضافية لتجميع العقود الخاصة بك واختبارها وتصحيحها ونشرها.
اللوحة المركزية: هذا هو محرر التعليمات البرمجية الخاص بك. هنا سوف تقوم بكتابة وتعديل كود Solidity الخاص بك.
اللوحة اليمنى: توفر هذه اللوحة أدوات متنوعة لتجميع العقود الخاصة بك ونشرها على شبكة Ethereum (إما على شبكة Ethereum حقيقية أو محاكاة JavaScript VM) والتفاعل مع العقود المنشورة.
في هذا الجزء، سنكتب عقد Solidity الأول. سيمثل هذا العقد «عنصرًا» أساسيًا في سوقنا.
للبدء، قم بإنشاء ملف جديد في Remix بالنقر فوق الرمز الثاني من أعلى اللوحة اليسرى (أيقونة الملف). سيظهر مربع حوار جديد على اللوحة المركزية. أدخل Item.sol
كاسم الملف وانقر على «OK».
صلابة
//معرف ترخيص SPDX: معهد ماساتشوستس للتكنولوجيا
صلابة البراغما ^0.8.6؛
بند العقد {
//حدد حدثًا سيتم تشغيله عند إنشاء عنصر جديد
العنصر الجديد للحدث (معرف عنصر الوحدة، اسم عنصر السلسلة، سعر عنصر الوحدة)؛
//يحتوي كل عنصر على معرف واسم وسعر
عناصر الهيكل/الهيكل {
string name;
uint price;
}
//مصفوفة لاستيعاب جميع العناصر
ItemStruct [] البنود العامة؛
//وظيفة لإنشاء عنصر جديد
وظيفة createItem (ذاكرة السلسلة _الاسم، uint _price) عامة {
items.push(ItemStruct(_name, _price));
emit NewItem(items.length - 1, _name, _price);
}
}
معرف ترخيص SPDX: هذه طريقة قياسية للتعبير عن ترخيص العقد. يشير سطر //SPDX-license-identifier: MIT
إلى أن عقدنا يستخدم ترخيص MIT المسموح به.
توجيه براغما: صلابة البراغما ^0.8.6؛ يحدد أن العقد مكتوب في إصدار سوليديتي
0.8.6. يعني الرمز ^
أنه سيكون متوافقًا أيضًا مع أي إصدارات أحدث حتى الإصدار 0.9.0، على سبيل المثال لا الحصر.
تعريف العقد: {...}يحدد بند
العقد عقدًا جديدًا يسمى العنصر
. هذا هو المكان الذي نكتب فيه متغيرات الحالة ووظائف العقد.
تعريف الحدث: عنصر جديد للحدث (uint ItemId، string ItemName، uint ItemPrice)؛
يحدد الحدث الذي يمكننا إصداره كلما تم إنشاء عنصر جديد. الأحداث هي طريقة للعقود الذكية لتسجيل النشاط الذي يمكن للأطراف الخارجية الاستماع إليه.
تعريف الهيكل: يحدد الهيكلItemStruct نوع البيانات {...}
الجديد ItemStruct
، والذي يمثل عنصرًا
باسم
وسعر.
متغير الحالة: ItemStruct [] العناصر العامة؛
يعلن عن عناصر
متغير الحالة التي تحتوي على مصفوفة من ItemStruct
s. تقوم الكلمة الرئيسية العامة
تلقائيًا بإنشاء وظيفة getter تسمح لأي شخص بالوصول إلى قائمة العناصر.
تعريف الوظيفة: {...}تحدد الدالة createItem (ذاكرة السلسلة _name، uint _price)
public وظيفة عامة يمكن لأي شخص الاتصال بها لإنشاء عنصر جديد. تأخذ الدالة اسمًا وسعرًا، وتنشئ ItemStruct
جديدًا، وتضيفه إلى مصفوفة العناصر
، وتصدر حدثًا NewItem
.
لتجميع هذا العقد، انتقل إلى اللوحة اليمنى وانقر على الرمز الثالث من الأعلى (شعار Solidity). هنا يمكنك تجميع العقد. انقر فوق الزر «تجميع» وإذا لم تكن هناك أخطاء، فسيتم تجميع العقد بنجاح.
IPFS: نظام الملفات بين الكواكب (IPFS) هو بروتوكول مصمم لإنشاء شبكة ويب دائمة وغير مركزية. إنه مثل سرب BitTorrent واحد، يتبادل الكائنات داخل مستودع Git واحد.
Swarm: Swarm عبارة عن منصة تخزين موزعة وخدمة توزيع محتوى أصلية في حزمة Ethereum web3. يسمح لشبكة من الأقران بتخزين البيانات وتوزيعها.
عندما تقوم بتجميع عقد، يقوم مترجم Solidity بإنشاء ملف JSON يحتوي على واجهة التطبيق الثنائية (ABI) ورمز البايت الخاص به، من بين أجزاء أخرى من المعلومات. وهذا ما يسمى البيانات الوصفية للعقد. يضمن تخزين هذه البيانات الوصفية على شبكة تخزين لامركزية أنها متاحة بشكل دائم، ويمكن أن تكون مفيدة للتحقق من الكود المصدري للعقد.
ومع ذلك، لغرض التعلم الخاص بك وإذا كنت لا تخطط للتحقق من العقد على Etherscan أو أي مستكشف كتل آخر، يمكنك اختيار إما Swarm أو IPFS، أو يمكنك ببساطة تجاهله والانتقال إلى الخطوات التالية من تعلمك. تذكر أن التركيز الأساسي في هذه المرحلة هو فهم كيفية كتابة العقد وتجميعه ونشره.
في أسواق التجارة الإلكترونية التقليدية، مثل Amazon و eBay، تسهل السلطة المركزية المعاملات بين المشترين والبائعين. تتحكم هذه السلطة المركزية في المعاملات وتحافظ على قوائم المنتجات وتدير حل النزاعات. في حين أن هذا النموذج المركزي له مزاياه، إلا أنه يحتوي أيضًا على العديد من الجوانب السلبية، بما في ذلك خطر الرقابة والرسوم المرتفعة والاعتماد على الثقة.
من ناحية أخرى، يستفيد السوق اللامركزي من تقنية بلوكتشين لتمكين المعاملات من نظير إلى نظير بدون وسطاء. إنه يلغي الحاجة إلى الثقة حيث أن المعاملات شفافة ويمكن التحقق منها من قبل جميع المشاركين على blockchain. تتضمن أمثلة الأسواق اللامركزية OpenBazaar وبروتوكول Origin.
تعد Remix IDE (بيئة التطوير المتكاملة) أداة قوية ومفتوحة المصدر مصممة خصيصًا لتطوير عقود إيثريوم الذكية. يتم تشغيله مباشرة في متصفح الويب الخاص بك، لذلك لا تحتاج إلى تثبيت أي شيء على جهاز الكمبيوتر الخاص بك.
يمكنك الوصول إلى بيئة التطوير المتكاملة الخاصة بـ Remix على https://remix.ethereum.org. عندما تفتح Remix في متصفحك، ستجد ثلاث لوحات:
اللوحة اليسرى: هذا هو المكان الذي يمكنك فيه إنشاء ملفات Solidity واستيرادها وإدارتها. يتضمن أيضًا العديد من المكونات الإضافية لتجميع العقود الخاصة بك واختبارها وتصحيحها ونشرها.
اللوحة المركزية: هذا هو محرر التعليمات البرمجية الخاص بك. هنا سوف تقوم بكتابة وتعديل كود Solidity الخاص بك.
اللوحة اليمنى: توفر هذه اللوحة أدوات متنوعة لتجميع العقود الخاصة بك ونشرها على شبكة Ethereum (إما على شبكة Ethereum حقيقية أو محاكاة JavaScript VM) والتفاعل مع العقود المنشورة.
في هذا الجزء، سنكتب عقد Solidity الأول. سيمثل هذا العقد «عنصرًا» أساسيًا في سوقنا.
للبدء، قم بإنشاء ملف جديد في Remix بالنقر فوق الرمز الثاني من أعلى اللوحة اليسرى (أيقونة الملف). سيظهر مربع حوار جديد على اللوحة المركزية. أدخل Item.sol
كاسم الملف وانقر على «OK».
صلابة
//معرف ترخيص SPDX: معهد ماساتشوستس للتكنولوجيا
صلابة البراغما ^0.8.6؛
بند العقد {
//حدد حدثًا سيتم تشغيله عند إنشاء عنصر جديد
العنصر الجديد للحدث (معرف عنصر الوحدة، اسم عنصر السلسلة، سعر عنصر الوحدة)؛
//يحتوي كل عنصر على معرف واسم وسعر
عناصر الهيكل/الهيكل {
string name;
uint price;
}
//مصفوفة لاستيعاب جميع العناصر
ItemStruct [] البنود العامة؛
//وظيفة لإنشاء عنصر جديد
وظيفة createItem (ذاكرة السلسلة _الاسم، uint _price) عامة {
items.push(ItemStruct(_name, _price));
emit NewItem(items.length - 1, _name, _price);
}
}
معرف ترخيص SPDX: هذه طريقة قياسية للتعبير عن ترخيص العقد. يشير سطر //SPDX-license-identifier: MIT
إلى أن عقدنا يستخدم ترخيص MIT المسموح به.
توجيه براغما: صلابة البراغما ^0.8.6؛ يحدد أن العقد مكتوب في إصدار سوليديتي
0.8.6. يعني الرمز ^
أنه سيكون متوافقًا أيضًا مع أي إصدارات أحدث حتى الإصدار 0.9.0، على سبيل المثال لا الحصر.
تعريف العقد: {...}يحدد بند
العقد عقدًا جديدًا يسمى العنصر
. هذا هو المكان الذي نكتب فيه متغيرات الحالة ووظائف العقد.
تعريف الحدث: عنصر جديد للحدث (uint ItemId، string ItemName، uint ItemPrice)؛
يحدد الحدث الذي يمكننا إصداره كلما تم إنشاء عنصر جديد. الأحداث هي طريقة للعقود الذكية لتسجيل النشاط الذي يمكن للأطراف الخارجية الاستماع إليه.
تعريف الهيكل: يحدد الهيكلItemStruct نوع البيانات {...}
الجديد ItemStruct
، والذي يمثل عنصرًا
باسم
وسعر.
متغير الحالة: ItemStruct [] العناصر العامة؛
يعلن عن عناصر
متغير الحالة التي تحتوي على مصفوفة من ItemStruct
s. تقوم الكلمة الرئيسية العامة
تلقائيًا بإنشاء وظيفة getter تسمح لأي شخص بالوصول إلى قائمة العناصر.
تعريف الوظيفة: {...}تحدد الدالة createItem (ذاكرة السلسلة _name، uint _price)
public وظيفة عامة يمكن لأي شخص الاتصال بها لإنشاء عنصر جديد. تأخذ الدالة اسمًا وسعرًا، وتنشئ ItemStruct
جديدًا، وتضيفه إلى مصفوفة العناصر
، وتصدر حدثًا NewItem
.
لتجميع هذا العقد، انتقل إلى اللوحة اليمنى وانقر على الرمز الثالث من الأعلى (شعار Solidity). هنا يمكنك تجميع العقد. انقر فوق الزر «تجميع» وإذا لم تكن هناك أخطاء، فسيتم تجميع العقد بنجاح.
IPFS: نظام الملفات بين الكواكب (IPFS) هو بروتوكول مصمم لإنشاء شبكة ويب دائمة وغير مركزية. إنه مثل سرب BitTorrent واحد، يتبادل الكائنات داخل مستودع Git واحد.
Swarm: Swarm عبارة عن منصة تخزين موزعة وخدمة توزيع محتوى أصلية في حزمة Ethereum web3. يسمح لشبكة من الأقران بتخزين البيانات وتوزيعها.
عندما تقوم بتجميع عقد، يقوم مترجم Solidity بإنشاء ملف JSON يحتوي على واجهة التطبيق الثنائية (ABI) ورمز البايت الخاص به، من بين أجزاء أخرى من المعلومات. وهذا ما يسمى البيانات الوصفية للعقد. يضمن تخزين هذه البيانات الوصفية على شبكة تخزين لامركزية أنها متاحة بشكل دائم، ويمكن أن تكون مفيدة للتحقق من الكود المصدري للعقد.
ومع ذلك، لغرض التعلم الخاص بك وإذا كنت لا تخطط للتحقق من العقد على Etherscan أو أي مستكشف كتل آخر، يمكنك اختيار إما Swarm أو IPFS، أو يمكنك ببساطة تجاهله والانتقال إلى الخطوات التالية من تعلمك. تذكر أن التركيز الأساسي في هذه المرحلة هو فهم كيفية كتابة العقد وتجميعه ونشره.