لم يقم موقّعو التواقيع الفيدرالية لدى Blockstream هذه المرة بتضييع أي مفتاح خاص. فقد تم تنفيذ سير عملية التوقيع من البداية إلى النهاية كما هو مُصمَّم، وكل عقدة وظيفية قامت بما يلزم التحقق منه، ثم تم إصدار البيتكوين وفقًا للإجراءات. المشكلة تكمن في أن مجموعة الـ L-BTC التي طُلبت منها عمليات السحب لم تكن مُنشأة “من العدم” فحسب، بل لم يكتشف أحد ذلك.
حدث ذلك في 6 سبتمبر. استغل شخص ما ثغرةً في Elements لإنشاء حوالي 4000 قطعة من L-BTC على Liquid بدون وجود اعتماد (backing) من بيتكوين. ثم تم تسليم هذه الشهادات إلى عضو الاتحاد SideSwap، ومرت بسير peg-out المعتاد تمامًا. بعد أقل من نصف ساعة بقليل، غادرت ما يقارب 4000 قطعة $BTC عنوان الاحتياطي الفيدرالي، ووفق سعر العملة آنذاك كانت قيمتها تفوق 300 مليون دولار. قبل الحادث كان في هذا العنوان 4205 قطعة. وبعد أن تم تنفيذ عملية السحب تلك ثم معالجة بعض العمليات اللاحقة، لم يتبقَّ سوى 197 قطعة. أُوقفت السلسلة لاحقًا، وما زالت غير مُستأنفة حتى الآن.
تكمن الثغرة في طبقة المعاملات السرية (confidential transactions). تخفي Liquid مبالغ التحويل. وتؤكد العقد أن “حساب” المعاملة متوازن بالاعتماد على range proof. إن التحقق من كل إثبات من هذا النوع يستهلك قدرًا كبيرًا من الحوسبة، لذا تقوم Elements بتخزين نتائج التحقق وإعادة استخدامها. لكن مفتاح التخزين المؤقت كان يفتقد سياق طبقتي الأصول والسكربت؛ أي أن إثباتًا تم التحقق منه مسبقًا في مكان آخر يمكن إعادة استخدامه لإصدار اعتماد (backing) جديد تمامًا. ثم قامت الإصدارة الرسمية Elements 23.3.4 اللاحقة بإصلاح ذلك عبر: تقوية مفتاح ذاكرة التخزين المؤقت الخاصة بـ range proof، وإضافة مفتاح تشغيل بحيث لا تحتاج العقد إلى التخزين المؤقت أصلاً.
الحدّية (threshold) نفسها لم تكن موضع مشكلة. فالقاعدة أن 11 توقيعًا مطلوبة من أصل 15 مفتاحًا، ومن وقّعوا كانوا كذلك بالفعل. ما تتحقق منه العقد الوظيفية هو هل تم بدء عملية peg-out هذه بواسطة عضو يمتلك صلاحيات PAK، أما مسألة ما إذا كانت هذه الـ L-BTC قد دخلت فعلاً ببيتكوين حقيقية في البداية فلا تقع ضمن نطاق التحقق لديها. وتشغّل عقد SideSwap والعقد الوظيفية الموزعة عالميًا نفس نسخة Elements، وتصطدمان بنفس الثغرة في الكاش؛ فتأتي الإجابة من نفس الموضع، ولا يمكن القول إن كل طرف قام بعملية تحقق مستقلة عن الآخر. وحتى رفع العتبة (threshold) لن يغير النتيجة.
التوصيف القانوني لهذه المجموعة لم يُحسم بعد. ترك الطرف الآخر على السلسلة عبارة تعرّف فيها بنفسه على أنه “قبّعة بيضاء” وطلب التواصل عبر عنوان على السلسلة، فردت Blockstream بإيميل أمان. وفي مساء 7 سبتمبر عادت 3400 قطعة بيتكوين إلى عنوان الاحتياطي، وبقيت 598.5 قطعة لم تتحرك حتى الآن. قال كبير مسؤولي التقنية لدى Ledger Charles Guillemet وقتها إن “القبعة البيضاء” لن يقوم بسحب جسر بالكامل ثم يجيء ليطلب منك معلومات تواصل. ثم خفّف لاحقًا لهجته قليلًا واعتبر أن الأمر لا يشبه أساليب القبّعات البيضاء المعتادة، لكنه أقر أيضًا بأن التنظيمات الإجرامية العادية لن تتواصل بفعالية مع الضحايا بشكل استباقي. وبالنسبة لذلك المال، فهو يفضّل تسميته “ابتزازًا” أكثر من غيره. بينما أشار Samson Mow من JAN3 إلى أن الطلب الذي قيل إنه سيحوَّل إلى Signal جاء من عنوان آخر.
كلمة “قبعة بيضاء” لا أقبلها. من يتحدث بالشروط وهو يحمل المال لا يُعد قبعة بيضاء. لكن هذا لا يتعلق بما إذا كان المال يمكن أن يعود أو لا. وفي الوقت الحالي لا تملك Blockstream رافعة أفضل.
هذه المرة كانت المشكلة في خطوة التحقق من الحساب (التدقيق). أما طبقة الإيداع/التوكيل (custody) فليست معطوبة، وهذا شيء ينبغي تذكره. في خارطة طريق Blockstream لشهر مايو يوجد جسر من نوع BitVM على شكل 1-of-n؛ والفكرة الأساسية هي خفض إمكانية تواطؤ مجموعة من الناس في الخداع إلى مستوى حيث يكفي وجود شخص صادق واحد. تلك المنظومة تتعامل مع التواطؤ والهرب، لكنها لا تستطيع ضمان ألا يهرب الجميع في الوقت نفسه أو أن الجميع سيشاهدون نفس الكود في مكان واحد ويرتكبون خطأ في موضع واحد. حتى لو جلست في الاتحاد 100 عضو صادق، فإنهم يقرؤون جميعًا نفس السجل الملوَّث.
لذا فإن عدد الموقّعين—بالنسبة لمن يحملون شتى أشكال BTC مغلّفة أو BTC عبر السلاسل—ليس مؤشرًا ذا معنى كبير. سأطرح ثلاث أسئلة: من له صلاحية سكّ/إصدار الشهادات الجديدة؟ وما الذي يتم استخدامه للتحقق بعد إصدارها؟ وهل الجهات التي تقوم بالتحقق تحسب كل واحدة منها النتيجة بشكل مستقل. السؤال الثالث هو نقطة الحسم هذه المرة. #Bitcoin لا توجد أي مشكلة في السلسلة الرئيسية نفسها؛ إن الخلل كان دائمًا في الطبقة المضافة إلى جوارها.
كما أن لنموذج الاتحاد هذه المرة فوائده أيضًا، يجب الاعتراف بذلك. يمكن إيقاف السلسلة فتنتهي الحسابات السيئة عند هذا الحد. أما لو واجهت عيبًا في التضخم سلسلة أخرى لا يستطيع أحد إيقافها، فإن الشهادات غير المدعومة (بدون backing) ستنتشر في اتجاه جميع الأنظمة السفلية (downstream) ولن يمكن استرجاعها.
تم إصدار التصحيح في فجر 9 سبتمبر، لكن السلسلة بقيت متوقفة عند نفس الفترة منذ فجر 7 سبتمبر. كان الكود جاهزًا، لكن ما كان عالقًا هو كيفية مسح عملية peg-out غير صالحة من السجلات، ومن سيتحمل سدّ الفجوة. يوجد الآن في عنوان الاحتياطي 3601 بيتكوين. وفي الخارج تنتظر عملية صرف/تحويل مقابلها L-BTC أخرى تزيد عن أربعة آلاف ومائة قطعة. تقول النسخة الرسمية إن إعادة التشغيل سترفض عملية السحب غير الصالحة وتستعيد الاعتماد الكامل، لكن لم تُذكر من الذي سيملأ هذه الفجوة. إذا كانت في النهاية Blockstream أو أعضاء الاتحاد هم من سيدفعون من أموالهم الخاصة، فهذه ستكون حادثة كود؛ ولن تقع الانتقادات الموجهة إلى طبقة التوكيل في مكانها الصحيح. أما إذا تمت تسوية الفجوة على حساب أصحاب رؤوس أموال L-BTC، فستحصل تلك الانتقادات على الدليل.
يمكن ملاحظة رصيد عنوان الاحتياطي. بمجرد استئناف السلسلة وإنزال الكتل، معرفة ما إذا تم استكمال الرصيد ستكون أكثر مباشرة من أي بيان.
حدث ذلك في 6 سبتمبر. استغل شخص ما ثغرةً في Elements لإنشاء حوالي 4000 قطعة من L-BTC على Liquid بدون وجود اعتماد (backing) من بيتكوين. ثم تم تسليم هذه الشهادات إلى عضو الاتحاد SideSwap، ومرت بسير peg-out المعتاد تمامًا. بعد أقل من نصف ساعة بقليل، غادرت ما يقارب 4000 قطعة $BTC عنوان الاحتياطي الفيدرالي، ووفق سعر العملة آنذاك كانت قيمتها تفوق 300 مليون دولار. قبل الحادث كان في هذا العنوان 4205 قطعة. وبعد أن تم تنفيذ عملية السحب تلك ثم معالجة بعض العمليات اللاحقة، لم يتبقَّ سوى 197 قطعة. أُوقفت السلسلة لاحقًا، وما زالت غير مُستأنفة حتى الآن.
تكمن الثغرة في طبقة المعاملات السرية (confidential transactions). تخفي Liquid مبالغ التحويل. وتؤكد العقد أن “حساب” المعاملة متوازن بالاعتماد على range proof. إن التحقق من كل إثبات من هذا النوع يستهلك قدرًا كبيرًا من الحوسبة، لذا تقوم Elements بتخزين نتائج التحقق وإعادة استخدامها. لكن مفتاح التخزين المؤقت كان يفتقد سياق طبقتي الأصول والسكربت؛ أي أن إثباتًا تم التحقق منه مسبقًا في مكان آخر يمكن إعادة استخدامه لإصدار اعتماد (backing) جديد تمامًا. ثم قامت الإصدارة الرسمية Elements 23.3.4 اللاحقة بإصلاح ذلك عبر: تقوية مفتاح ذاكرة التخزين المؤقت الخاصة بـ range proof، وإضافة مفتاح تشغيل بحيث لا تحتاج العقد إلى التخزين المؤقت أصلاً.
الحدّية (threshold) نفسها لم تكن موضع مشكلة. فالقاعدة أن 11 توقيعًا مطلوبة من أصل 15 مفتاحًا، ومن وقّعوا كانوا كذلك بالفعل. ما تتحقق منه العقد الوظيفية هو هل تم بدء عملية peg-out هذه بواسطة عضو يمتلك صلاحيات PAK، أما مسألة ما إذا كانت هذه الـ L-BTC قد دخلت فعلاً ببيتكوين حقيقية في البداية فلا تقع ضمن نطاق التحقق لديها. وتشغّل عقد SideSwap والعقد الوظيفية الموزعة عالميًا نفس نسخة Elements، وتصطدمان بنفس الثغرة في الكاش؛ فتأتي الإجابة من نفس الموضع، ولا يمكن القول إن كل طرف قام بعملية تحقق مستقلة عن الآخر. وحتى رفع العتبة (threshold) لن يغير النتيجة.
التوصيف القانوني لهذه المجموعة لم يُحسم بعد. ترك الطرف الآخر على السلسلة عبارة تعرّف فيها بنفسه على أنه “قبّعة بيضاء” وطلب التواصل عبر عنوان على السلسلة، فردت Blockstream بإيميل أمان. وفي مساء 7 سبتمبر عادت 3400 قطعة بيتكوين إلى عنوان الاحتياطي، وبقيت 598.5 قطعة لم تتحرك حتى الآن. قال كبير مسؤولي التقنية لدى Ledger Charles Guillemet وقتها إن “القبعة البيضاء” لن يقوم بسحب جسر بالكامل ثم يجيء ليطلب منك معلومات تواصل. ثم خفّف لاحقًا لهجته قليلًا واعتبر أن الأمر لا يشبه أساليب القبّعات البيضاء المعتادة، لكنه أقر أيضًا بأن التنظيمات الإجرامية العادية لن تتواصل بفعالية مع الضحايا بشكل استباقي. وبالنسبة لذلك المال، فهو يفضّل تسميته “ابتزازًا” أكثر من غيره. بينما أشار Samson Mow من JAN3 إلى أن الطلب الذي قيل إنه سيحوَّل إلى Signal جاء من عنوان آخر.
كلمة “قبعة بيضاء” لا أقبلها. من يتحدث بالشروط وهو يحمل المال لا يُعد قبعة بيضاء. لكن هذا لا يتعلق بما إذا كان المال يمكن أن يعود أو لا. وفي الوقت الحالي لا تملك Blockstream رافعة أفضل.
هذه المرة كانت المشكلة في خطوة التحقق من الحساب (التدقيق). أما طبقة الإيداع/التوكيل (custody) فليست معطوبة، وهذا شيء ينبغي تذكره. في خارطة طريق Blockstream لشهر مايو يوجد جسر من نوع BitVM على شكل 1-of-n؛ والفكرة الأساسية هي خفض إمكانية تواطؤ مجموعة من الناس في الخداع إلى مستوى حيث يكفي وجود شخص صادق واحد. تلك المنظومة تتعامل مع التواطؤ والهرب، لكنها لا تستطيع ضمان ألا يهرب الجميع في الوقت نفسه أو أن الجميع سيشاهدون نفس الكود في مكان واحد ويرتكبون خطأ في موضع واحد. حتى لو جلست في الاتحاد 100 عضو صادق، فإنهم يقرؤون جميعًا نفس السجل الملوَّث.
لذا فإن عدد الموقّعين—بالنسبة لمن يحملون شتى أشكال BTC مغلّفة أو BTC عبر السلاسل—ليس مؤشرًا ذا معنى كبير. سأطرح ثلاث أسئلة: من له صلاحية سكّ/إصدار الشهادات الجديدة؟ وما الذي يتم استخدامه للتحقق بعد إصدارها؟ وهل الجهات التي تقوم بالتحقق تحسب كل واحدة منها النتيجة بشكل مستقل. السؤال الثالث هو نقطة الحسم هذه المرة. #Bitcoin لا توجد أي مشكلة في السلسلة الرئيسية نفسها؛ إن الخلل كان دائمًا في الطبقة المضافة إلى جوارها.
كما أن لنموذج الاتحاد هذه المرة فوائده أيضًا، يجب الاعتراف بذلك. يمكن إيقاف السلسلة فتنتهي الحسابات السيئة عند هذا الحد. أما لو واجهت عيبًا في التضخم سلسلة أخرى لا يستطيع أحد إيقافها، فإن الشهادات غير المدعومة (بدون backing) ستنتشر في اتجاه جميع الأنظمة السفلية (downstream) ولن يمكن استرجاعها.
تم إصدار التصحيح في فجر 9 سبتمبر، لكن السلسلة بقيت متوقفة عند نفس الفترة منذ فجر 7 سبتمبر. كان الكود جاهزًا، لكن ما كان عالقًا هو كيفية مسح عملية peg-out غير صالحة من السجلات، ومن سيتحمل سدّ الفجوة. يوجد الآن في عنوان الاحتياطي 3601 بيتكوين. وفي الخارج تنتظر عملية صرف/تحويل مقابلها L-BTC أخرى تزيد عن أربعة آلاف ومائة قطعة. تقول النسخة الرسمية إن إعادة التشغيل سترفض عملية السحب غير الصالحة وتستعيد الاعتماد الكامل، لكن لم تُذكر من الذي سيملأ هذه الفجوة. إذا كانت في النهاية Blockstream أو أعضاء الاتحاد هم من سيدفعون من أموالهم الخاصة، فهذه ستكون حادثة كود؛ ولن تقع الانتقادات الموجهة إلى طبقة التوكيل في مكانها الصحيح. أما إذا تمت تسوية الفجوة على حساب أصحاب رؤوس أموال L-BTC، فستحصل تلك الانتقادات على الدليل.
يمكن ملاحظة رصيد عنوان الاحتياطي. بمجرد استئناف السلسلة وإنزال الكتل، معرفة ما إذا تم استكمال الرصيد ستكون أكثر مباشرة من أي بيان.
