
السلسلة: سلسلة التحقق الشكلي · الجزء 2 من 3 الجمهور: المبتدئون. قدّم الجزء الأول التحقق الشكلي؛ وهنا نلتقي بالخطأ الحقيقي الذي جعل الأمر ملحًّا. كل ما تحتاج إليه مشروح من البداية. ما ستخرج به: تصوّر بديهي ودقيق لكيفية احتواء نظام إثبات تشفيري على ثغرة في السلامة، وماهية خطأ "Orchard" الخاص بـ Zcash في عام 2026 بالضبط، ولماذا يمكن لهذا الصنف من الأخطاء أن يختبئ لسنوات، ولماذا حدث من قبل.
قلنا في الجزء الأول إن الاختبار يمكنه إظهار وجود الأخطاء لكنه لا يستطيع أبدًا إثبات غيابها، وإن أخطر الأخطاء تكمن في مواصفة النظام، أي رياضياته الأساسية. هذه المقالة هي دراسة الحالة. في عام 2026، اكتُشف خلل في مجموعة الحماية Orchard التابعة لـ Zcash، كان من الممكن أن يتيح لمهاجم إنشاء أموال مزيفة غير محدودة بصورة غير مرئية. وقد نجا لأربع سنوات ولعمليات تدقيق متكررة. وفهمه وفهم أسلافه هو أوضح دافع ممكن لإثبات صحة الأنظمة.
Zcash هي عملة مشفرة لها وضع خاص. في مجموعة الحماية الخاصة بها، تكون مبالغ المعاملات ومرسلوها ومستلموها مخفية. وتُنشأ هذه الخصوصية باستخدام إثباتات المعرفة الصفرية: براهين تشفيرية تثبت أن المعاملة تلتزم بكل القواعد دون كشف محتواها.
ينطوي ذلك التصميم على حدّين. ففي دفتر أستاذ شفاف مثل دفتر Bitcoin، إذا استحضر شخص عملات من العدم، فستكون الأرقام المتضخمة مرئية للجميع، ويمكن للشبكة اكتشاف الأمر والتراجع عنه. أما في مجموعة الحماية، فالأرقام مخفية بحكم التصميم. لذا، إذا احتوى نظام الإثبات ذاته على خلل يتيح لمعاملة غير صالحة أن تبدو صالحة، فسيكون التزييف غير قابل للكشف. لن تتمكن من رصده بتفحص دفتر الأستاذ، لأن دفتر الأستاذ معتم عمدًا.
وهذا بالضبط هو الخطر الذي تحقق في Orchard. لفهمه، نحتاج إلى النظر داخل ما الذي يتحقق منه إثبات المعرفة الصفرية فعلًا.
تخيّل موظف حدود يجب عليه الموافقة على المسافرين من دون رؤية وثائقهم مباشرة. بدلًا من ذلك، يملأ كل مسافر قائمة تحقق، ويوافق الموظف على كل من اكتملت جميع خانات قائمته. صُممت قائمة التحقق بحيث لا يتمكن من تحديد كل الخانات إلا مسافر شرعي.
الآن افترض أن قائمة التحقق تفتقد خانة حاسمة، مثل: «جواز السفر غير منتهي الصلاحية». سيظل الجميع تقريبًا يملؤونها بأمانة، ولن يبدو شيء خاطئًا. لكن شخصًا يحمل جواز سفر منتهي الصلاحية يمكنه أيضًا تحديد كل الخانات المتبقية والمرور بسهولة. يبدو النظام سليمًا في الاستخدام اليومي. ولا تهم الثغرة إلا شخصًا يبحث عنها.
يعمل إثبات المعرفة الصفرية مثل قائمة التحقق تلك. فهو لا يكشف التفاصيل الخاصة؛ بل يتحقق من أنها تستوفي مجموعة ثابتة من الشروط. وإذا تُرك شرط ضروري واحد عن طريق الخطأ، فإن بعض المدخلات غير الصالحة يمكنها أيضًا المرور، بينما يستمر كل شيء في الظهور بصورة طبيعية.
لنضبط معنى «قائمة الشروط» بدقة، لأن هذا هو بالضبط موضع الخطأ.
في العمق، تُرمّز عبارة «هذه المعاملة صالحة» في دائرة: مجموعة ثابتة من الشروط الحسابية، تُسمّى قيودًا، وتُكتب كمعادلات على الأعداد. ولإنشاء إثبات صالح، يجب على المُثبت تزويد قيم سرية (هي الشاهد) تحقق كل قيد. ويقنع الإثباتُ المتحققَ بأن شاهدًا كهذا موجود، من دون كشفه.
للخاصية التي نحتاجها من هذا النظام اسم:
السلامة: يجب أن يستحيل إنتاج إثبات صالح لعبارة خاطئة. وينبغي ألا تمتلك الشهود التي تحقق جميع القيود سوى العبارات الصحيحة.
السلامة هي ضمان مكافحة التزييف. إذا تحققت السلامة، فإن الإثبات الصالح يعني حقًا أن «معاملة حقيقية ملتزمة بالقواعد قد حدثت». أما إذا احتوت السلامة على فجوة، فقد لا يعني الإثبات الصالح شيئًا على الإطلاق.
غالبًا ما تحتاج القيود إلى فرض أن تكون قيمة بسيطة. مثال شائع: فرض أن تكون القيمة b بتًا واحدًا، إما 0 أو 1. والطريقة القياسية لفعل ذلك هي قيد واحد:
b × (b − 1) = 0
لماذا ينجح ذلك؟ لا يكون حاصل الضرب صفرًا إلا عندما يكون أحد عوامله صفرًا. لذا يفرض b × (b − 1) = 0 أن يكون b = 0 أو b = 1، ولا شيء غير ذلك. وعند فحص كل قيمة من 0 إلى 16 (في حساب يلتف عند 17)، تكون القيم الوحيدة التي تحقق ذلك هي بالضبط 0 و1. ✓
تخيّل الآن أن ذلك السطر تُرك عن طريق الخطأ خارج الدائرة. فجأة يصبح b غير مقيّد. يمكن لمُثبت غير نزيه أن يعيّن b إلى 5 أو 9 أو أي شيء على الإطلاق، ومع ذلك يحقق القيود المتبقية. ذلك السطر المفقود الواحد هو فجوة سلامة: إذ أصبحت العبارات الخاطئة تملك شهودًا مستوفين للشروط.
ليس هذا افتراضًا نظريًا. فقد عُثر على قيد مفقود لفرض القيمة المنطقية من هذا النوع بالضبط في أول تصميم محمي لـ Zcash، وهو Sprout، أثناء التطوير، وأُصلح قبل الإطلاق. ويُعد نقص القيود من أكثر الأخطاء شيوعًا وخطورة عند بناء هذه الدوائر.

هذا هو الشكل الكامل لخطأ Orchard، على نطاق صغير. والآن إلى الأمر الحقيقي.
تُبنى إثباتات الحماية الخاصة بـ Zcash على منحنيات إهليلجية، وهي كائنات رياضية يمكن جمع نقاطها و«ضربها» بأعداد، وهي عمليات يجب على الدائرة فرضها بواسطة القيود. وتحتوي الدائرة على أدوات تنفذ الضرب بالمنحنى الإهليلجي وتتحقق من تنفيذه بشكل صحيح.
وفقًا للإفصاح الصادر عن Shielded Labs والباحث Taylor Hornby، كان خلل Orchard تحديدًا كما يلي:
إن عنصرًا ناقص القيود في دائرة Orchard جعل من الممكن تمرير مدخلات خاطئة اعتباطية إلى عملية ضرب بمنحنى إهليلجي، ومع ذلك اجتياز فحص الضرب.
بعبارة بسيطة، كانت قائمة التحقق في الدائرة تفتقد الخانات التي كان ينبغي أن تثبت ذلك الضرب وتحدده. وبسبب هذه الفجوة، كان بإمكان مهاجم ذي خبرة كافية أن ينشئ إثبات معاملة يقبله النظام، رغم أن المعاملة أنشأت قيمة من العدم. هذا هو التزييف، ولأن المبالغ في مجموعة الحماية مخفية، لكان غير قابل للكشف من دفتر الأستاذ. ووصف فريق Tachyon لاحقًا الخلل ذاته على مستوى الشيفرة بأنه أسطر مفقودة في الدائرة شوّهت المعادلات الأساسية بهدوء.
التشابهات مع قصة قائمة التحقق دقيقة تمامًا:
| قصة قائمة التحقق | خطأ Orchard |
|---|---|
| خانة مفقودة بعنوان «جواز السفر غير منتهي الصلاحية» | قيد مفقود على ضرب بمنحنى إهليلجي |
| مسافر بجواز منتهي الصلاحية يمر رغم ذلك | مدخلات خاطئة اعتباطية تجتاز فحص الضرب |
| لا يتأثر الجميع الآخرون، لذلك لا يبدو شيء خاطئًا | عملت المعاملات العادية بصورة مثالية، فأخفت الخلل |
| لا يجد الثغرة إلا شخص يبحث عنها | تطلب الأمر خبيرًا يختبر رياضيات الدائرة عمدًا |
ولتوضيح مدى خطورة ذلك: كتب الباحث، بمساعدة AI، استغلالًا كاملًا عاملًا، وأكد في شبكة اختبار محلية أنه أنتج عملات مزيفة غير محدودة وغير قابلة للكشف. كان هذا خللًا حقيقيًا قابلًا للاستغلال، لا مجرد قلق نظري.
عاش الخطأ في Orchard منذ تفعيله في مايو 2022 حتى الإصلاح الطارئ في يونيو 2026، عبر عمليات تدقيق احترافية متكررة أجراها بعض أفضل خبراء التشفير في العالم. كيف؟
لأنه، كما حذّر الجزء الأول، تأخذ الاختبارات عينات من الحالات، وكان هذا الخلل يعيش في حالة لم يأخذ أحد عينة منها. لم تمارس المعاملات العادية القيد المفقود مطلقًا، لذا نجح كل اختبار وبدا كل يوم من التشغيل العادي بلا عيب. ولم يكن الوصول إلى الخلل ممكنًا إلا عبر إنشاء شاهد غير اعتيادي عمدًا موجّه مباشرة إلى الفجوة. وفي النهاية، لم يُكتشف بتشغيل الاختبارات بل عبر التفكير في رياضيات الدائرة.
إن الاكتشاف ذاته مؤشر على الوجهة التي يتجه إليها الأمن. في أبريل 2026، تعاقدت Shielded Labs مع الباحث الأمني Taylor Hornby تحديدًا للبحث عن هذا النوع من الخلل. وبعد وقت قصير من إصدار نموذج AI متقدم جديد (Claude Opus 4.8 من Anthropic) في أواخر مايو 2026، استخدمه Hornby، إلى جانب بيئة تحليل مخصصة وأساليب تقليدية، في مراجعة مستهدفة لدائرة Orchard. وفي 29 مايو 2026، عثرت المراجعة على الثغرة.
هناك حقيقتان رصينتان من الإفصاح تستحقان أن تُذكرا بوضوح:

ينتمي خطأ Orchard إلى عائلة متكررة، ورؤية تلك العائلة هي ما يجعل التحقق الشكلي يبدو ليس اختياريًا بل حتميًا. ويعود خلل التزييف دائمًا إلى أحد ثلاثة مصادر (التصنيف الوارد في الجزء الأول): المواصفة (الرياضيات ذاتها)، أو التنفيذ (فشل الشيفرة في اتباع الرياضيات الصحيحة)، أو افتراض مكسور. والأهم:
لا يكون خلل التزييف غير قابل للكشف إلا إذا كان موجودًا في المواصفة. تترك أخطاء التنفيذ أدلة عامة دائمة، لأن كل كتلة تسجل المحتوى الكامل لكل معاملة، ولذلك فإن إعادة تشغيل السجل عبر برنامج مصحح ستكشف أي معاملة قبلتها الشيفرة المعطوبة خطأً.
يوضح تاريخ Zcash نفسه هذا النمط:
| الخطأ (السنة) | المصدر | قابل للكشف؟ |
|---|---|---|
| خلل التزام Zerocash (2016، قبل الإطلاق) | المواصفة (أفسد تجزئة مختصرة خاصية الربط) | غير قابل للكشف |
| خلل سلامة الإعداد الموثوق (2018) | المواصفة (خطأ في الورقة البحثية الأساسية لـ zk-SNARK) | غير قابل للكشف |
| تصادم استعلامات نظام الإثبات (2025) | المواصفة (فحص مفقود في نظام الإثبات) | قابل للكشف |
| خطأ التحقق من المجموعة الفرعية للمنحنى (2016) | التنفيذ (فحص مفقود للمجموعة الفرعية) | قابل للكشف |
| ضرب Orchard ناقص القيود (2026) | المواصفة (الدائرة) | غير قابل للكشف |
الخيط الجامع صارخ: الأخطاء التي يمكن أن تختبئ إلى الأبد هي الأخطاء الموجودة في الرياضيات. وهذه بالضبط الفئة التي يمكن لإثبات متحقق منه آليًا للمواصفة أن يقضي عليها، في جميع الحالات دفعة واحدة. يأخذ الاختبار والتدقيق عينات؛ أما إثبات الرياضيات وحده فيغطي كل مدخل.
تحرك مطورو Zcash بسرعة وعلى مراحل:
تلك الخطوة الثانية هي حيث يدخل التحقق الشكلي إلى القصة، وهي موضوع الجزء الثالث. ويستحق الإدراك الذي تصرف الفريق بناءً عليه معاينته مسبقًا، لأنه يربط هذه السلسلة كلها معًا:
لا يمكن لخلل تزييف غير قابل للكشف أن يوجد إلا في مواصفة البروتوكول. لذلك، إذا استطعت إثبات أن المواصفة تستبعد التزييف، فإنك تقضي على الفئة الكاملة من الأخطاء التي اختبأت هنا لأربع سنوات.
وهذه بالضبط فكرة الركيزة الأولى من الجزء الأول: تحقق من المواصفة، فتغلق الفجوة التي لم يكن للاختبار أن يغلقها.
لقد بسّطنا عمدًا. تتضمن الدائرة الحقيقية مئات المناطق وآلاف القيود العديدة، والخلل الفعلي أكثر تعقيدًا تقنيًا من فحص بت واحد مفقود؛ استخدمنا فحص البت لأنه يبيّن شكل الدائرة ناقصة القيود بدقة، ولأن ذلك الخطأ ذاته حقيقي في تاريخ Zcash. كان خلل Orchard الدقيق ضربًا بمنحنى إهليلجي ناقص القيود، كما ورد في الإفصاح الرسمي. كما اختصرنا الجدول الزمني للإفصاح والمعالجة. وللاطلاع على الرواية التقنية الموثوقة، راجع إفصاح Shielded Labs وكتابات Project Tachyon.
b(b−1)=0 أن يكون b إما 0 أو 1؛ احذفه فيمكن أن يكون b أي شيء. وهذه الفئة من الأخطاء حقيقية في تاريخ Zcash.)| المصطلح | المعنى المبسط |
|---|---|
| Shielded pool | الوضع الخاص في Zcash حيث تُخفى المبالغ والأطراف |
| Zero-knowledge proof | إثبات بأن عبارة مخفية صالحة، من دون كشف أي شيء آخر |
| Circuit | المجموعة الثابتة من الشروط الحسابية التي يجب أن تحققها المعاملة الصالحة |
| Constraint | شرط واحد (معادلة) داخل الدائرة |
| Witness | القيم السرية التي تحقق القيود |
| Soundness | الضمان بأن العبارات الصحيحة فقط يمكنها إنتاج إثبات صالح |
| Soundness gap | قيد مفقود يسمح بمرور العبارات الخاطئة |
| Under-constrained | دائرة تفتقد شرطًا تحتاج إليه، وهو أصل خطأ Orchard |
| Detectable / undetectable | ما إذا كان الاستغلال سيترك دليلًا في دفتر الأستاذ العام |
هل أُنشئ Zcash مزيف فعلًا؟ لم يُعثر على دليل على الاستغلال، ويرى الفريق أن ذلك غير مرجح. لكن لأن الخلل كان سيكون غير قابل للكشف من دفتر الأستاذ، فلا يمكن لدفتر الأستاذ وحده أن يثبت بالكامل أنه لم يحدث أبدًا، ولهذا كانت الاستجابة شاملة جدًا.
لماذا يجعل إخفاء المبالغ الخطأ أسوأ؟ في سلسلة شفافة، تكون العملات المسكوكة مرئية ويمكن اكتشافها وعكسها. وعندما تُخفى المبالغ لأجل الخصوصية، لا ينتج عن خلل التزييف أي شذوذ مرئي، لذلك يمكن أن يستمر دون أن يُلاحظ.
لماذا لم تكتشفه سنوات من التدقيق؟ تفحص عمليات التدقيق والاختبارات في الغالب السلوك في الحالات الواقعية. لم يظهر هذا الخلل إلا مع إدخال غير اعتيادي صُنع عمدًا لاستهداف حالة رياضية طرفية، وهي حالة لم تمارسها المراجعة الروتينية. وقد اكتُشف عبر تفكير مستهدف في الدائرة، لا بالاختبار.
هل يكفي حقًا قيد مفقود واحد؟ نعم. لا يكون نظام الإثبات أقوى من مجموعته الكاملة من القيود. وشرط ضروري واحد يُترك خارجًا يكفي للسماح بمرور العبارات غير الصالحة.
ما الدور الذي أدّاه AI؟ استخدم باحث نموذج AI متقدمًا إلى جانب بيئة مخصصة وأساليب تقليدية لمراجعة رياضيات الدائرة والعثور على الخلل. ويُستخدم AI بصورة متزايدة في جانبي الأمن، وهو جزء من سبب أهمية إثبات صحة الأنظمة الآن إلى هذا الحد.
افترض أن معاملة محمية من المفترض أن تثبت أن «الأموال الداخلة تساوي الأموال الخارجة»، لكن الدائرة تنسى تقييد إحدى قيم المخرجات. ماذا يمكن أن يفعل مُثبت غير نزيه، ولماذا سيبدو دفتر الأستاذ العام طبيعيًا تمامًا؟ (الإجابة أدناه.)
مع عدم تقييد ذلك المخرج، يستطيع المُثبت تعيينه بقيمة أكبر مما تسمح به المدخلات الحقيقية، فينشئ قيمة من العدم، أي تزييفًا. وسيظل الإثبات متحققًا، لأن القيد المفقود هو الشيء الوحيد الذي كان سيكتشف اختلال التوازن. وبما أن مجموعة الحماية تخفي المبالغ، فلا يُظهر دفتر الأستاذ إلا أن «معاملة صالحة قد حدثت»، من دون اختلال مرئي يطلق إنذارًا. التزوير حقيقي لكنه غير مرئي، وهذا بالضبط سبب أهمية سلامة الدائرة إلى هذا الحد، وسبب وجوب إثباتها بدلًا من اختبارها.
الجزء 3 · Ironwood: لم يكن الإصلاح مجرد رقعة. بنى مهندسو Zcash مجموعة حماية جديدة وأرفقوها بإثبات رياضي متحقق منه آليًا، يضم أكثر من 2,700 نظرية مكتوبة في مساعد الإثبات Lean، يثبت أنها لا تستطيع إنشاء أموال مزيفة وفق افتراضاتها المعلنة. سنرى ما الذي تعنيه «سلامة الرصيد» و«سلامة المعرفة»، وما الذي يغطيه الإثبات وما الذي لا يغطيه بالضبط، وكيف أُحيلت المجموعة القديمة إلى التقاعد بأمان.
جزء من سلسلة التحقق الشكلي لـ ZecHub.