استكشاف أعماق هوني بوت: تطبيق لامركزي متفائل
Nasser
2023-10-10
CARTESI
مرحبًا بك في هوني بوت، وهو مسعى مثير للاهتمام يجسد جوهر تجميعات البيانات المتفائلة الخاصة بالتطبيقات.
من الجهة التقنية، يعمل هوني بوت ضمن إطار تجميعي متخصص مصمم خصيصًا لتطبيق لامركزي واحد. وهو يعمل بشكل مستقل عن التطبيقات اللامركزية الأخرى، مما يمنحه المرونة اللازمة للتخصيص الكامل. يحمل هوني بوت أهمية لأنه يدل على جاهزية تجميعات كارتيزي للشبكة الرئيسية، مما يشير إلى أن البنية التحتية بأكملها مهيأة لدعم إنشاء تجميعات إضافية خاصة بالتطبيقات. وبعيدًا عن مظهره باعتباره مجرد تحدي قرصنة، فهو بمثابة مقدمة لعصر جديد من تطبيقات البلوك تشين المتخصصة. تحت مظهرها الخارجي المرح، يلعب هوني بوت عدة أدوار حاسمة:
1. إنه بمثابة ساحة مبهجة للمخترقين والمطورين لعرض مهاراتهم ومحاولة تحدي أمان النظام.
2. يضع معيارًا ماليًا لتقييم الحد الآمن للأصول التي يمكن تخزينها بشكل آمن ضمن هذه البنية التحتية الجديدة.
3. يعمل كمبادرة مفتوحة المصدر لاصطياد الأخطاء، حيث تقدم دعوة إلى مجتمع مشروع كارتيزي الأوسع لفحص الكود الأساسي وتدقيقه وتعزيزه.
في هذه المقالة، سوف نتعمق أكثر في الأعمال الداخلية لهذا التطبيق المبتكر، ونحلل التعليمات البرمجية التي تقود وظائفه، ونكشف عن افتراضات الثقة التي تعتبر جزءًا لا يتجزأ من بنيته التحتية. لذا، اربطوا أحزمة الأمان الخاصة بكم للقيام برحلة استكشافية مثيرة في هوني بوت الجذاب هذا!
توفر البيانات والتزامات جذر الحالة وأصولها
عندما يتعلق الأمر بالتفاعل مع التجميعات بسلاسة، فمن الضروري التعمق في الجوانب الدقيقة، مع التركيز بشكل خاص على توفر البيانات والتزامات جذر الحالة وإدارة الأصول. للتوضيح، دعونا نتعمق في هذه الأسئلة الأساسية:
1. تخزين البيانات وتوافرها:
- كيف يتم تخزين البيانات، وما هي التدابير التي تضمن توفرها بدقة عند الحاجة إليها؟
2. موقع الأصول والتحكم فيها:
- أين توجد الأصول ومن يملك سلطة السيطرة عليها؟
3. التزامات الحالة الجذرية:
- متى وأين يتم نشر الالتزامات الجذرية للحالة، وما هي الحالة التي تمثلها؟
من المهم ملاحظة أنه عند مناقشة عمليات التجميع الخاصة بالتطبيقات، قد تتباين الردود على هذه الاستفسارات بين التطبيقات التي تشترك في نفس البنية الأساسية للتجميعات. على سبيل المثال، قد تختار التطبيقات المستندة إلى كارتيزي تخزين بياناتها على الايثريوم ولكنها تختار نشر التزاماتها الجذرية على Optimism. وبدلاً من ذلك، قد يضمنون توفر البيانات على Syscoin مع الحفاظ على الأصول على الايثريوم.
الآن، دعونا نركز اهتمامنا على تطبيق هوني بوت اللامركزي، مع الأخذ في الاعتبار أن هذه التكوينات تعكس الاختيارات المتعمدة التي قام بها مطوروه. يعتبر تطبيق هوني بوت اللامركزي بمثابة تطبيق أصلي من طبقة الثانية للايثريوم، ويقدم الإجابات التالية على الأسئلة المطروحة:
- جميع تفاعلات البيانات مع تطبيق هوني بوت اللامركزي تنشأ من معاملات الايثريوم القياسية. يتم إرسال هذه المعاملات إلى عقد محدد، والذي سنستكشفه بشكل أكبر في قسم "البنية التحتية / كود SDK". الأهم من ذلك، على الرغم من أن المدخلات تظهر كبيانات اتصال، إلا أنها في الواقع يتم تخزينها كتجزئة داخل البلوك تشين. يتيح هذا النهج مجالًا لحل النزاعات المحتملة في المستقبل.
- الأصول الخاضعة لسلطة هوني بوت تدخل وتبقى ضمن نظام الايثريوم البيئي. يتم تسهيل هذه الإدارة من خلال استخدام البوابات، وهو مفهوم سنوضحه في القسم القادم.
- فيما يتعلق بالتزامات جذر الحالة، فهي بالفعل تجد مكانها في الإيثريوم أيضًا. يتم تكليف المدقق الذي تم اختياره أثناء نشر هوني بوت بالنشر الدوري لهذه الالتزامات. وتتكون هذه الالتزامات، التي يشار إليها غالبا بالمطالبات، من ثلاثة عناصر متكاملة:
1. الحالة الكاملة لجهاز التطبيق اللامركزي (DApp)، بما في ذلك جميع المدخلات التي تم أخذها في الاعتبار في الحساب.
2. مجموعة من القسائم، تمنح الإذن بتنفيذ الإجراءات على البلوك تشين الأساسي (في هذه الحالة، الايثريوم). يمكن أن تتضمن القسيمة التوضيحية إجراءات مثل إضافة السيولة إلى حوض Uniswap.
3. مجموعة من الإشعارات، وهي عبارة عن بيانات يمكن التحقق منها على السلسلة وصادرة عن تطبيق هوني بوت اللامركزي. قد يكون أحد أمثلة الإشعار هو تلخيص الأوضاع المالية للتطبيق اللامركزي بعد آخر تخصيص له.
في سياق تطبيق هوني بوت اللامركزي، يستلزم الاختراق الناجح إما خداع التطبيق اللامركزي لإنشاء قسيمة تمكن من سرقة الأصول أو تنفيذ قسيمة لم يقم التطبيق اللامركزي بإنشائها. سنتعمق أكثر في القسائم والتزامات الحالة والمواضيع ذات الصلة في الأقسام اللاحقة.
التحقق من الصحة وقابلية الترقية وحل النزاعات
يعد فهم تعقيدات التحقق أمرًا بالغ الأهمية عند التعامل مع النظام البيئي للتجميعات. تعمل سلاسل التطبيقات (appchains) كوسيلة فعالة لتعظيم افتراضات الثقة، حيث يضمن الاعتماد على مدقق صادق واحد على الأقل (ربما حتى المستخدم نفسه) التنفيذ الدقيق للتطبيق اللامركزي، كل ذلك بفضل بروتوكول حل النزاعات.
يقوم نظام حوسبة كارتيزي، المعروف سابقًا باسم Descartes، بتشغيل نظام تحكيم وظيفي مكون من طرفين. استكشفت الأبحاث الأكاديمية الحديثة إمكانية تحويل نظام الحوسسبة هذا إلى نظام بدون اذن (nxn)، مقاوم لهجمات التأخير. يمثل دمج هذا الابتكار في إنشاء آلية وظيفية لحل النزاعات، بدلاً من تعديل نظام الحوسبة لعمليات التجميع، تحديًا مستمرًا يعالجه مختلف المساهمين داخل النظام البيئي.
وبالنظر إلى تطبيق هوني بوت، فقد بدأ إطلاقه بموجب نظام التحقق من السلطة، وذلك قبل إنشاء آلية حل النزاعات. ضمن هذا الإعداد، يتمتع عنوان واحد بسلطة حصرية لتحديد الحقيقة. بينما يمكن لأي شخص تشغيل تطبيق هووني بوت اللامركزي والتدقيق في نزاهة المدقق، لا توجد حاليًا طريقة ثابتة لمواجهة سوء السلوك المحتمل، باستثناء التعبير عن المعارضة. ولذلك فإن التعامل مع اللعبة في وضعها الحالي يتطلب الثقة في التزام السلطة بالبروتوكول والالتزام بالنزاهة.
فيما يتعلق بقابلية الترقية، يشكل هذا الجانب تعقيدات أقل فيما يتعلق بالتجميعات الخاصة بالتطبيقات مقارنةً بمجموعات آلة كارتيزي الافتراضية (EVM) المشتركة. تسمح مجموعة أدوات تطوير البرامج (SDK) الخاصة بتجميعات كارتيزي للتطبيقات بتعيين الكيانات التي تتمتع بامتيازات الترقية، والتي قد تكون حتى التطبيق نفسه. في حالة هوني بوت، اختار المطورون أسلوبًا غير قابل للترقية
البنية التحتية وتنفيذ SDK
قد تبدو عملية إنشاء تجميعات خاصة بالتطبيق في البداية أمرًا شاقًا، حيث قد يبدو من الضروري تطوير كل شيء من البداية لكل عملية نشر. ومع ذلك، كما أشرنا خلال هذه المقالة، هذا هو بالضبط المكان الذي تأتي فيه SDK الخاصة بتجميعات كارتيزي للإنقاذ.
يتضمن إنشاء تجميعات خاصة بالتطبيق باستخدام كارتيزي نوعين متميزين من التعليمات البرمجية: التعليمات البرمجية العامة والقابلة لإعادة الاستخدام والمشتركة؛ والكود الخاص بالتطبيق. يمكّن هذا النهج الاستراتيجي المطورين من الاستفادة من الوظائف المشتركة مع تصميم جوانب فريدة لتناسب تطبيقاتهم المحددة.
في هذا القسم، هدفنا هو تقديم نظرة عامة على المكونات الأساسية والإشارة إلى الكود الذي يتناول المواضيع التي ناقشناها سابقًا. على الرغم من أنه ليس من الممكن الخوض في كل التفاصيل هنا، إلا أن كنزًا من المعلومات متوفر في الوثائق الشاملة وملفات README لأولئك الذين يتوقون إلى استكشاف المزيد.
تشتمل البنية التحتية المشتركة على ثلاثة مكونات أساسية تتفاعل بانسجام: كود علي السلسلة (On-Chain code)، وعقدة كارتيزي، وآلة كارتيزي. يلعب كل منها دورًا محوريًا في ضمان كفاءة ووظيفة تطبيق القيمة المحتسبة. وبينما نتعمق أكثر، سنسلط الضوء على كيفية تعاون هذه المكونات لتسهيل التشغيل السلس لتطبيق هوني بوت اللامركزي.
مكونات On-Chain:
يعمل الكود الموجود على السلسلة كجسر حاسم بين العناصر خارج السلسلة مثل العقدة وجهاز كارتيزي، والعقود الذكية الأخرى أو الحسابات المملوكة خارجيًا. تم تنظيم هذا المكون على شكل وحدات، حيث تتمتع كل وحدة بمسؤوليات مميزة وواجهات محددة جيدًا. للحصول على فهم شامل لهذه الجوانب، نشجعك على استكشاف الملف التمهيدي (README) وفحص العقود الذكية الموجودة في هنا.
1. توفر البيانات - عقد صندوق الإدخال:
يعد عقد Input Box أمرًا أساسيًا لضمان توفر البيانات. تم تكليف هذه الوحدة بتلقي مدخلات المستخدم المخصصة للتفاعل مع التطبيقات اللامركزية. بالنسبة لكل تطبيق لامركزي، تحتفظ هذه الوحدة بقائمة إلحاق فقط من التجزئات التي تم إنشاؤها من بيانات الإدخال والبيانات التعريفية المرتبطة بها، مثل إدخال المرسل والطابع الزمني للكتلة. يمكن الوصول إلى جميع البيانات المطلوبة لإعادة بناء التجزئة بشكل دائم عبر السلسلة، مما يضمن أن المستخدمين يمكنهم مزامنة الجهاز خارج السلسلة مع أحدث المدخلات دون الاعتماد على موفري البيانات الخارجيين. تعمل هذه الوحدة على أساس غير مسموح به، مما يسمح للآلة خارج السلسلة بتحديد صحة الإدخال. للحصول على رؤى أعمق، فكر في فحص التعليمات البرمجية الخاصة بـ Input Box على GitHub أو Sepolia Etherscan.
2. التزامات الحالة الجذرية – واجهة الإجماع وعقد السلطة:
يتطلب فهم التزامات جذر الحالة الإلمام بواجهة الإجماع وعقد السلطة. تتمثل الوظيفة الأساسية لهذه الوحدة في تقديم مطالبات صالحة للتطبيقات اللامركزية بعد التوصل إلى الإجماع. تم تصميم واجهة الوحدة عمدًا لاستيعاب نماذج الإجماع المختلفة. يتم استخراج تشفير المطالبات وتخزينها بالكامل من خلال الواجهة، بينما تتم معالجة التنفيذ من خلال عقد التاريخ. في الوقت الحاضر، ينفذ كارتيزي فقط نوعًا من الإجماع يسمى السلطة، والذي يملكه عنوان واحد يتمتع بسلطة كاملة على الإجماع. ويمثل هذا التنفيذ الأكثر مباشرة، وإن كان محدودا في قدراته. يمكنك الوصول إلى الكود الموجود في المستودع أو التحقق منه على شبكة اختبار Sepolia.
3. التحقق من صحة الإخراج وتطبيق كارتيزي اللامركزي:
تعد مكتبة التحقق من صحة المخرجات وكود تطبيق كارتيزي اللامركزي نفسه أمرًا محوريًا لفهم عواقب الالتزامات. قد يؤدي تحديد خطأ في هذا القسم إلى كشف نقاط الضعف.
4. القسائم:
تلعب القسائم دورًا كبيرًا، حيث تمكن التطبيقات اللامركزية في طبقة التنفيذ من التفاعل مع العقود في الطبقة الأساسية من خلال مكالمات الرسائل. تشتمل كل قسيمة على عنوان الوجهة والحمولة. لا يمكن تنفيذ القسيمة إلا بعد أن يرسل إجماع التطبيق اللامركزي مطالبة تتضمنها. يمكن تنفيذ القسائم بأي تسلسل، وعلى الرغم من أن عقد التطبيقات اللامركزية لا يهتم بمحتوى القسيمة، إلا أنه يفرض فحوصات السلامة قبل السماح بالتنفيذ.
5. إدارة الأصول – البوابات:
لإدارة الأصول بشكل فعال، تعد البوابات عنصرًا حاسمًا يجب فحصه. كما يوحي الاسم، تسهل البوابات النقل الآمن للأصول من الطبقة الأساسية إلى طبقة التنفيذ. تعبر هذه الأصول البوابة للتحقق ولكن يتم تخزينها في النهاية ضمن عقد تطبيق لامركزي. يتمتع مطورو التطبيقات اللامركزية بحرية استخدام هذه المعلومات وفقًا لمتطلباتهم، ومن المحتمل إنشاء محفظة لكل مستخدم في طبقة التنفيذ. وهذا يسمح بإدارة الأصول بكفاءة بتكاليف منخفضة بشكل كبير من خلال المدخلات التي يفهمها المنطق الخاص بالتطبيق.
تفاصيل نشر هوني بوت:
عندما يتعلق الأمر بنشر تطبيق هوني بوت، واختيار عنوان المدقق، وتحديد ما إذا كان قابلاً للترقية أم لا، فيجب عليك الرجوع إلى رمز مصنع تطبيق كارتيزي اللامركزي. يمكنك العثور على التفاصيل ذات الصلة هنا.
يمكن الوصول إلى كافة التعليمات البرمجية في مستودع GitHub، وبالنسبة للعقود التي تم التحقق منها على Etherscan، يمكنك الرجوع إلى ملفات النشر:
مستودع جيتب: https://github.com/cartesi/honeypot/tree/main/deployments/mainnet
عنوان إيثرسكان: https://etherscan.io/address/0x0974CC873dF893B302f6be7ecf4F9D4b1A15C366
عقدة كارتيزي:
عندما يتعلق الأمر بالتنقل في عالم التجميعات الخاصة بالتطبيقات، هناك حاجة ماسة إلى اتصال سلس بين المجالات المميزة للعقود الذكية والإطار الحسابي لآلات كارتيزي. ويتجسد هذا الرابط الأساسي في شكل برمجيات وسيطة، تعمل على تنظيم تدفق البيانات بين هذه المجالات بمهارة. تشمل الواجبات الأساسية لهذه البرامج الوسيطة استيعاب البيانات من العقود الذكية، ونقلها إلى الجهاز للمعالجة، وفي النهاية نشر النتائج مرة أخرى على البلوك تشين.
تخيل هذه البرمجيات الوسيطة كمترجم فوري في محادثة بين شخصين يتحدثان بلغات مختلفة. فهو يترجم مخرجات أحد الجانبين إلى تنسيق مفهوم للطرف الآخر، مما يضمن التواصل الفعال. تضع هذه البرامج الوسيطة، التي تعمل جنبًا إلى جنب مع آلة كارتيزي، الأساس لما نشير إليه عادة باسم عقدة كارتيزي.
سواء كنت مراقبًا حريصًا للمشهد التجميعي أو مشاركًا نشطًا، فإن عقدة كارتيزي تتولى دورًا لا غنى عنه مشابهًا لدور Geth داخل النظام البيئي لألايثريوم. فهو يجمع بين وظائف التنفيذ واسترجاع البيانات. تدفع عقدة كارتيزي حالة الجهاز خارج السلسلة إلى الأمام وتجعل الحالة الناتجة في متناول الجمهور. فهو يستهلك البيانات من البلوك تشين ويفرض تحديثات الحالة، مما يحافظ على سلامة تعديلات الحالة على السلسلة. لاستعارة مصطلحات باتريك ماكوري، فإن عقدة كارتيزي تتولى دور المنفذ.
في جوهر الأمر، سواء كنت مستخدمًا يراقب فقط حالات التجميع أو مدققًا يضمن دقة تحديثات الحالة، فإن عقدة كارتيزي بمثابة بوابتك الشاملة إلى عالم التجميعات الخاصة بالتطبيقات. فهو يدير التفاعلات المعقدة، مما يسمح لك بالتركيز على اهتماماتك أو مسؤولياتك المحددة.
استكشف الكود هنا: https://github.com/cartesi/rollups/tree/v0.9.0/offchain
آلة كارتيسي
مما لا شك فيه أن آلة كارتيزي تحتل دورًا محوريًا داخل نظام كارتيزي البيئي، حيث تقدم حلاً مبتكرًا للحسابات التي يمكن التحقق منها. تضع هذه التقنية الأساس للتطبيقات اللامركزية لتوسيع نطاقها بشكل مشابه للتطبيقات السائدة مع تعزيز قدرات مطوري التطبيقات اللامركزية.
تشمل السمات البارزة لآلة كارتيزي الاحتواء الذاتي وإمكانية التكرار والشفافية. إنهم يعملون بشكل مستقل، محصنون ضد التأثيرات الخارجية؛ أي عملية حسابية يتم تنفيذها على جهاز كارتيزي تنتج نتائج متطابقة باستمرار، بغض النظر عن المستخدم الذي يقوم بها. علاوة على ذلك، فإنها تكشف عن حالتها الكاملة، وهي مفتوحة للتدقيق الخارجي.
في تطوير البرمجيات المعاصرة، تتضمن القاعدة دمج مكونات البرامج المختلفة الموجودة مسبقًا. هذه المكونات، التي تم تطويرها والتحقق من صحتها بدقة على مدى عقود من قبل مجتمع عالمي، تتكامل بسلاسة مع سلاسل الأدوات القائمة وتعتمد على مجموعة من الخدمات التي توفرها أنظمة التشغيل الحديثة.
ومع ذلك، تنشأ العقود الذكية عادة من سلاسل أدوات متخصصة وتعمل مباشرة فوق أجهزة افتراضية مخصصة، خالية من نظام التشغيل الأساسي. يحرم هذا الإعداد المطورين من الأدوات المألوفة والقوية، مما يحد بشدة من إمكاناتهم الإبداعية ويعوق الإنتاجية بشكل كبير.
وهذا هو بالضبط المكان الذي تميز فيه شركة آلآت كارتيزي، التي تأسست على منصة RISC-V الموقرة. تتمتع منصة RISC-V بدعم قوي من مجتمع المطورين المزدهر، مما يعزز نظامًا بيئيًا برمجيًا واسع النطاق يشمل منافذ نظام التشغيل لينكس وسلسلة أدوات GNU.
من خلال نقل المكونات الأساسية لمنطق التطبيق اللامركزي للعمل داخل أجهزة كارتيزي، والاستفادة من نظام التشغيل لينكس، يمكن للمطورين التحايل على القيود والخصوصيات الخاصة بسلاسل كتل معينة. كما أنهم يتجنبون تعقيدات بنية آلة كارتيزي. يمكّن هذا التحول المطورين من استعادة إمكانية الوصول إلى الأدوات المألوفة والتي لا غنى عنها والتي تعتبر جوهرية في حرفتهم.
في جوهرها، تتمثل مهمة كارتيزي في تحرير مطوري التطبيقات اللامركزية، ومنحهم الحرية لإطلاق العنان لإبداعهم دون عوائق وزيادة إنتاجيتهم بشكل كبير. وهذا يلخص جوهر آلة كارتيزي، وهو على وجه التحديد المكان الذي يجد فيه تطبيق هوني بوت اللامركزي موطنه.
استكشف الكود هنا: https://github.com/cartesi/machine-emulator
الكود الخاص بالتطبيق: نظرة عامة مبسطة
وعلى النقيض من التفاصيل الشاملة التي تناولتها الأقسام السابقة، فإن هذا الجزء موجز ومباشر. لماذا؟ لأن العمل الثقيل قد تم إنجازه بالفعل في الأقسام السابقة.
يتم تغليف وظائف هوني بوت بدقة في ملف C++ واحد، والذي يمكنك العثور عليه هنا: honeypot.cpp. للحصول على فهم أعمق لكيفية عمل إطار العمل، يرجى الرجوع إلى وثائقنا هنا.
ربما تفكر، "انتظر لحظة، يبدو أن هذا يمثل الكثير من التعليمات البرمجية لمصيدة جذب واضحة!" - وأنت لست مخطئا. ومع ذلك، اسمحوا لي أن أقدم بعض المنظور. هذا هو التطبيق الرائد الذي يتم تطويره على البنية التحتية لكارتيزي! الطول الحالي لكود هوني بوت هو انعكاس للمرحلة المبكرة من دورة التطوير. نظرًا لأننا نقدم عناصر مثل مكتبة محفظة C++ التي تعمل على تبسيط تفاعلات البوابة وعمليات سحب القسائم، فإن كود هوني بوت المستقبلي سيتكون من بضعة أسطر موجزة فقط.
للحصول على فهم أكثر شمولاً لتطبيق هوني بوت، بما في ذلك ميزاته وإجراءات النشر، أوصي بشدة بمراجعة الملف التمهيدي التفصيلي الخاص بالمستودع. لا يوضح هذا المورد طريقة العمل الداخلية للتطبيق اللامركزي فحسب، بل يقدم أيضًا دليلاً خطوة بخطوة حول كيفية إطلاق مصيدة الجذب الخاصة بك:
https://github.com/cartesi/honeypot
لذلك، ها هي لديك! مع كارتيزي، تمت معالجة الجزء الهائل بالفعل، مما يتيح لك حرية التركيز على الكود المميز الخاص بك.
كيفية المشاركة والبقاء على اطلاع
في كارتيزي، نضع ثقتنا في قوة التعاون الجماعي والشفافية والخطاب النابض بالحياة. ستكتشف هذه العناصر على وجه التحديد في قناة ديسكورد الخاصة بكارتيزي - وهي عبارة عن تجمع ديناميكي للمساهمين الذين يقومون بالعصف الذهني واستكشاف الأخطاء وإصلاحها والتأثير على مسار مستقبل كارتيزي. تتكشف اتصالاتنا وتطويرنا وأبحاثنا أمام أعين الجمهور على هذه المنصة. علاوة على ذلك، ستجد أفرادًا متحمسين للرد على استفساراتك والمشاركة في المناقشات التي تغطي كل جانب من جوانب الهندسة المعمارية المفصلة في هذه المقالة.
لذا، إذا كنت تميل إلى التعمق في المحادثات المحفزة، أو مشاركة أفكارك، أو ربما طرح تلك الأسئلة الملحة التي ظلت عالقة في أفكارك، فلا تتردد! انضم إلينا في قناة ديسكورد. وإذا لم تكن قد قمت بذلك بالفعل، فلماذا لا تقوم بتجربة هوني بوت أثناء وجودك فيها؟