تقني › كم؟

براهين النطاق و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–2018Borromean~13 KBكل بت التزام منفصل + توقيع حلقي "هذا التزام بـ 0 أو 2ⁱ". حجم خطي.
أكتوبر 2018 – أغسطس 2022Bulletproofs~700 بايتحجة الجداء الداخلي: حجم لوغاريتمي، وتُجمَّع عدة مخرجات في برهان واحد.
منذ أغسطس 2022Bulletproofs+~600 بايتنسخة محسّنة (جداء داخلي موزون): أصغر وأسرع أيضًا.

جعل الانتقال إلى Bulletproofs عام 2018 المعاملات أصغر بنحو 10 مرات وخفّض الرسوم بالقدر نفسه. وهو من أبرز الترقيات في تاريخ Monero.

كيف تعمل Bulletproofs (فهم حدسي)

  1. يلتزم المُثبِت بمتجه البتات a_L والمتجه a_R = a_L − 1 بالتزام Pedersen متجهي واحد.
  2. يرسل المتحقق (عبر تجزئة، بطريقة Fiat–Shamir) تحديات عشوائية y, z. تُلصق شروط "كونه بتًا" الـ64 وشرط "المجموع" معًا في معادلة جداء داخلي واحدة ⟨l, r⟩ = t. والتحديات العشوائية تضمن أنه لا يمكن تزييف المعادلة الملصقة دون تحقيق جميع المعادلات الأصلية.
  3. يُثبت الجداء الداخلي لمتجهين بطول n بشكل تعاودي: في كل خطوة "يُطوى المتجهان إلى النصف" بتحدٍّ جديد، وبعد log₂ n خطوة يبقى عدد واحد في كل منهما. كل خطوة ترسل نقطتين — ومن هنا الحجم اللوغاريتمي.
64 عنصرًا 32 16 8 … → 1 كل خطوة: +2 نقطة (L, R) الخطوات: log₂(64·m) الحجم ≈ 2·log₂(64·m) نقطة + ثابت m — عدد المخرجات (التجميع)

التجميع: لـ m مخرج يكون طول المتجهات 64·m، ولا يزيد الحجم إلا بمقدار 2·log₂ m نقطة. لهذا يحدّ Monero عدد المخرجات في المعاملة بـ 16 ويكمّل العدد إلى قوة للعدد 2.

المزايا والعيوب

+

  • لا حاجة إلى إعداد موثوق (بخلاف zk-SNARKs في Zcash Sprout/Sapling).
  • تعتمد فقط على صعوبة اللوغاريتم المتقطع — الافتراض نفسه الذي يقوم عليه بقية Monero.
  • مضغوطة وقابلة للتجميع.
  • يمكن التحقق من براهين كثيرة معًا (التحقق الدفعي).

−

  • التحقق خطي في عدد البتات — ويمثل حصة كبيرة من وقت التحقق من الكتلة.
  • ليست مقاومة للحوسبة الكمومية: يستطيع الحاسوب الكمومي كسر خاصية الإلزام في Pedersen (أي أنه يستطيع طباعة المال)، وإن ظلت خاصية الإخفاء قائمة.
الصلة بـ FCMP++

يستخدم FCMP++ تعميمًا للتقنية نفسها — Generalized Bulletproofs — لإثبات مسار في شجرة جميع المخرجات. ففهم Bulletproofs أساس جيد لفهم براهين FCMP++.