كتاب "إنشاء عقود صلبة ذكية لسلسلة Ethereum Blockchain. دليل عملي"

كتاب "إنشاء عقود صلبة ذكية لسلسلة Ethereum Blockchain. دليل عملي"
منذ أكثر من عام ، كنت أعمل على كتاب "بناء عقود صلبة ذكية لـ Ethereum Blockchain. الدليل العملي "، والآن اكتمل هذا العمل ، والكتاب منشورة ومتاحة باللتر.

آمل أن يساعدك كتابي على البدء بسرعة في بناء جهات اتصال ذكية لـ Solidity وتوزيع DApps لـ Ethereum blockchain. يتكون من 12 درسًا مع مهام عملية. بعد الانتهاء منها ، سيتمكن القارئ من إنشاء عقد Ethereum المحلية الخاصة به ، ونشر العقود الذكية والاتصال بأساليبها ، وتبادل البيانات بين العالم الحقيقي والعقود الذكية باستخدام oracles ، والعمل مع شبكة تصحيح أخطاء اختبار Rinkeby.

الكتاب موجه لكل من يهتم بالتقنيات المتقدمة في مجال البلوكشين ويريد اكتساب المعرفة بسرعة التي تسمح لهم بالقيام بعمل ممتع وواعد.

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

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

من الأفضل ألا تقرأ هذا الكتاب فقط ، بل العمل معه ، واستكمال المهام العملية الموضحة في الدروس. للعمل ، ستحتاج إلى جهاز كمبيوتر محلي أو خادم افتراضي أو خادم سحابي مثبت عليه Debian أو Ubuntu. يمكنك أيضًا استخدام Raspberry Pi لأداء العديد من المهام.

في الدرس الأول سنغطي مبادئ blockchain Ethereum والمصطلحات الأساسية ، وكذلك الحديث عن مكان استخدام blockchain.

الهدف الدرس الثاني - أنشئ عقدة بلوكشين Ethereum خاصة لمزيد من العمل في إطار هذه الدورة على خادم Ubuntu و Debian. سننظر في ميزات تثبيت الأدوات المساعدة الأساسية ، مثل geth ، التي تضمن تشغيل عقدة blockchain الخاصة بنا ، بالإضافة إلى خدمة تخزين البيانات اللامركزية السرب.

الدرس الثالث يعلمك كيفية تجربة Ethereum على كمبيوتر Raspberry Pi الصغير غير المكلف. ستقوم بتثبيت نظام التشغيل Rasberian (OS) على Raspberry Pi ، والأداة المساعدة Geth التي تشغل عقدة blockchain ، وخفي Swarm لمستودع البيانات اللامركزي.

الدرس الرابع مخصص للحسابات ووحدات العملة المشفرة في شبكة Ethereum ، بالإضافة إلى طرق تحويل الأموال من حساب إلى آخر من وحدة تحكم Geth. سوف تتعلم كيفية إنشاء الحسابات ، وبدء معاملات تحويل الأموال ، والحصول على حالة المعاملة والإيصال.

في الدرس الخامس سوف تتعرف على العقود الذكية على شبكة Ethereum ، وتتعرف على تنفيذها بواسطة الجهاز الظاهري Ethereum.

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

الدرس السادس مكرس لإنشاء نصوص JavaScript تعمل على تشغيل Node.js وتنفيذ العمليات باستخدام عقود Solidity الذكية.

ستقوم بتثبيت Node.js على نظام التشغيل Ubuntu و Debian و Rasberian OS ، وكتابة نصوص برمجية لنشر عقد ذكي على شبكة Ethereum المحلية واستدعاء وظائفها.

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

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

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

في الدرس التاسع ستكون على بعد خطوة واحدة من إنشاء عقود ذكية لشبكة Ethereum الرئيسية. سوف تتعلم كيفية نشر العقود باستخدام Truffle على شبكة Geth الخاصة ، وكذلك على شبكة اختبار Rinkeby. يعد تصحيح أخطاء عقد ذكي على شبكة Rinkeby مفيدًا جدًا قبل نشره على الشبكة الرئيسية - كل شيء تقريبًا حقيقي هناك ، ولكن مجانًا.

كجزء من الدرس ، ستنشئ عقدة اختبار Rinkeby testnet ، وتجددها بالأموال ، وتنشر عقدًا ذكيًا.

الدرس 10 مخصصة لمخازن البيانات الموزعة Ethereum Swarm. باستخدام التخزين الموزع ، يمكنك توفير تخزين كميات كبيرة من البيانات على Ethereum blockchain.

في هذا البرنامج التعليمي ، ستقوم بإنشاء مخزن Swarm محلي ، وكتابة الملفات وقراءتها ، وأدلة الملفات. بعد ذلك ، ستتعلم كيفية العمل مع بوابة Swarm العامة ، وكتابة البرامج النصية للوصول إلى Swarm من Node.js ، وكذلك استخدام وحدة Net :: Ethereum :: Swarm Perl.

الدرس 11 الهدف - إتقان العمل مع عقود Solidity الذكية باستخدام لغة برمجة Python الشائعة وإطار Web3.py. ستقوم بتثبيت هذا الإطار ، وكتابة نصوص لتجميع ونشر عقد ذكي ، بالإضافة إلى استدعاء وظائفه. في هذه الحالة ، سيتم استخدام Web3.py بمفرده وبالاقتران مع بيئة التطوير المتكاملة لـ Truffle.

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

الدرس 1. باختصار حول blockchain وشبكة Ethereumالغرض من الدرس: التعرف على مبادئ blockchain Ethereum ، ومجالات تطبيقها والمصطلحات الأساسية.
المهام العملية: غير مدرج في هذا الدرس.

لا يكاد يوجد مطور برامج اليوم لم يسمع أي شيء عن تقنية blockchain (Blockchain) ، أو العملات المشفرة (Cryptocurrency أو Crypto Currency) ، أو Bitcoins (Bitcoin) ، أو عرض العملة الأولي (ICO ، عرض العملة الأولي) ، العقود الذكية (Smart Contract) ، بالإضافة إلى المفاهيم والمصطلحات الأخرى المتعلقة بـ blockchain.

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

يجب أن أقول أن هناك الكثير من التكهنات حول العملات المشفرة وسلسلة الكتل. سنترك جانباً المناقشات حول التغييرات في أسعار العملات المشفرة ، حول إنشاء الأهرامات ، حول تعقيدات تشريعات العملة المشفرة ، إلخ. في البرنامج التعليمي الخاص بنا ، سنركز بشكل أساسي على الجوانب التقنية لاستخدام العقود الذكية في Ethereum blockchain (ethereum ، ether) وتطوير ما يسمى بالتطبيقات اللامركزية (التطبيق الموزع ، DApp).

ما هو blockchain

Blockchain (Blockchain ، Block Chain) هي سلسلة من كتل البيانات المتعلقة ببعضها البعض بطريقة معينة. في بداية السلسلة توجد الكتلة الأولى ، والتي تسمى الكتلة الأولية (كتلة التكوين) أو كتلة التكوين. يليه ثانية ثم ثالثة وهكذا.

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

قاعدة البيانات الموزعة

يمكن اعتبار Blockchain كقاعدة بيانات موزعة يتم نسخها إلى جميع عقد شبكة blockchain. من الناحية النظرية ، ستعمل blockchain طالما تعمل عقدة واحدة على الأقل ، وتخزن جميع كتل blockchain.

سجل البيانات الموزعة

يمكن اعتبار Blockchain على أنه دفتر أستاذ موزع للبيانات والعمليات (المعاملات). اسم آخر لمثل هذا السجل هو دفتر الأستاذ.

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

عند إضافة الكتل وإجراء العمليات (المعاملات) ، يتم استخدام المفاتيح الخاصة والعامة. يقيدون مستخدمي blockchain من خلال منحهم الوصول إلى كتل البيانات الخاصة بهم فقط.

المعاملات

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

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

يحتوي Ethereum blockchain على ما يسمى بحالات النظام. مع تقدم المعاملات ، تتغير الحالة من الأولي إلى الحالي. يتم تسجيل المعاملات في كتل.

سلاسل الكتل العامة والخاصة

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

تطبيقات عملية لـ Blockchain

ما الذي يمكن استخدام blockchain؟

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

بالطبع ، أنت تعلم أنه يتم إنشاء أنظمة العملات المشفرة القائمة على blockchain لتحل محل النقود الورقية التقليدية. تسمى النقود الورقية أيضًا النقود الورقية (من Fiat Money).
يوفر Blockchain تخزينًا وثباتًا للمعاملات المسجلة في كتل ، بحيث يمكن استخدامها لإنشاء أنظمة عملة معماة. يحتوي على السجل الكامل لتحويل أموال التشفير بين مستخدمين مختلفين (حسابات) ، ويمكن تتبع أي عملية.

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

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

يمكن استخدام عقود Ethereum blockchain و Ethereum الذكية المكتوبة بلغة برمجة Solidity ، على سبيل المثال ، في المجالات التالية:

  • بديل لتوثيق المستندات ؛
  • الاحتفاظ بسجل للأشياء العقارية ومعلومات حول المعاملات مع الأشياء العقارية ؛
  • تخزين معلومات حقوق النشر للملكية الفكرية (كتب ، صور ، أعمال موسيقية ، إلخ) ؛
  • إنشاء أنظمة تصويت مستقلة ؛
  • مالية ومصرفية؛
  • الخدمات اللوجستية على نطاق دولي ، وتتبع حركة البضائع ؛
  • تخزين البيانات الشخصية كنظير لنظام بطاقة الهوية ؛
  • معاملات آمنة في المنطقة التجارية ؛
  • تخزين نتائج الفحوصات الطبية وتاريخ الإجراءات الموصوفة

مشاكل مع blockchain

لكن ، بالطبع ، ليس كل شيء بسيطًا كما قد يبدو!

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

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

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

ستكون تطبيقات Ethereum اللامركزية ملائمة إذا دفعت مقابل استخدامها مع العملة المشفرة. كلما زاد عدد الأشخاص الذين يمتلكون أو يرغبون في شرائها ، زادت شعبية DApps والعقود الذكية.

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

مشكلة أخرى هي أن عقود Ethereum blockchain الذكية تعمل في بيئة معزولة من الأجهزة الافتراضية ، وليس لديها إمكانية الوصول إلى بيانات العالم الحقيقي. على وجه الخصوص ، لا يمكن لبرنامج العقد الذكي قراءة البيانات من مواقع الويب أو أي أجهزة مادية (أجهزة الاستشعار وجهات الاتصال وما إلى ذلك) ، ولا يمكنه إخراج البيانات إلى أي أجهزة خارجية. سنناقش هذه المشكلة وطرق حلها في الدرس المخصص لما يسمى Oracles - وسطاء المعلومات للعقود الذكية.

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

كيف يتم تشكيل سلسلة blockchain

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

على التين. 1.1 لقد أظهرنا أبسط نسخة من تسلسل الكتلة ، حيث تشير الكتلة الأولى إلى المجموعة التالية.

كتاب "إنشاء عقود صلبة ذكية لسلسلة Ethereum Blockchain. دليل عملي"
أرز. 1.1 تسلسل كتلة بسيط

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

دعونا نتعامل مع حماية الكتل من التزوير. في المرحلة الأولى ، سنحاول حماية كل كتلة بمجموع اختباري (الشكل 1.2).

كتاب "إنشاء عقود صلبة ذكية لسلسلة Ethereum Blockchain. دليل عملي"
أرز. 1.2 إضافة حماية المجموع الاختباري لبيانات الكتلة

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

يمكنك استخدام إحدى وظائف التجزئة مثل MD-5 و SHA-1 و SHA-256 وما إلى ذلك لحساب المجموع الاختباري. تحسب دوال التجزئة بعض القيم (على سبيل المثال ، في شكل سلسلة نصية ذات طول ثابت) نتيجة لإجراء عمليات لا رجعة فيها على كتلة من البيانات. تعتمد العمليات على نوع دالة التجزئة.

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

هل ستكون هذه الحماية كافية؟ للاسف لا.

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

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

كتاب "إنشاء عقود صلبة ذكية لسلسلة Ethereum Blockchain. دليل عملي"
أرز. 1.3 أضف تجزئة الكتلة السابقة إلى كتلة البيانات

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

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

تذكر أيضًا أن بيانات blockchain مخزنة (مكررة) على العديد من عقد الشبكة ، أي يتم استخدام التخزين اللامركزي. وهذا يعقد بشكل كبير تزوير الكتلة لأنه. يجب إجراء التغييرات على جميع عقد الشبكة.

نظرًا لأن الكتل تخزن معلومات حول الكتلة السابقة ، فمن الممكن التحقق من محتويات جميع الكتل في السلسلة.

بلوكتشين إيثريوم

إن Ethereum blockchain عبارة عن منصة يمكنك من خلالها إنشاء DApps موزعة. بخلاف الأنظمة الأساسية الأخرى ، تسمح Ethereum باستخدام ما يسمى بالعقود الذكية (العقود الذكية والعقود الذكية) المكتوبة بلغة برمجة Solidity.

تم إنشاء هذه المنصة في عام 2013 من قبل فيتاليك بوتيرين ، مؤسس مجلة بيتكوين ، وتم إطلاقها في عام 2015. كل ما سنتعلمه أو نفعله في دورتنا التدريبية مرتبط بشكل خاص بعقود Ethereum blockchain و Solidity الذكية.

التعدين أو كيف يتم إنشاء الكتل

التعدين عملية معقدة إلى حد ما وكثيفة الموارد لإضافة كتل جديدة إلى blockchain ، وليس "تعدين العملات المشفرة" على الإطلاق. يضمن التعدين كفاءة blockchain ، لأن. هذه العملية هي المسؤولة عن إضافة المعاملات إلى Ethereum blockchain.

يُطلق على الأشخاص والمنظمات المشاركة في إضافة الكتل عمال المناجم.
يحاول البرنامج (البرنامج) الذي يعمل على عقد المعدنين التقاط معلمة تجزئة تسمى Nonce للكتلة الأخيرة من أجل الحصول على قيمة تجزئة معينة تقدمها الشبكة. تسمح لك خوارزمية تجزئة Ethash المستخدمة في Ethereum بالحصول على قيمة Nonce فقط من خلال التعداد المتسلسل.

إذا وجدت عقدة عامل التعدين قيمة Nonce الصحيحة ، فهذا هو ما يسمى بإثبات العمل (إثبات العمل ، إثبات العمل). في هذه الحالة ، إذا تمت إضافة الكتلة إلى شبكة Ethereum ، يتلقى المُعدِّن مكافأة معينة بعملة الشبكة - Ether. في وقت كتابة هذا الكتاب ، كانت المكافأة 5 إيثر ، لكنها ستنخفض بمرور الوقت.

وبالتالي ، يضمن معدِّنو Ethereum تشغيل الشبكة عن طريق إضافة كتل ، وتلقي أموال العملة المشفرة لهذا الغرض. ستجد الكثير من المعلومات حول عمال المناجم والتعدين على الإنترنت ، وسنركز على إنشاء عقود Solidity و DApps على شبكة Ethereum.

ملخص الدرس

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

يمكن استخدام Blockchain لتخزين نتائج المعاملات. والغرض الرئيسي منه هو تنظيم التنفيذ الآمن للمعاملات بين الأطراف (الأشخاص والمنظمات) ، التي لا توجد ثقة بينهم. لقد تعلمت في أي مجالات عمل محددة وفي أي مجالات يمكنك استخدام Ethereum blockchain وعقود Solidity الذكية. هذا هو القطاع المصرفي ، تسجيل حقوق الملكية ، الوثائق ، إلخ.

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

تحدثنا أيضًا بإيجاز عن التعدين كعملية لإضافة كتل جديدة إلى blockchain. التعدين مطلوب لإتمام المعاملات. يضمن أولئك الذين يشاركون في التعدين كفاءة blockchain ويحصلون على مكافأة في العملة المشفرة مقابل ذلك.

الدرس 2: تجهيز بيئة سطح المكتب على Ubuntu و Debianاختيار نظام التشغيل
تركيب المرافق اللازمة
تثبيت Geth and Swarm على Ubuntu
تثبيت Geth and Swarm على دبيان
تحضير تمهيدي
تنزيل توزيع Go
تحديد متغيرات البيئة
التحقق من إصدار Go
تثبيت Geth and Swarm
نقوم بإنشاء blockchain خاص
تحضير ملف genesis.json
قم بإنشاء دليل عمل
إنشاء حساب
قم بتشغيل تهيئة العقدة
خيارات بدء تشغيل العقدة
الاتصال بموقعنا
إدارة التعدين والتحقق من التوازن
اغلاق وحدة التحكم Geth
ملخص الدرس

الدرس 3تجهيز Raspberry Pi 3 الخاص بك
تركيب Rasberian
تثبيت التحديثات
تمكين وصول SSH
تعيين عنوان IP ثابت
تركيب المرافق اللازمة
تثبيت Go
تنزيل توزيع Go
تحديد متغيرات البيئة
التحقق من إصدار Go
تثبيت Geth and Swarm
نقوم بإنشاء blockchain خاص
التحقق من الحساب والرصيد
ملخص الدرس

الدرس 4عرض الحسابات وإضافتها
عرض قائمة الحسابات
إضافة حساب
معلمات أمر حساب geth
كلمات مرور الحساب
العملة المشفرة في Ethereum
عملة Ethereum
تحديد الرصيد الحالي لحساباتنا
تحويل الأموال من حساب إلى آخر
طريقة المعاملة eth.send
عرض حالة الصفقة
إيصال الحوالة
ملخص الدرس

الدرس الخامسالعقود الذكية في Ethereum
تنفيذ العقود بذكاء
آلة افتراضية Ethereum
بيئة التطوير المتكاملة ريميكس Solidity IDE
بدء التجميع
استدعاء وظائف العقد
نشر عقد في شبكة خاصة
احصل على تعريف ABI وثنائي العقد
نشر العقد
التحقق من حالة صفقة نشر العقد
استدعاء وظائف العقد
مترجم دفعة solc
تثبيت solc في أوبونتو
تثبيت solc على دبيان
تجميع عقد HelloSol
نشر العقد
تثبيت solc على Rasberian
ملخص الدرس

الدرس 6. العقود الذكية و Node.jsتثبيت Node.js
التثبيت في أوبونتو
التثبيت على دبيان
تركيب وتشغيل Ganache-cli
تثبيت Web3
تركيب Solc
تثبيت Node.js على Rasberian
برنامج نصي للحصول على قائمة بالحسابات في وحدة التحكم
سيناريو لنشر عقد ذكي
تشغيل والحصول على المعلمات
الحصول على خيارات الإطلاق
تجميع العقود
إلغاء حظر حسابك
قم بتنزيل ABI والتعليمات البرمجية الثنائية للعقد
تقدير الكمية المطلوبة من الغاز
قم بإنشاء كائن وابدأ في نشر عقد
تشغيل نص العقد للنشر
استدعاء وظائف العقد الذكية
هل يمكن تحديث العقد الذكي المنشور
العمل مع Web3 الإصدار 1.0.x
احصل على قائمة بالحسابات
نشر العقد
استدعاء وظائف العقد
تحويل الأموال من حساب إلى آخر
تحويل الأموال لحساب العقد
تحديث عقد HelloSol الذكي
قم بإنشاء برنامج نصي لعرض رصيد الحساب
أضف استدعاء دالة getBalance إلى البرنامج النصي call_contract_get_promise.js
تجديد حساب العقد الذكي
ملخص الدرس

الدرس 7. مقدمة عن الكمأةتركيب الكمأة
قم بإنشاء مشروع HelloSol
إنشاء دليل وملفات المشروع
دليل العقود
هجرات الدليل
دليل الاختبار
ملف truffle-config.js
تجميع عقد HelloSol
ابدأ في نشر عقد
استدعاء وظائف عقد HelloSol في موجه Truffle
استدعاء وظائف عقد HelloSol من برنامج JavaScript يقوم بتشغيل Node.js
تركيب وحدة عقد الكمأة
استدعاء وظائف العقد getValue و getString
تعيين دالات عقد الاتصال القيمة و setString
تغيير العقد واعادة النشر
العمل مع Web3 الإصدار 1.0.x
إجراء تغييرات على عقد HelloSol الذكي
نصوص لطرق الاتصال بالعقد
الاختبار في الكمأة
اختبار الصلابة
اختبار JavaScript
ملخص الدرس

الدرس الثامنعقد أنواع بيانات التعلم
أنواع البيانات المنطقية
الأعداد الصحيحة غير الموقعة والموقعة
أرقام النقاط الثابتة
عنوان
متغيرات أنواع المركب
المصفوفات الثابتة
المصفوفات الديناميكية
تعداد
هيكل
رسم خرائط القواميس
ملخص الدرس

الدرس 9نشر عقد من Truffle إلى شبكة Geth الخاصة
تحضير مضيف شبكة خاصة
تحضير العقد للعمل
تجميع وترحيل العقد إلى شبكة Truffle
تشغيل ترحيل geth LAN
الحصول على القطع الأثرية الكمأة
نشر عقد من Truffle إلى Rinkeby testnet
تحضير عقدة الجيث لـ Rinkeby
تزامن العقدة
إضافة الحسابات
تعبئة حساب Rinkeby الخاص بك مع Ether
بدء ترحيل العقد إلى شبكة Rinkeby
عرض معلومات العقد على شبكة Rinkeby
وحدة التحكم في الكمأة لشبكة Rinkeby
أسهل طريقة لاستدعاء وظائف العقد
استدعاء طرق العقد مع Node.js
تحويل الأموال بين الحسابات في وحدة تحكم Truffle لـ Rinkby
ملخص الدرس

الدرس العاشركيف يعمل Ethereum Swarm
تركيب وتشغيل Swarm
عمليات على الملفات والدلائل
تحميل ملف إلى Ethereum Swarm
قراءة ملف من Ethereum Swarm
عرض بيان الملف المرفوع
تحميل الدلائل مع الدلائل الفرعية
قراءة ملف من دليل تم تحميله
استخدام بوابة Swarm العامة
استدعاء Swarm من نصوص Node.js
Perl Net :: Ethereum :: Swarm module
تثبيت وحدة Net :: Ethereum :: Swarm
كتابة وقراءة البيانات
ملخص الدرس

الدرس 11تثبيت Web3.py
تحديث وتثبيت الحزم المطلوبة
تركيب وحدة إيزي سولك
نشر عقد مع Web3.py
تجميع العقود
الاتصال بموفر
تنفيذ عقد النشر
حفظ عنوان العقد و abi في ملف
تشغيل نص العقد للنشر
استدعاء طرق العقد
قراءة العنوان والعقد abi من ملف JSON
الاتصال بموفر
إنشاء كائن العقد
استدعاء طرق العقد
الكمأة و Web3.py
ملخص الدرس

الدرس 12يمكن أن يثق العقد الذكي في البيانات من العالم الخارجي
Oracles كوسطاء معلومات Blockchain
مصدر البيانات
رمز لتمثيل البيانات من المصدر
Oracle لتسجيل سعر الصرف في blockchain
عقد USDRateOracle
تحديث سعر الصرف في عقد ذكي
باستخدام Web Socket Provider
في انتظار حدث RateUpdate
معالجة حدث RateUpdate
بدء تحديث البيانات في عقد ذكي
ملخص الدرس

المصدر: www.habr.com

إضافة تعليق