ملصق قريب
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 SDK، ونشرنا عدة عقود ذكية.
الفكرة
بعد الحصول على مقدمة رائعة لكل ما يتعلق بالبلوكتشين وNEAR، بدأنا في العصف الذهني للأفكار. أردت أن يكون هذا المشروع شيئًا ليس مجرد “مشروع هاكاثون”، بل شيئًا يمكن أن يصبح منتجًا يمكن للآخرين استخدامه ويكون مثالًا على كيف يمكن أن تكون العملات المشفرة مفيدة لأشياء خارج نطاق التداول فقط.
مع وضع ذلك في الاعتبار، قررنا في البداية إنشاء شيء مشابه لـ Unreal Engine Blueprint، ولكن لتسهيل إنشاء ونشر العقود الذكية على بلوكتشين NEAR دون الحاجة للبرمجة. ومع ذلك، قبل أسبوع واحد من بدء الهاكاثون، تخلينا عن الفكرة لأنها ببساطة لم تكن منطقية. لماذا سيستخدم أحدهم أداتنا لإنشاء عقود NEAR الذكية إذا لم يكن هناك حالة استخدام عملية لها بعد؟ كان الأمر كأننا نطور أداة لا يحتاجها أحد.
مع بقاء أسبوع واحد فقط قبل بدء الهاكاثون، عُدنا إلى العصف الذهني مرة أخرى واستقرينا على الفكرة التالية:
منصة لامركزية حيث يمكن للباحثين في الذكاء الاصطناعي الاستعانة بملصقين حول العالم لتصنيف البيانات
سمينا المشروع “ملصق قريب”. كان اختيارنا لهذه الفكرة مبنيًا على الأسباب التالية:
- تطوير الذكاء الاصطناعي يتطلب تصنيفًا بشريًا للبيانات لأغراض التدريب.
- العثور على أفراد ماهرين لإدارة تصنيف مجموعات بيانات محددة وإدارتها يمثل تحديًا.
- الفكرة تم تنفيذها بنجاح من قبل شركة تُدعى Scale AI، كما يتضح من قدرتهم على إيجاد ملاءمة للمنتج في السوق.
- الخدمات المركزية مثل Scale AI تثير مخاوف لأن المؤسسات يجب أن ترسل بياناتها إلى شركة التصنيف، التي تقوم بعد ذلك بالاستعانة بملصقين بشريين عالميًا. بعد عملية التصنيف، تعيد الشركة البيانات المصنفة إلى المؤسسة، مما يتسبب في فقدان السيطرة على بيانات التدريب القيمة التي قد تستخدمها شركة التصنيف لتدريب نماذجها الخاصة. لذا يبدو أن لامركزية هذه الخدمة حل منطقي.
- وجدنا عددًا قليلًا جدًا من المشاريع في مجال التطبيقات اللامركزية (dApp) التي تعمل على هذه الفكرة، مما يوفر لنا فرصة للابتكار والريادة في هذا المجال.
لتقليل التعقيد، قررنا أن يدعم “ملصق قريب” بيانات الصور فقط في الوقت الحالي.
التقديم
بعد اختيار الفكرة وبدء الهاكاثون رسميًا، بدأ صديقي وأنا في بناء “ملصق قريب”. عملنا على مشروعنا لمدة شهرين حتى قدمنا النسخة النهائية من مشروعنا إلى Devpost في 24 نوفمبر 2022. قدمنا مشروعنا على Devpost وأنشأنا أيضًا نسخة من تقديمنا على Github. لا يغطي هذا المدونة كل الجوانب التقنية وعملية التطوير لـ “ملصق قريب”. مع العلم بذلك، لتعرف المزيد عن كيفية عمل “ملصق قريب” أو لعرض تقديمنا النهائي، يرجى زيارة أحد الروابط التالية:
يتكون “ملصق قريب” من قاعدتي شفرة: ln-researcher و ln-labeler. هاتان القاعدتان مفتوحتان بالكامل تحت رخصة MIT ويمكن الاطلاع عليهما من خلال الروابط التالية:
إليك نظرة عامة عامة على كيفية عمل “ملصق قريب” (LN):
يحتاج الباحث إلى صور مصنفة لتدريب نموذج الذكاء الاصطناعي الخاص به. لتحقيق ذلك، يستخدم الباحث LN لاستضافة بياناته وتوفير وسيلة للملصقين لتصنيف بياناته. يتم ذلك من خلال ln-researcher، خدمة ويب مستضافة ذاتيًا تتكون من API، وعقود الباحث الذكية، وقاعدة بيانات Postgres محلية. بالنسبة للملصق، يتم توفير واجهة ويب (كان من المفترض أن تكون) تمكنه من الوصول إلى صور الباحث وتصنيفها. خلال عملية التصنيف، تُصنّف كل صورة ثلاث مرات من قبل ملصقين مختلفين. يُكافأ فقط الملصق الذي يقدم أفضل التصنيفات، وفقًا لنظام تصويت، بعملات NEAR. التطبيق الويب المسؤول عن هذه العملية يُدعى ln-labeler. يمول الباحث كل عملية تصنيف، ويمكن تحويل عملات NEAR بسهولة إلى دولارات عبر Coinbase. جميع لوجستيات المعاملات تُدار بواسطة العقود الذكية المستضافة على بلوكتشين بروتوكول NEAR.
يمكنك مشاهدة فيديو العرض التوضيحي لـ “ملصق قريب” للهاكاثون هنا:
أكبر إنجاز
الميزة التي أفخر بتنفيذها هي دالة تُدعى getImage(). هذه الدالة تعمل كنقطة نهاية API في ln-researcher وتلعب دورًا حاسمًا في خط أنابيب البيانات بين الباحثين والملصقين في “ملصق قريب” (LN).
تمكن هذه نقطة النهاية الباحثين من توزيع صورهم بأمان وموثوقية للتصنيف. تُدار مهام التصنيف عبر عقود ذكية على بلوكتشين بروتوكول NEAR بينما تُستضاف بيانات الصورة من قبل الباحث عبر ln-researcher.
تُجري نقطة النهاية سلسلة من الفحوصات الأمنية لضمان أن الملصق المعين فقط هو من يمكنه الوصول إلى الصورة. يشمل ذلك التحقق من توقيع الطلب وفحص العقد الذكي المرتبط لتأكيد وجود المهمة وتعيينها للملصق الطالب.
بعد التحقق من الطلب في API الخاص بـ ln-researcher المستضاف ذاتيًا، تسترجع الدالة الصورة من قاعدة بيانات Postgres المحلية، تشفر الصورة، وتُسلمها إلى الملصق المخول الذي يمكنه بعد ذلك فك تشفير الصورة للتصنيف. في الوقت نفسه، تُحدّث الدالة حالة الصورة في قاعدة البيانات، مشيرة إلى تقدم عملية تصنيف الصورة. خلال هذه العملية، تُستخدم مفاتيح RSA من كل من الباحث والملصق للمصادقة، وتُستَخدم تشفير AES لتشفير الصورة.
تلعب هذه النقطة دورًا حيويًا في إدارة توزيع الصور بأمان وتحكم من الباحثين إلى الملصقين. إنها تضمن نقلًا آمنًا للبيانات وتتابع وتدير عملية تصنيف الصور بفعالية. بالإضافة إلى ذلك، يمكن لهذه العملية أن تُلغي الحاجة لاستخدام HTTPS، على الأقل لهذه النقطة.
تم اختبار هذه النقطة/الدالة وإثبات فعاليتها. أدناه مخطط يوضح الوظيفة العامة لـ “ملصق قريب”، بما في ذلك توضيح واضح لكيفية عمل النقطة/الدالة المذكورة:
النتيجة
Regrettably, the sad reality is that we were unable to fully complete this project by the hackathon’s deadline. Most of the project was completed, such as the ln-researcher, but the frontend (ln-labeler) was not completed and we were not able to deploy a live demo. Though the backend (ln-researcher) was basically completed, with no properly working frontend and no live demo, no one was able to try out the idea of Labeler NearBy. Not only that, but the judges were not able to try out the project and instead had to read the submission, go though the code, and/or try to run it themselves. Which made our chances of winning go down to basically zero percent. This was confirmed on December 15, 2022 when the hackathon winners were announced, and we were not among them.
الخسارة
لن أخفي حقيقة أن النتيجة النهائية لهذا الهاكاثون كانت محبطة. تم استثمار أشهر في هذا المشروع وكان لدي رؤية كبيرة لهذا المشروع لأنني اعتقدت أنه سيوفر أداة مفيدة جدًا للباحثين.
لدي معيار واضح للمشاريع التي أقوم بها: إما أن تنجح أو تفشل؛ لا يوجد وسط. لذا كان هذا المشروع فشلًا لأنه لم يكتمل بالكامل قبل الموعد النهائي وظل غير متاح للمستخدمين المحتملين.
لكن من المهم أن نتذكر أن الفشل جزء طبيعي من الحياة. تُبنى نجاحاتنا على الدروس التي نتعلمها من فشلنا. بينما كانت نتيجة هذا الهاكاثون محبطة، فقد قدمت رؤى قيمة عندما يتعلق الأمر بتطوير وبناء مشروع/منتج.
الدروس المستفادة
الدروس الرئيسية التي استخلصتها من هذه التجربة هي التالية:
- المشروع الذي اخترناه كان يتطلب الكثير من الميزات المبنية مسبقًا قبل أن نتمكن من التكرار عليه. ماذا أعني بذلك؟ حسنًا، هذا المشروع كان يتطلب بناء تقريبًا جميع مكونات الفكرة قبل أن نتمكن حتى من اختبار الفكرة. كان من المنطقي أكثر اختيار مشروع يحتوي على مكونات أساسية أقل لتشغيله. بذلك، كان بإمكاننا بناء المكونات الأساسية بسرعة أكبر ثم التكرار على المشروع في وقت أقرب. بذلك، كان بإمكاننا الوفاء بالموعد النهائي بسهولة أكبر وإنشاء مشروع قد يكون أبسط لكنه أكثر اكتمالًا. شركة YC، مسرّعة الشركات الناشئة التقنية، تؤكد أنه يجب عليك أطلق بسرعة، تواصل مع المستخدمين، وكرر. كان ينبغي علينا فعل ذلك مع مشروعنا لهذا الهاكاثون.
- قللنا من تقدير المدة التي سيستغرقها بناء هذا المشروع. كان هذا أول هاكاثون لنا وكانت المرة الأولى التي نصنع فيها تطبيقًا لامركزيًا (dapp). ليس ذلك فحسب، بل كنت أعمل بدوام كامل كمهندس برمجيات وصديقي كان يكمل درجة الماجستير. ومع ذلك، ظننا أن شهرين سيكونان كافيين. كان من المنطقي أكثر تقليل نطاق المشروع و/أو العثور على عضو فريق إضافي يمكنه تقليل عبء العمل لدينا.
- وصف ونستون تشرشل شهيرًا: “الكمال هو عدو التقدم”. كنت أتعامل مع هذا المشروع كمنتج من الأعمال إلى العملاء (B2C)، بينما في الواقع كان مجرد مشروع هاكاثون وفي أقصى حد منتجًا قابلاً للحد الأدنى (MVP). لذا في المراحل الأولى، أضعت الكثير من الوقت على تفاصيل صغيرة بينما كان ينبغي أن أركز وقتي على جعل الميزات الأساسية تعمل بشكل كافٍ.
بالإضافة إلى هذه الدروس القيمة، اكتسبت مهارات جديدة أثبتت قيمتها في مشاريعي الجانبية الشخصية ومساعيّ المهنية. تشمل هذه المهارات:
- تطوير واجهات برمجة التطبيقات (APIs) باستخدام Node.js، JavaScript، وExpress.js
- إعداد واستخدام PostgreSQL لإدارة البيانات
- دمج PostgreSQL في تطوير واجهات برمجة التطبيقات باستخدام حزم مثل PG.
- استخدام RSA (تشفير غير متماثل) وAES (تشفير متماثل) لتعزيز أمان البيانات.
الخلاصة
بشكل عام، أنا سعيد بأننا شاركنا في هذا الهاكاثون، رغم خيبة الأمل في النتيجة النهائية. أنا ممتن للدروس والمهارات القيمة التي اكتسبتها أثناء العمل على Labeler NearBy، لأنها جعلتني مطورًا أفضل وساهمت بشكل كبير في تطوير مشروعي التالي: Notify-Cyber.
ملاحظات أخرى
- قد أعود إلى Labeler NearBy، لكن في الوقت الحالي، هذا المشروع في “استراحة طويلة”
- حاليًا، يجب أن يعمل Labeler NearBy فقط في شبكة اختبار NEAR. يحتاج إلى مزيد من التطوير والاختبار والتدقيق.