كتاب "خلق صلابة عقود الذكية ل Ethereum blockchain. دليل عملي


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

لا يوجد اليوم مطور برامج لا يسمع أي شيء عن تقنية Blockchain أو عملات التشفير (Cryptocurrency أو Crypto Currency) أو Bitcoins (Bitcoin) أو عرض العملة الأولي (ICO أو عرض العملة الأولي) أو العقود الذكية (العقد الذكي) ، وكذلك المفاهيم والمصطلحات الأخرى ذات الصلة إلى 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 تخزينًا وثباتًا للمعاملات المسجلة في الكتل ، وبالتالي يمكن أيضًا استخدامه لإنشاء أنظمة عملة مشفرة. يحتوي على السجل الكامل لتحويل أموال التشفير بين مستخدمين مختلفين (حسابات) ، ويمكن تتبع أي عملية.

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

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

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

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

القضايا Blockchain


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

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

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

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

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

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

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

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

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


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

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


التين. 1.1. تسلسل بسيط من الكتل

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

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


التين. 1.2. إضافة حماية كتلة البيانات مع الاختباري

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

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

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

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

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

لحماية السلسلة بأكملها ، من الممكن تخزين تجزئة البيانات من الكتلة السابقة في كل كتلة مع البيانات (الشكل 1.3).


التين. 1.3. إضافة تجزئة الكتلة السابقة إلى كتلة البيانات

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

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

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

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

Ethereum


Ethereum , DApp. , Ethereum (-, smart contracts), Solidity.

2013 , Bitcoin Magazine, 2015 . , , Ethereum - Solidity.


(mining) , « ». , .. Ethereum.

, , (miner).
(), , Nonce, -, . Ethash, Ethereum, Nonce .

Nonce, (PoW, Proof-of-work). , Ethereum, — Ether. 5 Ether, .

, Ethereum , , . , Solidity DApp Ethereum.


, . , , .

. — ( ), . , Ethereum - Solidity. , , ..

, . , , , , - , , .

. . , , .

2. Ubuntu Debian


Geth Swarm Ubuntu
Geth Swarm Debian

Go

Go
Geth Swarm

genesis.json






Geth


3. Raspberry Pi 3
Raspberry Pi 3
Rasberian

SSH
IP

Go
Go

Go
Geth Swarm




4.



geth account

Ethereum
Ethereum


eth.sendTransaction




5.
- Ethereum
-
Ethereum
Remix Solidity IDE



ABI



solc
solc Ubuntu
solc Debian
HelloSol

solc Rasberian


6. - Node.js
Node.js
Ubuntu
Debian
Ganache-cli
Web3
solc
Node.js Rasberian

-




ABI



-
-
Web3 1.0.x





- HelloSol

getBalance call_contract_get_promise.js
-


7. Truffle
Truffle
HelloSol

contracts
migrations
test
truffle-config.js
HelloSol

HelloSol Truffle
HelloSol JavaScript Node.js
truffle-contract
getValue getString
setValue setString

Web3 1.0.x
- HelloSol

Truffle
Solidity
JavaScript


8. Solidity




العنوان





mapping


9. Rinkeby
Truffle Geth


Truffle
geth
Truffle
Truffle Rinkeby
Geth Rinkeby


Rinkeby
Rinkeby
Rinkeby
Truffle Rinkeby

Node.js
Truffle Rinkby


10. Ethereum Swarm
Ethereum Swarm
Swarm

Ethereum Swarm
Ethereum Swarm



Swarm
Swarm Node.js
Perl Net::Ethereum::Swarm
Net::Ethereum::Swarm



11. Web3.py Ethereum Python
Web3.py

easysolc
Web3.py



abi


abi JSON



Truffle Web3.py


12.
-




USDRateOracle
-
Web Socket
RateUpdate
RateUpdate
-




التصحيحات والإضافات



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

خطأ فادح: فشل في كتابة كتلة التكوين: طلب شوكة غير مدعوم: eip150Block غير ممكّن ، لكن eip155Block ممكّن عند 0
أضف المعلمة eip150Block إلى ملف genesis.json:
{
"config": {
"chainId": 1999,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "10",
"gasLimit": "5100000",
"alloc": {}
}

Source: https://habr.com/ru/post/ar467347/


All Articles