بناء Labeler NearBy
Table of Contents
أول هاكاثون لي
خلال الأجزاء الأخيرة من صيف 2022، كنت أرغب حقًا في العمل على مشروع مثير. كنت قد أنهيت للتو دراستي الجامعية وكنت أعمل بدوام كامل كمهندس برمجيات. كنت أرغب حقًا في الالتزام بمشروع جانبي وفي ذلك الوقت، كان لدي وقت فراغ كافٍ للقيام بذلك. لم أكن أعرف حقًا ماذا أعمل، حتى اكتشفت موقعًا يسمى Devpost في أغسطس 2022. Devpost هو موقع يستضيف مسابقات برمجية تُسمى هاكاثونات. أثناء تصفحي لـ Devpost، اكتشفت هاكاثون يسمى NEAR MetaBUILD III والذي كان هاكاثون يستضيفه منظمة NEAR Protocol.
ما هو NEAR؟
بروتوكول NEAR هو بلوكتشين يدعم العقود الذكية وعملة NEAR المشفرة. يُعرف بشكل أساسي بوجود رسوم انتقال منخفضة جدًا، ودعم العقود الذكية، ووجود شبكة اختبار رسمية خاصة به، وبيئة تطوير رائعة بسبب إمكانية كتابة العقود الذكية بلغة Rust و/أو Java Script. يمكنك الحصول على نظرة أفضل على بروتوكول NEAR من خلال الفيديو الرائع من CoinGecko:
خلال هذه الفترة، بدأت Coinbase رسميًا في دعم بروتوكول NEAR كعملة قابلة للتداول على منصتها. كان هذا أمرًا كبيرًا لأن Coinbase معروفة بأنها انتقائية جدًا عندما يتعلق الأمر بالعملات التي تدعمها على منصتها. ساعد هذا في جعل NEAR منصة أكثر موثوقية. لا يزال بإمكانك تداول NEAR على Coinbase حتى يومنا هذا.
لماذا الالتزام؟
بعد قضاء بعض الوقت في التفكير، قررت أن أكرس وقتي للمنافسة في هاكاثون NEAR MetaBUILD III. كانت حجتي هي:
- العملات المشفرة لن تختفي وهي تقنية ستبقى. لذا كان من المنطقي استثمار بعض الوقت في تعلم هذه التقنية.
- كان للهاكاثون جوائز رائعة، تتراوح بين 20,000 دولار إلى 100,000 دولار في NEAR إذا كنت أحد الفائزين.
- كان للهاكاثون موعد نهائي محدد، مما يعني أن المشروع لا يمكن أن يستمر لعدة أشهر كما هو الحال مع العديد من المشاريع الجانبية عمومًا.
- سيكون المشروع تجربة تعليمية رائعة ومقدمة رائعة للهاكاثونات.
- في أسوأ الأحوال، سيسمح لي الهاكاثون بإنشاء مشروع رائع لأظهره في سيرتي الذاتية.
مع وضع كل هذا في الاعتبار، اتصلت بصديقي المقرب من الكلية في 26 أغسطس 2022 وبدأنا التخطيط لهذا الهاكاثون. كان من المقرر أن يبدأ الهاكاثون في 23 سبتمبر 2023 وينتهي في 21 نوفمبر 2022. على الرغم من أن الموعد النهائي تم تمديده نحو 24 نوفمبر 2023 في نهاية الهاكاثون. نظرًا لأننا كنا قبل شهر واحد، قررنا قضاء هذا الوقت في التعلم وتبادل الأفكار حول ما سنعمل عليه في هذا الهاكاثون الذي يستمر لمدة شهرين. خلال الشهر الأول، حصلنا على نظرة عامة عامة عن العملات المشفرة والبلوكشين. قمنا بمراجعة وممارسة على شبكة اختبار NEAR، ومراجعة مجموعة أدوات NEAR، ونشرنا عددًا من العقود الذكية.
الفكرة
بعد الحصول على مقدمة رائعة لكل ما يتعلق بالبلوكشين وNEAR، بدأنا في تبادل الأفكار. كنت أرغب في أن يكون هذا المشروع شيئًا ليس مجرد “مشروع هاكاثون”، بل شيئًا يمكن أن يصبح منتجًا يمكن للآخرين استخدامه ويكون مثالًا على كيفية استخدام العملات المشفرة لأشياء خارج نطاق التداول فقط.
مع وضع ذلك في الاعتبار، قررنا في البداية إنشاء شيء مشابه لـ Unreal Engine Blueprint، ولكن لإنشاء ونشر العقود الذكية على بلوكتشين NEAR بسهولة دون الحاجة إلى البرمجة. ومع ذلك، قبل أسبوع من بدء الهاكاثون، تخلىنا عن الفكرة لأنها ببساطة لم تكن منطقية. لماذا سيهتم أي شخص باستخدام أداتنا لإنشاء عقود NEAR الذكية إذا لم يكن هناك حالة استخدام عملية لها بعد؟ سيكون الأمر مثل تطوير أداة لا يحتاجها الكثير من الناس.
مع بقاء أسبوع واحد فقط قبل بدء الهاكاثون، بدأنا في تبادل الأفكار مرة أخرى واستقرينا على هذه الفكرة:
منصة لامركزية حيث يمكن للباحثين في الذكاء الاصطناعي الاستعانة بمصادر خارجية
لتصنيف البيانات إلى مصنفين حول العالم
سمينا المشروع “Labeler NearBy”. كانت قرارنا لاختيار هذه الفكرة مبنيًا على الأسباب التالية:
- يتطلب تطوير الذكاء الاصطناعي تصنيف البيانات بواسطة البشر للتدريب.
- العثور على الأفراد المهرة وإدارتهم لتصنيف مجموعات بيانات محددة هو أمر صعب.
- تم تنفيذ الفكرة بنجاح بالفعل من قبل شركة تسمى Scale AI، كما يتضح من كيفية إيجادهم لتناسب المنتج مع السوق.
- تثير الخدمات المركزية مثل Scale AI مخاوف حيث يتعين على المنظمات إرسال بياناتها إلى شركة التصنيف، التي تقوم بعد ذلك بالاستعانة بمصادر خارجية لمصنفين بشريين على مستوى العالم. بعد عملية التصنيف، تعيد الشركة البيانات المصنفة إلى المنظمة. هذا يتخلى عن السيطرة على بيانات التدريب القيمة، والتي يمكن أن تستخدمها شركة التصنيف لتدريب نماذجها الخاصة. بدا أن لامركزية هذه الخدمة هي الحل المنطقي.
- وجدنا عددًا قليلاً جدًا من المشاريع في مجال التطبيقات اللامركزية (dApp) تعمل على هذه الفكرة، مما يوفر لنا فرصة للابتكار والريادة في هذا المجال.
للمساعدة في تقليل التعقيد، قررنا أن Labeler NearBy سيدعم فقط بيانات الصور في الوقت الحالي.
التقديم
مع اختيار الفكرة وبدء الهاكاثون رسميًا، بدأ صديقي وأنا في بناء Labeler NearBy. عملنا على مشروعنا لمدة شهرين حتى قدمنا المسودة النهائية لمشروعنا إلى Devpost في 24 نوفمبر 2022. قدمنا مشروعنا على Devpost وأنشأنا أيضًا نسخة من تقديمنا على Github. لا تغطي هذه المدونة كل جانب تقني وعملية تطوير Labeler NearBy. مع وضع ذلك في الاعتبار، لمعرفة المزيد عن كيفية عمل Labeler NearBy أو لمشاهدة تقديمنا النهائي، يرجى زيارة أحد الروابط التالية:
يتكون Labeler NearBy من قاعدتي شفرة: ln-researcher وln-labeler. هذه القواعد البرمجية مفتوحة المصدر تمامًا بموجب ترخيص MIT ويمكن الاطلاع عليها من خلال الروابط التالية:
إليك نظرة عامة عامة عن كيفية عمل Labeler NearBy (LN):
يحتاج الباحث إلى صور مصنفة لتدريب نموذج الذكاء الاصطناعي الخاص به. لتحقيق ذلك، يستخدم الباحث LN لاستضافة بياناته وتوفير وسيلة للمصنفين لتصنيف بياناته. يتم ذلك من خلال ln-researcher، وهي خدمة ويب مستضافة ذاتيًا تتكون من واجهة برمجة التطبيقات، وعقود الباحث الذكية، وقاعدة بيانات Postgres محلية. بالنسبة للمصنف، يتم توفير واجهة ويب (كان من المفترض أن تكون) تمكنهم من الوصول إلى صور الباحث وتصنيفها. أثناء عملية التصنيف، يتم تصنيف صورة واحدة ثلاث مرات بواسطة مصنفين مختلفين. فقط المصنف الذي لديه أفضل التصنيفات، والذي يتم تحديده من خلال نظام تصويت، يتم مكافأته بعملات NEAR. التطبيق الويب المسؤول عن هذه العملية يسمى ln-labeler. يمول الباحث كل عملية تصنيف، ويمكن تحويل عملات NEAR بسهولة إلى دولارات من خلال Coinbase. يتم التعامل مع جميع لوجستيات المعاملات بواسطة العقود الذكية المستضافة على بلوكتشين بروتوكول NEAR.
يمكنك مشاهدة فيديو العرض التقديمي الخاص بنا عن Labeler NearBy للهاكاثون هنا:
أعظم إنجاز
الميزة التي أفخر بتنفيذها هي وظيفة تسمى getImage(). تعمل هذه الوظيفة كنقطة نهاية واجهة برمجة التطبيقات في ln-researcher وتلعب دورًا حاسمًا في خط أنابيب البيانات بين الباحثين والمصنفين في Labeler NearBy (LN).
تمكن هذه نقطة النهاية واجهة برمجة التطبيقات الباحثين من توزيع صورهم بشكل آمن وموثوق لتصنيفها. يتم إدارة مهام التصنيف عبر عقود ذكية على بلوكتشين بروتوكول NEAR بينما يتم استضافة بيانات الصورة بواسطة الباحث من خلال ln-researcher.
تقوم نقطة النهاية بإجراء سلسلة من الفحوصات الأمنية لضمان أن المصنف المعين فقط يمكنه الوصول إلى الصورة. يتضمن ذلك التحقق من توقيع الطلب والتحقق من العقد الذكي المرتبط للتأكد من وجود المهمة وتعيينها للمصنف الذي يطلبها.
بمجرد التحقق من الطلب في واجهة برمجة التطبيقات المستضافة ذاتيًا للباحث ln-researcher، تسترجع الوظيفة الصورة من قاعدة بيانات Postgres المحلية، وتقوم بتشفير الصورة، وتسليمها إلى المصنف المصرح له الذي يمكنه بعد ذلك فك تشفير الصورة للتصنيف. في الوقت نفسه، تقوم الوظيفة بتحديث حالة الصورة في قاعدة البيانات، مما يشير إلى تقدم تصنيف الصورة. خلال هذه العملية، يتم استخدام مفاتيح RSA من كل من الباحث والمصنف للمصادقة. بينما يتم استخدام تشفير AES لتشفير الصورة.
تلعب هذه النقطة النهائية دورًا حاسمًا في إدارة توزيع الصور بشكل آمن ومراقب من الباحثين إلى المصنفين. تضمن نقل البيانات بشكل آمن وتتبع وإدارة عملية تصنيف الصور بشكل فعال. بالإضافة إلى ذلك، فإن هذه العملية لديها القدرة على القضاء على الحاجة لاستخدام HTTPS، على الأقل لهذه النقطة النهائية.
تم اختبار هذه النقطة النهائية/الوظيفة المحددة وثبت أنها تعمل. أدناه يوجد مخطط يوضح الوظائف العامة لـ Labeler NearBy، بما في ذلك تصوير واضح لكيفية عمل النقطة النهائية/الوظيفة المذكورة أعلاه:
النتيجة
للأسف، الحقيقة المحزنة هي أننا لم نتمكن من إكمال هذا المشروع بالكامل بحلول موعد انتهاء الهاكاثون. تم إكمال معظم المشروع، مثل الباحث (ln-researcher)، ولكن الواجهة الأمامية (ln-labeler) لم تكتمل ولم نتمكن من نشر عرض تجريبي مباشر. على الرغم من أن الجزء الخلفي (ln-researcher) كان مكتملًا بشكل أساسي، إلا أنه مع عدم وجود واجهة أمامية تعمل بشكل صحيح وعدم وجود عرض تجريبي مباشر، لم يكن بإمكان أي شخص تجربة فكرة Labeler NearBy. ليس ذلك فحسب، بل لم يتمكن الحكام من تجربة المشروع وبدلاً من ذلك كان عليهم قراءة التقديم، والاطلاع على الكود، و/أو محاولة تشغيله بأنفسهم. مما جعل فرصنا في الفوز تنخفض إلى صفر في المئة تقريبًا. وقد تم تأكيد ذلك في 15 ديسمبر 2022 عندما تم الإعلان عن الفائزين في الهاكاثون، ولم نكن من بينهم.
الخسارة
لن أخفي حقيقة أن النتيجة النهائية من هذا الهاكاثون كانت محبطة. تم استثمار شهور في هذا المشروع وكان لدي رؤية كبيرة له حيث كنت أعتقد أنه سيوفر أداة مفيدة جدًا للباحثين.
لدي معيار واضح للمشاريع التي أتعامل معها: إما أن تنجح أو تفشل؛ لا يوجد أرضية وسطى. لذا، كان هذا المشروع فاشلاً لأنه لم يكتمل بالكامل بحلول الموعد النهائي وظل غير متاح للمستخدمين المحتملين.
لكن من المهم أن نتذكر أن الفشل هو جزء طبيعي من الحياة. نجاحاتنا مبنية على الدروس التي نتعلمها من إخفاقاتنا. بينما كانت نتيجة هذا الهاكاثون محبطة، إلا أنها قدمت رؤى قيمة عندما يتعلق الأمر بتطوير وبناء مشروع/منتج.
الدروس المستفادة
الدروس الرئيسية التي أخذتها من هذه التجربة كانت كما يلي:
- المشروع الذي اخترناه كان يتطلب الكثير من الميزات التي يجب بناؤها مسبقًا قبل أن نتمكن من التكرار عليه. ماذا أعني بذلك؟ حسنًا، كان هذا المشروع يتطلب تقريبًا جميع مكونات الفكرة أن تُبنى قبل أن نتمكن حتى من اختبار الفكرة. كان من الأفضل اختيار مشروع يحتوي على مكونات أقل أساسية للعمل. من خلال القيام بذلك، كان بإمكاننا بناء المكونات الأساسية بشكل أسرع ثم التكرار على المشروع في وقت أقرب. من خلال القيام بذلك، كان بإمكاننا الالتزام بالموعد النهائي بسهولة أكبر وصنع مشروع قد يكون أبسط ولكنه أكثر اكتمالًا. تؤكد YC، وهي مسرعة للشركات الناشئة التقنية، أنه يجب عليك الإطلاق بسرعة، والتحدث مع المستخدمين، والتكرار. كان يجب علينا القيام بذلك مع مشروعنا لهذا الهاكاثون.
- لقد قللنا من تقدير الوقت الذي سيستغرقه بناء هذا المشروع. كان هذا أول هاكاثون لنا وأول مرة نصنع فيها تطبيقًا لامركزيًا (dapp). ليس ذلك فحسب، بل كنت أعمل بدوام كامل كمهندس برمجيات وكان صديقي يكمل دراسته للماجستير. ومع ذلك، اعتقدنا أن شهرين سيكونان كافيين. كان من الأفضل تقليل نطاق المشروع و/أو العثور على عضو فريق آخر يمكن أن يقلل من عبء العمل لدينا.
- قال وينستون تشرشل بشكل مشهور: “الكمال هو عدو التقدم”. كنت أعامل هذا المشروع كمنتج موجه للمستهلك (B2C)، بينما في الواقع كان مجرد مشروع هاكاثون وفي أحسن الأحوال منتجًا قابلًا للتطبيق (MVP). لذا في وقت مبكر، أهدرت الكثير من الوقت على تفاصيل صغيرة عندما كان يجب أن أركز وقتي على جعل الميزات الأساسية تعمل بشكل كافٍ.
بالإضافة إلى هذه الدروس القيمة، اكتسبت مهارات جديدة أثبتت أنها لا تقدر بثمن في مشاريعي الشخصية ومشاريعي المهنية. تشمل هذه المهارات:
- تطوير واجهات برمجة التطبيقات من خلال Node.js وJavaScript وExpress.js
- إعداد واستخدام PostgreSQL لإدارة البيانات
- دمج PostgreSQL في تطوير واجهات برمجة التطبيقات باستخدام حزم مثل PG.
- استخدام RSA (تشفير غير متماثل) وAES (تشفير متماثل) لتعزيز أمان البيانات.
الخاتمة
بشكل عام، أنا سعيد لأننا شاركنا في هذا الهاكاثون، على الرغم من خيبة الأمل من النتيجة النهائية. أنا ممتن للدروس القيمة والمهارات التي اكتسبتها أثناء العمل على Labeler NearBy، حيث جعلتني مطورًا أفضل وساهمت بشكل كبير في تطوير مشروعي التالي: Notify-Cyber.
ملاحظات أخرى
- قد أعود إلى Labeler NearBy، ولكن في الوقت الحالي، هذا المشروع في “فترة توقف طويلة”
- حاليًا، يجب أن يعمل Labeler NearBy فقط في شبكة اختبار NEAR. يحتاج إلى مزيد من التطوير، والاختبار، والتدقيق.