براهين النطاق وBulletproofs+
إثبات أن عددًا مخفيًا يقع بين 0 و2⁶⁴ دون الكشف عنه
يُثبت كل مخرج أن مبلغه v يقع في [0, 2⁶⁴). وهذا يسد ثغرة "المبالغ السالبة". يستخدم Monero Bulletproofs+ (منذ أغسطس 2022): برهان مجمَّع واحد لكل معاملة يكبر حجمه لوغاريتميًا — نحو 600 بايت لمخرجين.
الفكرة: تقسيم العدد إلى بتات
العدد في [0, 2⁶⁴) هو 64 بتًا: v = b₀·1 + b₁·2 + b₂·4 + … + b₆₃·2⁶³، حيث كل bᵢ ∈ {0, 1}. فإذا أثبتّ (1) أن كل bᵢ هو فعلًا 0 أو 1، و(2) أن المجموع الموزون للبتات يساوي v، فإن v يقع حتمًا في النطاق.
شرط "كونه بتًا" شرط جبري: bᵢ·(bᵢ − 1) = 0. فتتحول المهمة إلى إثبات أن مجموعة من الأعداد المخفية تحقق مجموعة من المعادلات دون الكشف عن الأعداد.
التطور في Monero
| الفترة | المخطط | الحجم (مخرجان) | آلية العمل |
|---|---|---|---|
| 2017–2018 | Borromean | ~13 KB | كل بت التزام منفصل + توقيع حلقي "هذا التزام بـ 0 أو 2ⁱ". حجم خطي. |
| أكتوبر 2018 – أغسطس 2022 | Bulletproofs | ~700 بايت | حجة الجداء الداخلي: حجم لوغاريتمي، وتُجمَّع عدة مخرجات في برهان واحد. |
| منذ أغسطس 2022 | Bulletproofs+ | ~600 بايت | نسخة محسّنة (جداء داخلي موزون): أصغر وأسرع أيضًا. |
جعل الانتقال إلى Bulletproofs عام 2018 المعاملات أصغر بنحو 10 مرات وخفّض الرسوم بالقدر نفسه. وهو من أبرز الترقيات في تاريخ Monero.
كيف تعمل Bulletproofs (فهم حدسي)
- يلتزم المُثبِت بمتجه البتات
a_Lوالمتجهa_R = a_L − 1بالتزام Pedersen متجهي واحد. - يرسل المتحقق (عبر تجزئة، بطريقة Fiat–Shamir) تحديات عشوائية
y, z. تُلصق شروط "كونه بتًا" الـ64 وشرط "المجموع" معًا في معادلة جداء داخلي واحدة⟨l, r⟩ = t. والتحديات العشوائية تضمن أنه لا يمكن تزييف المعادلة الملصقة دون تحقيق جميع المعادلات الأصلية. - يُثبت الجداء الداخلي لمتجهين بطول n بشكل تعاودي: في كل خطوة "يُطوى المتجهان إلى النصف" بتحدٍّ جديد، وبعد
log₂ nخطوة يبقى عدد واحد في كل منهما. كل خطوة ترسل نقطتين — ومن هنا الحجم اللوغاريتمي.
التجميع: لـ m مخرج يكون طول المتجهات 64·m، ولا يزيد الحجم إلا بمقدار 2·log₂ m نقطة. لهذا يحدّ Monero عدد المخرجات في المعاملة بـ 16 ويكمّل العدد إلى قوة للعدد 2.
المزايا والعيوب
+
- لا حاجة إلى إعداد موثوق (بخلاف zk-SNARKs في Zcash Sprout/Sapling).
- تعتمد فقط على صعوبة اللوغاريتم المتقطع — الافتراض نفسه الذي يقوم عليه بقية Monero.
- مضغوطة وقابلة للتجميع.
- يمكن التحقق من براهين كثيرة معًا (التحقق الدفعي).
−
- التحقق خطي في عدد البتات — ويمثل حصة كبيرة من وقت التحقق من الكتلة.
- ليست مقاومة للحوسبة الكمومية: يستطيع الحاسوب الكمومي كسر خاصية الإلزام في Pedersen (أي أنه يستطيع طباعة المال)، وإن ظلت خاصية الإخفاء قائمة.
يستخدم FCMP++ تعميمًا للتقنية نفسها — Generalized Bulletproofs — لإثبات مسار في شجرة جميع المخرجات. ففهم Bulletproofs أساس جيد لفهم براهين FCMP++.