تطوير برنامج لتأجير السكوتر اللامركزي. من قال أنه سيكون من السهل؟

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



كيف بدأ كل شيء


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

لقد أعجب أصحاب المصلحة بهذه الفكرة كثيرًا ، وقرروا تحويلها إلى نموذج أولي للعرض في المعارض. بعد العديد من العروض الناجحة في Mobile World Congress و Bosch Connected World في 2019 ، تقرر اختبار تأجير السكوتر على المستخدمين الحقيقيين ، العاملين في Deutsche Telekom. لذلك بدأنا في تطوير MVP كامل.

عكاز بلوكشين


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

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



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

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

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

كل هذا يقودنا إلى هذا الهيكل. أوافق ، إنه مختلف تمامًا عما خططنا.



Ace up your sleeve: الهوية الذاتية للسيادة


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

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

أثار الجهاز مشاكل


لم نقم بتنفيذ الهوية الذاتية للسيادة بمفردنا ، لأن هذا يتطلب خبرة في التشفير ووقتًا طويلاً. بدلاً من ذلك ، استفدنا من منتج شركائنا Jolocom ودمجنا محفظتهم وخدماتهم المحمولة في منصتنا. لسوء الحظ ، هذا المنتج له عيب كبير: لغة التطوير الرئيسية هي Node.js.

مثل هذا المكدس التكنولوجي يحدنا كثيرًا في اختيار الحديد المدمج في سكوتر. لحسن الحظ ، في بداية المشروع ، وقع اختيارنا على Raspberry Pi Zero ، واستفدنا من الحواسيب الصغيرة الكاملة. هذا سمح لنا بتشغيل Node.js الضخمة على سكوتر. بالإضافة إلى ذلك ، حصلنا على المراقبة والوصول عن بُعد عبر VPN باستخدام أدوات جاهزة.

أخيرا


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

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

All Articles