هجمات التأخير هي إجراءات ضارة تحاول منع بروتوكول القيمة المحتسبة من إحراز تقدم. إنهم لا يهاجمون سلامة البروتوكول، أي أنهم لا يحاولون فرض تأكيد نتيجة غير صحيحة. وبدلاً من ذلك، فإنهم يهاجمون حيوية البروتوكول من خلال محاولة منع أو تأخير تأكيد أي نتائج على الإطلاق.
يمكن أن تكون هذه المشكلات خفية، ولكي نكون صادقين، فإن مصممي البروتوكولات غالبًا لا يحبون التحدث عنها. لكن كل نظام من أنظمة الطبقة الثانية، سواء كان نظامًا Optimistic أو ZK أو غيره، يحتاج إلى التعامل مع الأسئلة المتعلقة بالتأخير وتقدم البروتوكول.
تتناول هذه المقالة مشكلة هجوم التأخير، وتناقش كيفية معالجتها في الإصدارات المختلفة من بروتوكول مجموعة Arbitrum.
ما هي هجمات التأخير؟
في الهجوم المؤجل، يعمل طرف ضار (أو مجموعة من الأطراف) ضمن بروتوكول التجميع، متبعًا إستراتيجية مصممة لمنع أو تأخير تأكيد النتائج مرة أخرى إلى سلسلة الطبقة الأولى.
ويختلف هذا عن هجوم رفض الخدمة، حيث يحاول المهاجم منع اتخاذ أي إجراء في البروتوكول. على النقيض من ذلك، تستمر إجراءات الهجوم في حدوث تأخير، لكن المهاجم يتصرف بطرق تمنع أو تؤخر تأكيد النتائج (أي تأخير عمليات سحب الأصول إلى الطبقة الأولى) وإجبار المدققين الصادقين على حرق الغاز.
سيتطلب أي بروتوكول تراكمي -rollup- معقول من الجهات الفاعلة عمل stake لعملاتة لإثبات حصتة، بحيث يفقد المهاجم المؤجل بالضرورة حصة واحدة أو أكثر. وسنفترض هنا أن المهاجم على استعداد للتضحية بحصصه، في حدود معينة، سعيًا وراء هجومه.
سنفترض أيضًا، بشكل متحفظ، أن المهاجم لديه ميزة في الحصول على معاملاته عبر السلسلة، بحيث عندما يتسابق المهاجم مع أطراف صادقة للحصول على معاملة عبر السلسلة أولاً، سيفوز المهاجم دائمًا.
أخيرًا، سنفترض أن المهاجم يمكنه فرض رقابة على الوصول إلى سلسلة الطبقة الأولى الأساسية لاستبعاد المعاملات المجمعة، ولكن لفترة محدودة فقط، والتي نطلق عليها “فترة التحدي”. وعلى وجه الخصوص، يمكن للمهاجم تمكين وتعطيل “وضع الرقابة” الافتراضي. عند تمكين وضع الرقابة، يتمتع المهاجم بالتحكم الكامل في المعاملات التي يمكن أن تصل إلى المستوى 1. ومع ذلك، لا يمكن للمهاجم تفعيل وضع الرقابة إلا لفترة تحدي واحدة فقط. (نفترض أن أي مجموعة من فترات وضع الرقابة التي تصل إلى أكثر من فترة تحدي واحدة ستؤدي إلى استجابة اجتماعية من مجتمع الطبقة الأولى لإحباط محاولة الرقابة.)
تقييم البروتوكولات ضد هجوم التأخير
في تقييم البروتوكولات، يمكننا أن نطرح ستة أسئلة:
هل يحتوي البروتوكول على آلية مقاومة الاحتيال على الإطلاق؟ (إذا لم يكن الأمر كذلك، فإن هجمات التأخير تكون موضع نقاش لأن المشاركين لا يستطيعون تأخير تأكيد أي نتائج – ولا حتى النتائج الاحتيالية).
هل هناك عامل مركزي أو مُثبِّت يمكنه منع التقدم ببساطة عن طريق التوقف، أو عن طريق حجب البيانات؟ إذا كان الأمر كذلك، فإن هذا الطرف يمكن أن يسبب تأخيرا لا نهاية له.
هل يوفر البروتوكول ضمانة غير موثوقة لتحقيق التقدم في نهاية المطاف؟ وبعبارة أخرى، هل يمكن لمشارك واحد نزيه أن يفرض التقدم في نهاية المطاف، بغض النظر عما يفعله المهاجمون؟
إذا كان البروتوكول يضمن تقدمًا غير موثوق به، فما هو الحد الأعلى للتأخير الذي يمكن أن يسببه المهاجم؟
كيف يتم تحديد حجم تكلفة المهاجم مع طول التأخير الناتج؟
كيف يمكن قياس التكلفة الإجمالية للاستجابة من قبل الأطراف الصادقة؟
مع وضع هذه المعايير، دعونا نقيم نسختين تاريخيتين من بروتوكول Arbitrum التراكمي.
البروتوكول 1: بروتوكول الورقة الأكاديمية
استخدمت الورقة الأكاديمية لعام 2018 حول Arbitrum البروتوكول التالي تقريبًا (متجاهلة الوضع الإجماعي غير ذي الصلة هنا). يمكن لأي جهة معنية تأكيد نتيجة مقترحة، وهو ما سنسميه تأكيدًا. خلال فترة زمنية، يمكن لأي مجموعة فرعية من أصحاب المصلحة الآخرين أن تتحدى التأكيد، وسيتعين على المُؤكد الدفاع عن تأكيده ضد كل منافس، منافسًا واحدًا في كل مرة. في نهاية كل تحدي، يخسر الطرف الخاسر حصته.
(لاحظ أنه من الضروري السماح للعديد من أصحاب المصلحة بمعارضة التأكيد، وإعطاء كل منافس فرصته الخاصة للتغلب على التأكيد. وهذا ضروري لأن الطرف الخبيث يمكن أن يخسر عمدًا التحدي الذي “كان ينبغي” أن يفوز به. إن منح كل منافس تحديًا منفصلاً يضمن أن يتمكن منافس صادق من هزيمة تأكيد غير صحيح، بغض النظر عن عدد الأطراف الخبيثة التي تخسر التحديات عمدًا.)
إذا لم يكن هناك أي تحدي، أو إذا فاز المُؤكد بكل تحدي، فسيتم تأكيد التأكيد وسيتحرك البروتوكول للأمام. ولكن إذا خسر المُؤكد أيًا من الاعتراضات، فسيتم رفض تأكيده وستعود حالة البروتوكول إلى الحالة التي كانت موجودة قبل إجراء التأكيد.
تقييم
يحتوي هذا البروتوكول على أدلة احتيال فعالة. لا يضمن هذا البروتوكول التقدم، لأن المشارك الخبيث يمكنه تقديم تأكيدات غير صحيحة إلى ما لا نهاية، والتضحية بحصة في كل مرة ولكن يؤدي إلى دورة لا نهاية لها من نفس التأكيد الذي يتم تقديمه ورفضه، مما يؤدي إلى التراجع المستمر وعدم إحراز تقدم.
البروتوكول الثاني: fork-and-prune
يعمل بروتوكول Arbitrum الحالي – والذي تم نشره على كل إصدار من Arbitrum منذ عام 2020 – على تحسين البروتوكول السابق من خلال تقديم التفرع. تتمثل الفكرة في السماح للعديد من أصحاب المصلحة بتقديم تأكيدات متنافسة، والتعامل مع التأكيدات المتنافسة على أنها تفرع للسلسلة. ثم تقوم سلسلة من التحديات بوضع الفروع في مواجهة بعضها البعض وفي النهاية تقليم جميع الفروع باستثناء فرع واحد، مما يسمح بتأكيد الفرع الوحيد المتبقي.
ضبط الوقت يعمل على النحو التالي. تتتبع كل كتلة تراكمية في السلسلة الطابع الزمني عندما تم إنشاء طفلها الأول (أي الوريث) بواسطة أحد المشاركين. يمكن لأصحاب المصلحة الآخرين إنشاء أطفال إضافيين. يدعي كل تأكيد طفل ضمنيًا أن جميع إخوته الأكبر سنًا غير صحيحين.
يُطلب من صاحب المصلحة الذي يقوم بإنشاء تأكيد أن يراهن عليه، ويتوفر لدى أصحاب المصلحة الآخرين خيار الرهان عليه أيضًا.
إذا كان اثنان من أصحاب الرهان يراهنون على تأكيدات شقيقة، ولم يكن أي من الطرفين في تحدي بالفعل، فيمكن بدء التحدي بين اثنين من أصحاب الرهان، حيث يدافع صاحب الرهان على الأخوين الأكبر عن صحة ذلك الأخ الأكبر، في حين أن صاحب المصلحة الآخر يتحدى هذا الصواب. صاحب الرهان الذي يخسر التحدي يخسر حصته ويتم إزالته من مجموعة أصحاب الرهان.
يتضمن هذا البروتوكول مواعيد نهائية للعمل. أولاً، الموعد النهائي لإنشاء تأكيدات فرعية لأحد الوالدين هو فترة تحدي واحدة بعد إنشاء الطفل الأول. ثانيًا، الموعد النهائي للتثبيت على التأكيد هو فترة تحدي واحدة بعد إنشاء هذا التأكيد.
إذا انقضى الموعد النهائي للتأكيد، ولم يكن هناك أي مساهمين في هذا التأكيد، فسيتم تشذيب التأكيد. (لا بد أن واحدًا أو أكثر من أصحاب المصلحة قد راهنوا هناك في الماضي، ولكن لا بد أنهم جميعًا خسروا التحديات). يتم أيضًا تقليم أي أطفال أو أحفاد أو غيرهم من أحفاد التأكيد المقطوع في نفس الوقت.
إذا كان التأكيد أقدم من فترة تحدي واحدة وليس له أي إخوة غير منقحين، فيمكن تأكيد هذا التأكيد، وهو ما يمثل التقدم في البروتوكول.
تقييم
يحتوي هذا البروتوكول على أدلة احتيال فعالة. لا يوجد عامل مركزي أو مُثبت يمكنه منع التقدم، لذلك يمكن لأي مشارك فرض التقدم. لفرض التقدم، يمكن للمشارك الصادق أن ينشر طفلًا صحيحًا، إذا لم يكن موجودًا بالفعل. بعد ذلك، سوف يمر وقت محدود قبل أن يضمن الموعد النهائي عدم إمكانية إنشاء المزيد من الأشقاء وعدم تمكن المزيد من أصحاب المصلحة من المراهنة على الأشقاء الموجودين. من تلك النقطة فصاعدًا، سيشارك المراهن الصادق في سلسلة من التحديات، حيث يهزم ويزيل الأطراف التي تم الرهان عليها بشكل غير صحيح، كل طرف على حدة. (إذا تم الرهان على عدة أطراف نزيهة، فيمكنهم هزيمة الخصوم بالتوازي.) بمجرد إزالة جميع هذه الأطراف، يمكن تأكيد التأكيد الفرعي الصحيح.
إن الهجوم المؤجل الأكثر فعالية ضد هذا البروتوكول هو وجود شخص خبيث يقوم بعمل stake على شقيق غير صحيح،و N-1 يقومون بعمل stake على الأخ الصحيح. بغض النظر عن عدد المراهنين الصادقين على الأخ الصحيح، سيكون المهاجم قادرًا على ترتيب مشاركة المراهن بشكل غير صحيح في تحديات ضد حلفائه قبل الانخراط في تحديات ضد الأطراف الصادقة. (وهذا يفترض، على نحو متشائم، أن المهاجم قادر دائما على الدخول في المعاملات قبل أن تتمكن الأطراف الصادقة من ذلك). وسوف يخسر المتحالفون أيضا تحدياتهم عمداً، ويستغرقون أطول وقت ممكن للقيام بذلك. (نظرًا لقواعد التأخير، قد يستغرق ذلك فترة تحدي واحدة أو اثنتين لكل اتحاد.). فقط بعد أن يضحي جميع اتحادات N-1 بأنفسهم، سيُطلب من المراهن بشكل غير صحيح خوض تحدي ضد حزب نزيه، والذي سيفوز به الطرف الصادق، مما يؤدي في النهاية إلى القضاء على الذي قام بعمل stake بشكل غير صحيح.
يحقق هذا الهجوم الأخير تأخيرًا لفترات التحدي N تقريبًا، على حساب المهاجم حصص N.
إن التكلفة التي تتحملها الأحزاب النزيهة، في مواجهة هذا الهجوم، خطية في عدد الأحزاب النزيهة، لأن كل حزب نزيه سيحتاج إلى المشاركة قبل الموعد النهائي للتحصيل.
ملخص:
– يضمن التقدم
– تكلفة الهجوم خطية في التأخير الناتج
– التكلفة التي تتحملها الأطراف الصادقة خطية في عدد الأطراف الصادقة
التحقق من الصحة المسموح به
إن خصائص الهجوم المتأخر للبروتوكول 2، والتي يتم نشرها حاليًا على Arbitrum، هي السبب وراء اختيارنا قصر دور المدقق مؤقتًا على مجموعة مصرح بها من الأطراف بدلاً من جعل التحقق لا يتحاج لتصريح به بالكامل. يتطلب اتخاذ الخطوة الأخيرة للتحقق من الصحة بدون إذن إصدار بروتوكول يتمتع بأقصى قدر من المقاومة لهجمات التأخير. وربما كنت قد خمنت بالفعل وجود إصدار من هذا البروتوكول ونحن نعمل حاليًا على تنفيذه.
قريبا: البروتوكول 3
هذه المشاركة طويلة جدًا بالفعل، لذا لن أقدم الشرح الكامل للبروتوكول الجديد – سيكون ذلك منشورًا مستقبليًا.
ولكن هنا هو الجوهر. يقوم الإصدار التالي من بروتوكول Arbitrum بإجراء بعض التغييرات الصغيرة ولكن (على ما أعتقد) مميزة على كيفية عمل التأكيدات والتحديات، بحيث يمكن لهجوم التأخير الأسوأ
بحيث يمكن أن يتسبب هجوم التأخير الأسوأ في حدوث فترة تحدي واحدة فقط من التأخير، بغض النظر عن عدد المخاطر التي يرغب المهاجمون في تنفيذها لتخسر.
يعتمد هذا على تفاني تقني من فريق أبحاث Arbitrum الذي يجعل التحديات الشاملة ممكنة وفعالة. يتيح ذلك لمنفذ واحد صادق أن يهزم بكفاءة جيشًا من المهاجمين الذين نشروا غابة من التأكيدات المتفرعة الخبيثة.
تم تحديد البروتوكول الجديد بالكامل ويتم تنفيذه الآن. بالطبع لن نقوم بنشره على الشبكة الرئيسية حتى يتم اختباره بدقة وتدقيق الكود.
في مقال مستقبلي، سأتعمق في البروتوكول الجديد.