خلاصة مجموعة Truffle مع الإصدار 5.0.36 ~ الأحدث النسبي ~

Blockchain & amp ؛ حول منطقة شاملة من مجالات تكنولوجيا تكنولوجيا المعلومات وطبقات متعددة من المكونات e nts من الأسفل إلى الأعلى ، الويب ، الهندسة الموزعة ، الشبكات من نظير إلى نظير ، التشفير ، إلخ ، والتي تبدو متاهة معقدة من التقنيات في لمحة. لن يكون لديك أي أدلة على الشارع أو الزقاق الذي يجب أن تتجول فيه وتجد الطريق الصحيح أحيانًا لما تسعى إليه. لقد راجعت بعض الأدلة ومقالات blockchain في الماضي وعدت مرة أخرى لإعادة تعلم الأساسيات بشكل كامل مع إطار عمل Truffle. إليك بعض البرامج التعليمية الموصى بها التي وجدتها عندما أجريت بعض البرامج التعليمية مرة أخرى مؤخرًا حول مجموعة Truffle لـ Ethereum. لتجنب أي انتكاسات ، أوصي بقراءة “إتقان Ethereum”. مسبقًا [1]

مقدمة

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

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

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

المعاملات عبارة عن رسائل موقعة تم إنشاؤها بواسطة EOA ، يتم إرسالها عبر شبكة Ethereum ، ويتم تسجيلها على Ethereum blockchain.

بكلمات بسيطة ، المعاملات هي الطريقة الوحيدة لإحداث تغيير في حالة Ethereum ، أو التسبب في تنفيذ عقد في EVM. لا يعمل Ethereum بشكل مستقل. يقال أن كل شيء يبدأ بمعاملة. تتكون المعاملة من البيانات التالية ويتم تسلسلها باستخدام مخطط تشفير بادئة الطول المتكرر (RLP) قبل التوقيع. nonce ، سعر الغاز ، حد الغاز ، المستلم ، القيمة ، البيانات ، v ، r ، s تسعة عناصر في رسالة المعاملة.

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

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

تحتاج برامج الكتابة والعقود الذكية على Ethereum EVM إلى مترجم لترجمة البرامج إلى أكواد بايت أولية عندما نحتاج إلى نشرها على Ethereum EVM. لأن هذا الجهاز الظاهري لا يفهم سوى رمز الآلة الذي لا يستطيع الإنسان فهمه. يمكن للإنسان فهم لغة البرمجة عالية المستوى مثل Serpent و Solidity و Vyper و Bamboo لكتابة عقود Ethereum الذكية . نظرًا لأن العقود الذكية غير قابلة للتغيير ، فمن الأهمية بمكان اختيار لغة يمكن كتابتها بآثار جانبية أقل وعبارات أقل بقدر ما هو متوقع. اعتبارًا من الآن ، تعتبر Solidity نوعًا من اللغة القياسية الواقعية لكتابة العقود الذكية في Ethereum. نظرًا لأن التماسك تتطور بسرعة ، سيكون من الأفضل تثبيت أحدث إصدار بأدوات متوافقة ، ومن دوافعني كتابة مقالة Truffle بأحدث إصدار نسبيًا .

لنفكر في استخدام لغة التماسك لكتابة العقود الذكية في EVM. التماسك هي لغة حتمية وموجهة للكائنات وعالية المستوى تأثرت بـ C ++ و Python و JavaScript. [2]

يحتوي على المترجم solc الذي يحول البرامج المكتوبة إلى رمز ثانوي أولي لـ EVM ويدير معيار واجهة التطبيق الثنائية (ABI). يحدد ABI المخطط كيف تأخذ كل دالة وحدث الوسائط والقيم المرجعة بتنسيق JSON. سيكون ABI بمثابة أدلة لـ DApps والتطبيقات الخارجية لإنشاء معاملات تستدعي الوظائف في هذا العقد مع الوسائط وأنواع الوسيطات الصحيحة بالطريقة الصحيحة. وإلا فلن يتمكن الأشخاص (أو النظام) من معرفة كيفية استدعاء الوظائف الواردة في العقد بشكل مناسب. يمكن اعتبار تعريف ABI هذا قوالب للعقد والوظائف.

يمكنك استخدام solc لإنشاء رمز بايت خام وملف ABI. بعد ذلك ، ستحتاج إلى استخدام web3js ، وهي واجهة برمجة تطبيقات JavaScript متوافقة مع Ethereum عبر JSON-RPC للتفاعلات ، لإرسال معاملة إنشاء العقد ، على سبيل المثال. ومع ذلك ، تزداد صعوبة حياتك مع الكثير من الأعمال الشاقة والمتكررة باستخدام solc و web3js ومكتبات npm الأخرى فقط. اعتذر عن المقدمة المطولة. من الواضح الآن أنه من الضروري أن يكون لديك شيء ما يجعل حياتك أسهل باستخدام أداة متكاملة لتغطية الأفكار الشاملة المذكورة أعلاه. هذا هو المكان الذي يحدث فيه إطار عمل الكمأة. يخفف الكمأ من تطوير عقد إيثريوم الذكي بشكل كبير.

مجموعة Truffle؟

لقد راجعنا لمحات عامة عن Ethereum و EVM وكيف يمكن إنشاء عقود ذكية مع المعاملات في الشبكة. دعونا نجعل حياتنا أسهل مع أدوات الحلويات المريحة ، مجموعة Truffle. تتكون مجموعة Truffle من ثلاث أدوات تطوير مفيدة لـ DApps و Truffle و Ganache و Drizzle. [3]

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

Ganache عبارة عن blockchain محلي لتطوير العقود الذكية التي يمكنك استخدامها لنشر العقود وتطوير تطبيقاتك وتشغيل الاختبارات. يوفر كلاً من تطبيق سطح المكتب و CLI (المعروف سابقًا باسم TestRPC).

Drizzle عبارة عن مجموعة من مكتبات الواجهة الأمامية التي تجعل كتابة واجهات مستخدم dapp أسهل وأكثر قابلية للتنبؤ بناءً على متجر Redux. وهو يتألف من بعض الوحدات المكونة لقلب رذاذ ، ومكونات تفاعل رذاذ ، ومكونات تفاعل رذاذ.

يتم توفير جميع هذه المكتبات في مدير الحزم npm. الشرط هو أن يكون لديك nodejs v8.9.4 أو إصدار أحدث. [4]

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

يعرض

تشغيل إصدار الكمأة كل إصدار من إصدارات مكتبة js. قد تدرك أن Truffle يتكون من ثلاث مكتبات Truffle و Solidity compiler و web3.js (وهي واجهة برمجة تطبيقات JavaScript متوافقة مع Ethereum للتفاعل مع العملاء عبر JSON-RPC).

لقد قمت بتثبيت ganache-cli فقط عبر npm.

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

يمكنك استخدام محفظة MetaMask لتأكيد DApps باستخدام blockchain لاختبار السلوكيات. ولكن يرجى ملاحظة أنه اعتبارًا من عام 2020 ، توقف MetaMask عن دعم حقن web3.js كما هو مذكور. لأن الإصدار الحالي المحقون يفتقر إلى بعض عمليات التحقق من السلامة التي تسببت في مشاكل لمستخدمينا. لقد أوضحنا أن الاحتفاظ بالترقيات إلى أحدث الإصدارات يجلب تغييرات خرق بشكل متكرر للمستخدمين ، وهو أمر مفهوم. [5]

لا يزال بإمكانك إحضار مكتبتك الملائمة واستخدامها مع موفر صفحة MetaMask ، سواء كان ethers.js أو web3.js أو أي شيء آخر.

دعونا نرى بعض الدروس المفيدة في الفقرة التالية.

دروس

هناك 23 درسًا تعليميًا حتى وقت الكتابة بما في ذلك أحدث “تعلم كيفية النشر مع فرق Truffle”. Truffe Teams هي أداة جديدة نسبيًا تم تطويرها لمراقبة DApps وإدارتها على وجه التحديد. يمنحك قدرة DevOps لـ DApps في تطوير الصلابة مع التكامل المستمر والتطوير الآلي وتتبع الاختبار ، وما إلى ذلك. [6]

محل حيوانات أليفة

سيأخذك هذا البرنامج التعليمي خلال عملية إنشاء تطبيقك الأول – نظام تتبع التبني لمتجر الحيوانات الأليفة!

يوصى بالاطلاع على مقالة نظرة عامة على Ethereum قبل متابعة البرنامج التعليمي. وهي تغطي منطقة واسعة من تقنيات تكنولوجيا المعلومات ليس فقط Ethereum ولكن فقط العقد الذكي ومكدس الواجهة (HTML الأساسي وجافا سكريبت) وشبكات نظير إلى نظير.

يغطي

البرنامج التعليمي لمتجر الحيوانات الأليفة المحتويات التالية: [7]

يُقال أن تطوير الكمأة يمكن أن يكون اختيارًا لتطوير blockchain لكنني أوصي باستخدام Ganache عندما يكون تأكيد DApps مطلوبًا. تقوم شركة Truffle بتطوير بلوكشين تطوير خاص و وحدة التحكم في الكمأة لشبكة التطوير في نفس الوقت. قد تقول إن تطوير الكمأة رائع ، ولكن انتظر ، لا يمكن فتح تطوير الكمأة في الأماكن العامة باستخدام الخيار -h على سبيل المثال بينما يمتلك Ganache المزيد من الحكمة مع خيارات متنوعة.

لقد حددت الشبكة المسماة “محلية” في truffle-config.js لـ ganache-cli ثم قمت بترحيل العناصر الأثرية إلى شبكة التطوير “المحلية” التي يمكن الوصول إليها عبر الإنترنت. قم بتشغيل ganache-cli باستخدام الخيار -h 0.0.0.0 وتهيئة truffle-config.js على النحو التالي:

يمكنك توصيل الشبكة المسماة “محلية” بهذا الأمر الآن.

بمجرد إنشاء العقد الذكي والواجهة الأمامية باستخدام HTML وجافا سكريبت البسيط ، يمكنك تشغيل واجهة مستخدم الويب باستخدام نصوص npm-scripts npm run dev التي تم تكوينها في package.json file.

سيتم استدعاء

lite-server و “خارجي” يعرض عنوان URL العام أو عنوان IP الخاص بك لتأكيد DApps على المتصفح.

لا تنس الإعداد على MetaMask الخاص بك. تحتاج إلى تكوين نقطة نهاية RPC المخصصة مع الخادم الذي يقوم بتشغيل blockchain للتطوير ورقم المنفذ المحدد. يمكننا التسوق في متجر Pete’s Pet Shop الآن.

يُعد متجر الحيوانات الأليفة برنامجًا تعليميًا رائعًا ومباشرًا بشكل خاص للأشخاص الذين هم على دراية بتكنولوجيا الويب الحالية والواجهة الأمامية إلى حد ما.

رذاذ وتفاعل

جاء React مع بعض المفاهيم البؤرية Virtual DOM و JSX ، كواحدة من مكتبات العرض بينما Backbone.js و Angular.js بهما مفهوم MVC. استخلصت أكواد جافا سكريبت React في مكان واحد لتتولى تقديم DOM بكفاءة ، إلا أن تطبيقات React تتطلب عادةً استخدام مكتبات إضافية لإدارة الحالة والتوجيه والتفاعل مع واجهة برمجة التطبيقات. تعد Redux و React Router و axios أمثلة خاصة على هذه المكتبات. [8]

يعد Redux أحد أشكال معماريات التدفق ويمكن وصفه في ثلاثة مبادئ أساسية. ليس لدى Redux أي تبعيات مع React لذا يمكن استخدام Redux مع Angular.js أو Vue.js أيا كان. [9]

يعتني

Drizzle بمزامنة بيانات العقد وبيانات المعاملات والمزيد من blockchain إلى متجر Redux. يركز البرنامج التعليمي على المستويات الدنيا من كيفية ظهور مشروع Truffle مع مكتبة React و Drizzle الأساسية من البداية. من فضلك لا تخلط بين المصطلحات وأدوار كل مكتبة Truffle و Drizzle و React لكن Redux ليس مكتبة بل هو اسم أحد بنيات Flux.

يغطي البرنامج التعليمي Drizzle and React المحتويات التالية: [10]

سوف نستخدم مكتبة create-reaction-app لإنشاء مشروع React. فلنثبته مسبقًا.

أثناء كل تثبيت مكتبة قد تواجه أخطاء في npm. يجب تحديث العقدة و npm لتلبية المتطلبات. اضطررت إلى تبديل إصدار العقدة إلى أحدث إصدار من v13.7.0 عندما حاولت تثبيت مكتبة create-reaction-app .


يفرض

create-reaction-app استيراد الملفات من client / src حتى نحتاج إلى تغيير دليل إنشاء العقد على النحو التالي. سيتم وضع عناصر العقد المُنشأة في client / src / Contracts الآن. [11]

بعد الانتهاء من تجميع العقد الذكي وترحيله في شبكتك ، يجب عليك تثبيت رذاذ في دليل العميل . يحتوي Drizzle على كل ما نحتاجه للعمل بشكل تفاعلي مع عقودنا الذكية.

يمكن أن يعمل

رذاذ و تساقط الأمطار كمخازن Redux في الوسط للتفاعل مع العقد الذكي المدمج و web3js بطريقة فعالة. نقوم بإنشاء متجر Drizzle في الكود. لكن ليس لديك فكرة عن متجر Drizzle على الإطلاق؟ للحصول على فهم أفضل حول Drizzle ومتجر Redux الخاص به ، من السهل نسبيًا استيعاب المقتطف أدناه ما هو حالة رذاذ رذاذ و حالة رذاذ من حالة المكون في سجل وحدة التحكم. يتم تمرير مثيل Drizzle من this.props.drizzle ويتم تمرير حالة هطول الأمطار من this.state.drizzleState من ناحية أخرى.

تُعد خيارات حالة الرذاذ وخيارات رذاذ الماء من المواد الجيدة لإلقاء نظرة سريعة على هذا البرنامج التعليمي. [12] [13]

لنختتم خلاصة مجموعة Truffle Suite. قد تكون هذه المقالة بدائية لبعض الأشخاص الذين هم على دراية بـ Ethereum والعقود الذكية وتقنيات الواجهة الأمامية بالفعل إلى حد ما. لكن من الجيد تحديث ذاكرتك وتجنب الانتكاسات مسبقًا للأشخاص الذين بدأوا لتوهم في التعلم حول التقنيات.

المرجع