قوة التزامات النظراء

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

الفكرة بسيطة m ple: بدلاً من تحليل الالتزامات خارج blockchain ، فقط اسأل زملائك. بافتراض أنهم جميعًا صادقون ، فسوف يبلغون عن نفس القيمة ويمكنك المتابعة كما لو تم تضمينها في الكتلة. من ناحية أخرى ، إذا كانوا جميعًا يتواطئون لخداعك ، فلا توجد طريقة موثوقة لتحديد ذلك. كم عدد الأقران الصادقين المطلوبين إذن لسلامة العميل؟ لحسن الحظ ، بالنسبة لأنواع عديدة من الالتزامات ، نحصل على ضمانات قوية جدًا لنظير واحد صادق ومتجاوب.

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

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

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

بالنسبة للإدخالات غير التابعة لـ SegWit ، فإن أفضل خيار حاليًا هو تقديم المعاملة الكاملة التي ينفقها الإدخال جنبًا إلى جنب مع إثبات SPV لإدراجه في السلسلة. في حالة متوسطة ، من غير المحتمل أن يكون جمع كل المعاملات المستهلكة كمية هائلة من البيانات. ولكن في حالة الكتلة الخبيثة ، يمكن أن يكون الدليل تربيعيًا في حجم الكتلة. لقد ظهر العام الماضي ، في الواقع ، أن كتل مثل هذه كانت قادرة على تحطيم الإصدارات القديمة من Bitcoin Core من خلال استنفاد الذاكرة. ومع ذلك ، لم نفقد كل الأمل. تخيل ، إذا احتوت كتل Bitcoin فقط على التزامات Merkle منفصلة عن مخرجات معاملاتها ، فسيكون من الممكن إنشاء أدلة إدخال ذات حجم محدد. لإثبات الحساب الصحيح لرسوم المعاملة ، ستوفر العقدة الكاملة فقط أدلة Merkle لجميع المدخلات غير SegWit. لذلك اتضح أن التزامات TXO مفيدة حتى بدون الالتزام بإنفاقها!

لذا فإن التزام الكتلة الجديد (بمخرجات المعاملة) سيساعدنا في نشر نوع آخر من التزام النظراء (لرسوم المعاملات) ، وهو ما لم نرغب في القيام به كالتزام جماعي. السؤال الطبيعي التالي هو ما إذا كانت التزامات TXO نفسها بحاجة إلى أن يتم تقسيمها بسهولة إلى كتل. يمكن إنشاء شجرة Merkle فوق المخرجات من كتلة ، بدون مدخلات مساعدة ، لذلك يبدو أنها مرشح جيد لالتزامات الأقران. كما اتضح ، كانت إحدى أولى المناقشات العامة حول الالتزامات “غير الملتزمة” في رسالة بريد إلكتروني من Peter Todd إلى القائمة البريدية لـ bitcoin-dev ، “لا تحتاج التزامات TXO إلى أن تكون Soft-fork مفيدة”. في هذا السياق ، اقترح تود أن تحافظ العقد الكاملة على التزاماتها الخاصة بالبيانات المشذبة وتحدّثها ، بدلاً من العملاء الخفيفين الذين يجلبون الالتزامات من أقرانهم ويتحققون منها.

افتراض الند الواحد الصادق

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

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

علاوة على ذلك ، هناك بعض الدفاعات المنطقية ضد هجمات الكسوف. تم اقتراح العديد من الاستراتيجيات في الورقة البحثية “Eclipse Attacks on Bitcoin’s Peer-to-Peer Network” ، مثل الحد من عدد الاتصالات من خلال الشبكة الفرعية وتفضيل الاتصالات مع الأقران الأكبر سنًا. ومع ذلك ، على شبكة غير مصادق عليها مثل شبكة Bitcoin ، لا يمكن لمثل هذه الإجراءات التخفيفية أن توقف المهاجم الذي يهدد شبكة LAN الخاصة بالضحية.

مع بروتوكول المصادقة مثل BIP 150 ، يتوفر للعملاء الكثير من الخيارات. يمكنهم ، على سبيل المثال ، تكوين مجموعة من ن الأطراف شبه الموثوقة التي يعتقدون أنها لن تكون أكثر من t غير متصلة بالإنترنت أو مخترقة أو ضارة في أي وقت. طالما أنها تتطلب اتصالات مصدق عليها مع ما لا يقل عن t + 1 من نظائر تلك المجموعة من أجل المزامنة ، فلا يمكن تغذية العميل بمعلومات غير صحيحة ، حتى في وجود قسم الشبكة. على الرغم من أن هذا يبدو مركزيًا ، إلا أن كل عميل قادر على تعيين التكوين الخاص به ومستوى الثقة في أي طرف واحد منخفض جدًا. خيار آخر هو طلب عدد معين من عمليات إعادة الاتصال المصدق عليها مع أقران صادقين من الجلسات السابقة. إذا تم الإعلان عن مفاتيح المصادقة على شبكة P2P وسجلها العملاء ، فيمكنهم محاولة إعادة الاتصال بأمان ورفض المزامنة بطريقة أخرى. على الرغم من أن هذا لا يوفر أي حماية في المرة الأولى التي يتصل فيها العميل بالإنترنت ، إلا أنه يشبه الثقة عند الاستخدام الأول ، وهو نموذج أمان راسخ في SSH وعلى الويب. بشكل عام ، يعد ضمان الاتصال الجيد أمرًا ضروريًا لأي تطبيق نظير إلى نظير ، لذلك يبدو من المعقول تصميم بروتوكولات العميل الخفيفة التي تتطلب ذلك من أجل السلامة.

خاتمة

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

هناك بالفعل مجموعة واسعة من نماذج الثقة المستخدمة في عملاء Bitcoin ، بدءًا من أمان العقدة الكامل إلى SPV إلى الموثوق بها تمامًا. لكل منها مكانها ، اعتمادًا على مقدار المال الذي يتعرض له المستخدم النهائي ونفوره من المخاطرة. أنا متحمس لرؤية عملاء شبكة P2P جديدة وغير مركزية يستفيدون من التزامات الأقران ، بدءًا من محافظ BIP 157. وبالطبع ، بمجرد اختبار مخطط الالتزام وتعزيزه في هذا الإعداد ، يصبح من الأسهل تبرير ترقيته إلى التزام المجموعة بأمان أكبر للعميل.