Ethernaut in Arabic — level 0

Eman Herawy
5 min readJan 9, 2023

--

سلسلة تشرح حلول ايثرناوت بالعربي

بسم الله الرحمن الرحيم ،

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

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

بس حقيقى كنت ومازلت ممتنه جدا للناس اللى كانت بتقدم شرح للفكرة وده فرق معايا جدا ، وانهم كانوا كتير بيأكدوا فى كﻻمهم انه عادى لو مش فاهم .. وانهم عدى عليهم نفس اﻻحساس ده وان ده طبيعي

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

هنبدا باول درس، وهحاول انى ابتدى اترجم المسألة ذاتها على الريبو الخاص بالمشروع

قبل ما تبدا،

ايه هى ايثرناوت ؟ اللينك

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

ايثرناوت لمين ؟

ايثرناوت لمطوري العقود الذكية وللمهتمين بتامين وتدقيق العقود الذكية . اﻻتنين ؟ اه ﻻن المفروض فى المطور انه يعرف ازاى يكتب كود كويس وآمن .. وعلشان يكون آمن ﻻزم تعرف ازاى المخترق بيشوف الكود بتاعك. واكيد للمهتم بأمن وتدقيق العقود ، ﻻنه فى نظرى ما هو اﻻ مخترق بس ربنا هاديه 😂

طب امتى تقدر تبدا تتدرب عليها ؟

ﻻزم ومهم وضروري تمكن من سولديتى وكتابة العقود الذكية وويب 3 ، ولما بقول ويب3 بقصد هنا المكتبه اللى من خلالها تقدر تكلم بلوكتشين من بره ( فرونت اند ، باك اند .. “ احنا اصﻻ هنفتح الكونسول بتاع البراوزر / المتصفح وهنكلم بالبلوكتشين منه”).

طب لو لسه مبتعرفش تعمل ايه ؟ تروح تذاكر ولما تكتسسب المعرفه المطلوبه .. ترجع تكمل المقال :) .. ممكن تشوف اللينك ده فيها زى خارطه طريق ولينكات كتير .

هنحتاج ايه خلال اللعبة ؟

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

وطبعا 😂

هنروح ناخد نسخه للريبو

git clone git@github.com:OpenZeppelin/ethernaut.git
yarn install

Or

git clone git@github.com:OpenZeppelin/ethernaut.git
npm install

طبعا انا هنا بفترض ان جيت هاب عندك وشغال وحاجات كتير المفترض تكون عارفها كمطور زى ازاى بتتعامل مع ميتاماسك .. الخ

المهم هنقوم اللوكال نتورك ب

yarn network

ثم هنعمل دبلوى للكونتراكتسس بتاعتنا ب

yarn deploy:contracts

كده بقى عندنا بلوكتشين نتورك وعملنا دبلوى “ نشر” للعقود عليها “ ناقصنا ايه ؟

يا هتتشغل الويب سايت نفسه لوكال .. او هتفتح اللى اون ﻻين “ براحتك” انا ﻻنه اوقات مكنش بيفتح معايا معرفش ليه ، فكنت بريح نفسى وبشتغل كله لوكال .. فلو هتشتغل كله لوكال هتحتاج تشغل الفرونت اند من خلال الامر ده

yarn start:ethernaut

هتحتاج انك تسمح بتوصيل ميتامساك بالويبسايت .. اتاكد انك ع اللوكال نترورك “ لو شغال زيي على اللوكال” .. كمان متنساش انك تاخد اى اكونت من اللى جاهزين وممولين ف اللوكال نتروك ، ليكن اكون 0 ، وتضيفه على ميتاماسك علشان نبدا اللعبة

هدف المستوى ده انه فقد يمهد ليك ، انك تتعامل مع اللعبة والكونسول ، تقرا من عقد وتبعت له داتا وهكذا

لو كل حاجه شابكه صح المفروض لم تفتح الكونسول تشوف عنوان اللاعب

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

نسخه هنا كان اجتهاد شخصى فى الترجمه للعربية لكلمة
Instance

لو كل شئ تمام المفروض تشوف فى الكونسول رسائل مشابهه لده

هتلاقيه فى الخطوة رقم 9 ، تكتب

await contract.info()

وهتلاقى كل رساله بتقولك تعمل ايه ف اللى بده ،

لو ﻻحظت .. الفنكشنز” المعادلات” مكنتش مخفيه ..ﻻ نقدر نشوفها ونعرف نوعها ويه البرامترز بتاعتها.

انا هنا نظريا المفروض حليت التحدى ، محتاجه اتاكد بانى اعمل “ تسليم النسخه” واشوف الكونسول

هتلاحظ ان كل حاجه على البلوكتشين ، سوا لوكال او تيست “ حسب انت متصل على ايه” لو كنت ع تيست فكل محاوﻻتك مسجله

بكده احنا حلينا اول مستوى ، اللى هو تمهيدى وسهل وبيسط

فى المقالة الجايه ، هنحل مع بعض المستوى التالى

--

--

Eman Herawy

Blockchain developer | @KERNEL fellow | @Chainlink developer expert | Devcon V Scholar Alumni @Ethereum