بالنسبة لخوارزمية f ، يمكن لأليس وبوب ، المشاركين اللذين يشكلون عدم الثقة المتبادلة ، إقامة الثقة بالطرق التالية:
بالنسبة للأعداد 2 و 3 و 4 أعلاه، دع x يكون معاملات طبقة 2 والحالة الأولية، ودع f يكون برنامج الاتفاق للطبقة 2 ودع y يكون الحالة النهائية للمعاملة، وذلك يتوافق مع حل توسيع سلسلة الكتل طبقة 2. من بينها:
الجدول 1: طرق لإقامة الثقة
بالإضافة إلى ذلك، من المهم أن نلاحظ:
حاليًا، ومن استفادة من عقود Solidity الذكية القادرة على التفاعل بشكل كامل، تُستخدم تقنيات دليل الاحتيال وإثبات الصحة على نطاق واسع في تكنولوجيا Layer2 في إثريوم. ومع ذلك، تحت نموذج البيتكوين، وبسبب القيود التي يفرضها نطاق التعليمات البرمجية المحدود للبيتكوين، مثل 1000 عنصر في الدرجة وقيود أخرى، فإن تطبيق هذه التقنيات لا يزال في مرحلة التجريب. يلخص هذا المقال القيود والتقنيات الابتكارية تحت نموذج البيتكوين في سياق تكنولوجيا Layer2 في البيتكوين، ويدرس تقنيات إثبات الصحة ودليل الاحتيال، ويوضح تقنية تقسيم النصوص الفريدة تحت نموذج البيتكوين.
هناك العديد من القيود تحت بيتكوين، ولكن يمكن استخدام أساليب أو تقنيات ذكية مختلفة للتغلب على هذه القيود. على سبيل المثال، يمكن لالتزام البت تخطي قيد حالة UTXO اللاحدودية، ويمكن للجذر التابع تخطي قيود مساحة النصوص البرمجية، ويمكن لإخراج الموصل تخطي قيود طريقة الإنفاق UTXO، ويمكن للعقود تخطي قيود ما قبل التوقيع.
يعتمد بيتكوين نموذج UTXO، حيث يتم قفل كل UTXO في سكريبت قفل يحدد الشروط التي يجب تحقيقها لإنفاق تلك UTXO. تتمتع سكريبتات بيتكوين بالقيود التالية:
حاليا ، نصوص Bitcoin عديمة الجنسية تماما. عند تنفيذ برنامج نصي Bitcoin ، تتم إعادة تعيين بيئة التنفيذ الخاصة به بعد كل برنامج نصي. يؤدي هذا إلى عدم قدرة نصوص Bitcoin النصية على دعم البرامج النصية للقيود 1 و 2 التي لها نفس قيمة x. ومع ذلك ، يمكن التحايل على هذه المشكلة من خلال بعض الطرق ، مع الفكرة الأساسية هي التوقيع على قيمة بطريقة ما. إذا كان من الممكن إنشاء توقيع لقيمة ما ، فمن الممكن تحقيق نصوص Bitcoin ذات الحالة. أي أنه من خلال التحقق من توقيع قيمة x في البرامج النصية 1 و 2 ، يمكن فرض استخدام نفس قيمة x في كلا النصين. إذا كان هناك توقيع متعارض ، مما يعني أنه تم توقيع قيمتين مختلفتين لنفس المتغير x ، فيمكن تطبيق عقوبة. يعرف هذا الحل باسم التزام البت.
مبدأ الالتزام بالبت نسبياً بسيط. يشير البت إلى تعيين قيمتي هاش مختلفتين، هاش0 وهاش1، لكل بت في الرسالة التي سيتم توقيعها. إذا كانت قيمة البت التي سيتم توقيعها هي 0، يتم الكشف عن الصورة الأصلية0 لهاش0؛ إذا كانت قيمة البت التي سيتم توقيعها هي 1، يتم الكشف عن الصورة الأصلية1 لهاش1.
من خلال أخذ رسالة بت واحدة m ∈ {0,1} كمثال، فإن نص الفتح للالتزام بت المقابل هو مجرد بعض العناصر السابقة: إذا كانت القيمة البتية 0، فإن نص الفتح المقابل هو العنصر السابق 0 - "0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140"، وإذا كانت القيمة البتية 1، فإن نص الفتح المقابل هو العنصر السابق 1 - "0x47c31e611a3bd2f3a7a42207613046703fa27496". وبالتالي، باستخدام الالتزام بالبت، يُمكن اختراق قيود حالة UTXO البيتكوين الخالية من الحالة وتحقيق نصوص بيتكوين ذات حالة، مما يتيح ميزات جديدة مثيرة للاهتمام.
OP_HASH160
OP_DUP
0xf592e757267b7f307324f1e78b34472f8b6f46f3> // هذا هو hash1
OP_EQUAL
OP_DUP
OP_ROT
0x100b9f19ebd537fdc371fa1367d7ccc802dc2524> // هذا هو هاش0
OP_EQUAL
OP_BOOLOR
OP_VERIFY
// الآن قيمة التزام البت على الشكل. إما "0" أو "1".
حاليا، هناك 2 تنفيذات لالتزام البت:
حاليا ، تقوم مكتبة BitVM2 بتنفيذ توقيعات Winternitz استنادا إلى دالة التجزئة Blake3. يبلغ طول التوقيع المقابل لبت واحد حوالي 26 بايت. لذلك ، يمكن ملاحظة أن إدخال الدولة من خلال التزام البتات مكلف. وبالتالي ، في تطبيق BitVM2 ، يتم تجزئة الرسالة أولا للحصول على قيمة تجزئة 256 بت ، ثم يتم تنفيذ التزام البت على قيمة التجزئة لحفظ النفقات العامة ، بدلا من الالتزام بكل بت من الرسالة الأصلية الأطول مباشرة.
تتضمن ترقية Bitcoin Taproot soft fork ، التي تم تفعيلها في نوفمبر 2021 ، ثلاثة مقترحات: توقيعات Schnorr (BIP 340) و Taproot (BIP 341) و TapScript (BIP 342). يقدم نوعا جديدا من المعاملات - معاملات الدفع إلى Taproot (P2TR). يمكن لمعاملات P2TR إنشاء تنسيق معاملات أكثر خصوصية ومرونة وقابلية للتطوير من خلال الجمع بين مزايا Taproot و MAST (شجرة بناء جملة Merkel المجردة) وتوقيعات Schnorr.
يدعم P2TR طريقتين للإنفاق: الإنفاق وفقًا لمسار المفتاح أو مسار النص.
وفقا للأحكام الواردة في Taproot (BIP 341) ، عند الإنفاق عبر مسار البرنامج النصي ، لا يمكن أن يتجاوز مسار Merkle المقابل الحد الأقصى للطول 128. هذا يعني أن عدد أوراق الشجر في شجرة الصنبور لا يمكن أن يتجاوز 2 ^ 128. منذ ترقية SegWit في عام 2017 ، تقيس شبكة Bitcoin حجم الكتلة بوحدات الوزن ، بحد أقصى لدعم 4 ملايين وحدة وزن (حوالي 4 ميجابايت). عندما يتم إنفاق إخراج P2TR عبر مسار البرنامج النصي ، فإنه يحتاج فقط إلى الكشف عن نص نصي واحد ، مما يعني أن الكتلة معبأة بنص نصي واحد. هذا يعني أنه بالنسبة لمعاملات P2TR ، يمكن أن يكون حجم البرنامج النصي المقابل لكل ورقة نقرة بحد أقصى حوالي 4 ميغابايت. ومع ذلك ، بموجب سياسة Bitcoin الافتراضية ، فإن العديد من العقد تقوم فقط بإعادة توجيه المعاملات الأصغر من 400 ألف. تحتاج المعاملات الأكبر إلى التعاون مع عمال المناجم ليتم تعبئتها.
يجعل قسط مساحة البرنامج النصي الذي جلبه Taproot محاكاة عمليات التشفير مثل الضرب والتجزئة باستخدام أكواد التشغيل الحالية أكثر قيمة.
عند إنشاء حساب يمكن التحقق منه استنادا إلى P2TR ، لم يعد حجم البرنامج النصي المقابل يقتصر على قيد 4 ميجابايت ، ولكن يمكن تقسيمه إلى وظائف فرعية متعددة موزعة عبر أوراق نقر متعددة ، وبالتالي اختراق حدود مساحة البرنامج النصي البالغة 4 ميجابايت. في الواقع ، فإن خوارزمية التحقق من Groth16 المطبقة في BitVM2 الحالية لها حجم يصل إلى 2 جيجابايت. ومع ذلك ، يمكن تقسيمها وتوزيعها عبر حوالي 1000 ورقة ، ومن خلال دمجها مع التزام البت ، يمكن تقييد الاتساق بين مدخلات ومخرجات كل وظيفة فرعية ، مما يضمن سلامة وصحة الحساب بأكمله.
حاليًا، يوفر بيتكوين طريقتين للإنفاق الأساسيتين لـ UTXO الواحد: الإنفاق عن طريق النص البرمجي أو عن طريق المفتاح العام. لذلك، طالما تم استيفاء التوقيع الصحيح للمفتاح العام أو شروط النص البرمجي، يمكن إنفاق UTXO. يمكن إنفاق UTXOانين بشكل مستقل، ولا يمكن إضافة أي قيود لتقييد UTXOين الاثنين، مما يعني أن يجب استيفاء شروط إضافية لإنفاقهما.
ومع ذلك ، استخدم بوراك ، مؤسس بروتوكول Ark ، بذكاء علم SIGHASH لتحقيق إخراج الموصل. على وجه التحديد ، يمكن لأليس إنشاء توقيع لإرسال BTC الخاص بها إلى بوب. ومع ذلك ، نظرا لأن التوقيع يمكن أن يلتزم بمدخلات متعددة ، يمكن لأليس تعيين توقيعها ليكون شرطيا: يكون التوقيع صالحا لمعاملة Taketx إذا وفقط إذا كانت هذه المعاملة تستهلك الإدخال الثاني. يسمى الإدخال الثاني الموصل ، الذي يربط UTXO A و UTXO B. بمعنى آخر ، تكون معاملة Taketx صالحة إذا وفقط إذا لم يتم إنفاق UTXO B بواسطة Challengetx. لذلك ، من خلال تدمير إخراج الموصل ، يمكن حظر فعالية معاملة Taketx.
الشكل 1: رسم توضيحي لمخرج الموصل
في بروتوكول BitVM2، يعمل إخراج الموصِّل كدالة if...else. بمجرد إنفاق إخراج الموصِّل من قبل عملية تحويل، لا يمكن إنفاقه من قبل عملية تحويل أخرى لضمان إنفاقه الحصري. في النشر العملي، للسماح بفترة الرد التحدي، يتم إدخال مخرجات UTXO الإضافية مع timelock. علاوة على ذلك، يمكن أيضًا تعيين إخراج الموصِّل المقابل باستراتيجيات إنفاق مختلفة حسب الحاجة، مثل السماح لأي طرف بالإنفاق في حالة عمليات التحدي، في حين السماح فقط للمشغّل بالإنفاق أو السماح لأي شخص بالإنفاق بعد فترة زمنية محددة لعمليات الرد.
في الوقت الحالي ، تحد نصوص Bitcoin بشكل أساسي من شروط إلغاء القفل ، دون تقييد كيفية إنفاق UTXO بشكل أكبر. وذلك لأن نصوص Bitcoin لا يمكنها قراءة محتوى المعاملة نفسها ، مما يعني أنها لا تستطيع تحقيق استبطان المعاملة. إذا تمكنت نصوص Bitcoin النصية من التحقق من أي محتوى للمعاملة (بما في ذلك المخرجات) ، فيمكن تحقيق وظائف العقد.
يمكن تقسيم تنفيذات العقود الحالية إلى فئتين:
يمكن استخدام كل من إثبات صحة ودليل الاحتيال لتوسيع بيتكوين في الطبقة 2 ، مع الاختلافات الرئيسية الموضحة في الجدول 2.
الجدول 2: إثباتات الصلاحية مقابل إثباتات الاحتيال
استنادا إلى التزام البت ، والجذر الرئيسي ، والتوقيع المسبق ، وإخراج الموصل ، يمكن إنشاء أدلة على الاحتيال على أساس Bitcoin. استنادا إلى الجذر الرئيسي ، يمكن أيضا إنشاء إثباتات الصلاحية القائمة على Bitcoin عن طريق إدخال رموز تشغيل العقد ، مثل OP_CAT. بالإضافة إلى ذلك ، اعتمادا على ما إذا كان لدى بوب نظام قبول ، يمكن تقسيم إثباتات الاحتيال إلى إثباتات احتيال مصرح بها وبراهين احتيال بدون إذن. في إثباتات الاحتيال المصرح بها ، يمكن لمجموعات محددة فقط أن تعمل كبوب لبدء التحديات ، بينما في إثباتات الاحتيال غير المصرح بها ، يمكن لأي طرف ثالث أن يعمل كبوب لبدء التحديات. يتفوق أمان إثباتات الاحتيال غير المصرح بها على تلك المصرح بها ، مما يقلل من مخاطر التواطؤ بين المشاركين المسموح لهم.
وفقًا لعدد تفاعلات التحدي والاستجابة بين أليس وبوب، يمكن تقسيم دلائل الاحتيال إلى دلائل الاحتيال ذات جولة واحدة ودلائل الاحتيال متعددة الجولات، كما هو موضح في الشكل ٢.
الشكل 2: إثباتات الاحتيال في جولة واحدة مقابل إثباتات الاحتيال في عدة جولات
كما هو مبين في الجدول 3، يمكن تنفيذ دلائل الاحتيال من خلال نماذج تفاعل مختلفة، بما في ذلك نماذج التفاعل ذات جولة واحدة ونماذج التفاعل متعددة الجولات.
الجدول 3: تفاعل لفترة واحدة مقابل تفاعل متعدد الجولات
في نموذج توسيع Bitcoin Layer2 ، يعتمد BitVM1 آلية إثبات الاحتيال متعددة الجولات ، بينما يستخدم BitVM2 آلية إثبات الاحتيال لجولة واحدة ، ويستخدم bitcoin-circle stark إثباتات الصحة. بين هذه ، يمكن تنفيذ BitVM1 و BitVM2 دون إجراء أي تعديلات على بروتوكول Bitcoin ، بينما يتطلب bitcoin-circle stark إدخال عملية تشغيل جديدة OP_CAT.
بالنسبة لمعظم المهام الحسابية، لا يمكن لـ signet و testnet و mainnet لبيتكوين تمثيل سكريبت بحجم 4 ميغابايت بالكامل، مما يستدعي استخدام تقنية تقسيم السكريبت - أي تقسيم سكريبت الحساب الكامل إلى أجزاء أصغر من 4 ميغابايت، الموزعة عبر مختلف الأوراق التنبيهية.
كما هو موضح في الجدول 3، فإن دلائل الاحتيال متعددة الجولات مناسبة للسيناريوهات التي ترغب في تقليل حساب التحكيم على السلسلة و / أو في الحالات التي لا يمكن فيها تحديد الأقسام الحسابية المشكلة في خطوة واحدة. تتطلب دلائل الاحتيال متعددة الجولات، كما يوحي اسمها، جولات متعددة من التفاعل بين الدافع والتحقق لتحديد الأقسام الحسابية المشكلة، تليها عملية تحكيم استنادًا إلى الأقسام المحددة.
في ورقة البيضاء المبكرة لـ Robin Linus حول BitVM (المشار إليه عادة باسم BitVM1)، تم استخدام دلائل على الاحتيال متعددة الجولات. بافتراض أن فترة كل تحدي تستمر أسبوعًا واستخدام طريقة البحث الثنائي لتحديد الأجزاء الحسابية المشكوك فيها، يمكن أن يصل وقت الاستجابة للتحدي على السلسلة لمحقق Groth16 إلى 30 أسبوعًا، مما يؤدي إلى سوء التوقيت. على الرغم من أن هناك فرق تبحث حاليًا في طرق بحث n-ary أكثر كفاءة من البحث الثنائي، إلا أن توقيتها لا يزال أقل بكثير مقارنة بدورات الأسبوعين في دلائل على الاحتيال من جولة واحدة.
حالياً، تستخدم إثباتات الاحتيال متعددة الجولات في نموذج البيتكوين تحديات مرخصة، في حين أن إثباتات الاحتيال لجولة واحدة حققت طريقة تحدي غير مرخصة، مما يقلل من مخاطر التواطؤ بين المشاركين وبالتالي يعزز الأمان. وفي هذا الصدد، استفاد روبن لينوس بشكل كامل من مزايا Taproot لتحسين BitVM1. لم يتم تقليل عدد جولات التفاعل فحسب، بل تم توسيع طريقة التحدي أيضًا لتصبح نهجًا غير مرخص، على الرغم من الزيادة في حساب الفترة على السلسلة.
في هذا النموذج، يمكن إكمال التحقق من أدلة الاحتيال من خلال تفاعل واحد فقط بين الإثبات والتحقق. يحتاج التحقق فقط إلى بدء تحدي واحد، ويحتاج الإثبات فقط إلى الرد مرة واحدة. في هذا الرد، يجب أن يقدم الإثبات دليلًا يدعي أن حسابه صحيح. إذا استطاع التحقق العثور على تناقضات في هذا الدليل، فإن التحدي ناجح؛ وإلا، يفشل. يتم عرض خصائص أدلة الاحتيال التفاعلية الواحدة في الجدول 3.
الشكل 3: دليل الاحتيال لجولة واحدة
في 15 أغسطس 2024، قام روبن لينوس بإصدار ورقة بيضاء تقنية BitVM2: ربط بيتكوين بالطبقات الثانية، التي نفذت جسرًا عبر السلسلة باستخدام طريقة دليل على الاحتيال في جولة واحدة مماثلة لتلك الموضحة في الشكل 3.
كان OPCAT جزءًا من لغة البرمجة الأصلية عند إصدار بيتكوين ولكن تم تعطيله في عام 2010 بسبب ثغرات الأمان. ومع ذلك ، فقد كانت مجتمع بيتكوين يناقش إعادة تنشيطه لسنوات. تم تعيين OPCAT الآن بالرقم 347 وتم تمكينه على signet بيتكوين.
تتمثل الوظيفة الرئيسية ل OP_CAT في الجمع بين عنصرين في المكدس ودفع النتيجة المدمجة مرة أخرى إلى المكدس. تفتح هذه الوظيفة إمكانية العقود ومدققات STARK على Bitcoin:
على الرغم من أن الحمل الحسابي المطلوب لتشغيل خوارزمية التحقق المقابلة للإثبات SNARK/STARK بعد الإثبات أقل بكثير مما يلزم لتشغيل الحساب الأصلي f مباشرة، إلا أن كمية النص البرمجي المطلوب عند تحويله لتنفيذ خوارزمية المحقق في نص Bitcoin ما زالت هائلة. حاليًا، وبناءً على أوامر العملة المشفرة Bitcoin الموجودة، فإن حجم النص البرمجي المحقق المحسّن Groth16 وحجم النص البرمجي المحقق Fflonk لا يزالان أكبر من 2 جيجابايت. ومع ذلك، فإن حجم كتلة Bitcoin الفردية هو فقط 4 ميجابايت، مما يجعل من المستحيل تشغيل النص البرمجي المحقق بأكمله داخل كتلة واحدة. ومع ذلك، بعد ترقية Taproot، يدعم Bitcoin تنفيذ النصوص عن طريق Tapleaf، مما يسمح بتقسيم النص البرمجي المحقق إلى أجزاء متعددة، حيث يعمل كل جزء منها كـ Tapleaf لبناء شجرة تابتري. يمكن ضمان تماسك القيم بين الأجزاء من خلال التزام البت.
في وجود عقود OP_CAT، يمكن تقسيم التحقق من صحة STARK Verifier إلى معاملات قياسية متعددة أصغر من 400 كيلوبايت، مما يسمح بإكمال التحقق من صحة إثبات STARK بالكامل دون الحاجة إلى التعاون مع المنقبين.
تركز هذا القسم على تقنية الانقسام ذات الصلة لبرمجيات بيتكوين في ظل الظروف الحالية دون إدخال أو تفعيل أي أكواد جديدة.
عند تقسيم النص النصي، يجب موازنة الأبعاد التالية للمعلومات:
حالياً، يمكن تقسيم أساليب تقسيم النصوص إلى الفئات الرئيسية التالية ثلاثة:
على سبيل المثال ، بعد عدة جولات من التحسين ، تم تقليل حجم البرنامج النصي لجهاز التحقق من Groth16 من حوالي 7 جيجابايت إلى حوالي 1.26 جيجابايت. بالإضافة إلى هذا التحسين الحسابي الشامل ، يمكن أيضًا تحسين كل قطعة بشكل فردي للاستفادة الكاملة من مساحة الكومة. على سبيل المثال ، من خلال إدخال خوارزميات أفضل قائمة بحث قائمة على جداول وتحميل وتفريغ الجدول ، يمكن تقليل حجم البرنامج النصي لكل قطعة بشكل أكبر.
تكاليف الحساب وبيئات التشغيل للغات البرمجة في الويب2 مختلفة تمامًا عن تلك الموجودة في سكريبتات بيتكوين، لذلك فإن ترجمة التنفيذات الحالية لمختلف الخوارزميات إلى سكريبتات بيتكوين ليست ممكنة. لذلك، يجب مراعاة تحسينات محددة لسيناريو بيتكوين:
تقدم هذه المقالة أولا قيود نصوص Bitcoin النصية وتناقش استخدام التزامات Bitcoin للتغلب على قيود UTXO عديمة الجنسية ، واستخدام Taproot لاختراق قيود مساحة البرنامج النصي ، واستخدام مخرجات الموصل لتجاوز قيود طريقة إنفاق UTXO ، واستخدام العقود للتغلب على قيود التوقيع المسبق. ثم يقدم نظرة عامة شاملة وملخصا لخصائص إثباتات الاحتيال وأدلة الصلاحية ، وميزات إثباتات الاحتيال المصرح بها وغير المصرح بها ، والفروق بين براهين الاحتيال ذات الجولة الواحدة والمتعددة الجولات ، وتقنية تقسيم نصوص البيتكوين.
بالنسبة لخوارزمية f ، يمكن لأليس وبوب ، المشاركين اللذين يشكلون عدم الثقة المتبادلة ، إقامة الثقة بالطرق التالية:
بالنسبة للأعداد 2 و 3 و 4 أعلاه، دع x يكون معاملات طبقة 2 والحالة الأولية، ودع f يكون برنامج الاتفاق للطبقة 2 ودع y يكون الحالة النهائية للمعاملة، وذلك يتوافق مع حل توسيع سلسلة الكتل طبقة 2. من بينها:
الجدول 1: طرق لإقامة الثقة
بالإضافة إلى ذلك، من المهم أن نلاحظ:
حاليًا، ومن استفادة من عقود Solidity الذكية القادرة على التفاعل بشكل كامل، تُستخدم تقنيات دليل الاحتيال وإثبات الصحة على نطاق واسع في تكنولوجيا Layer2 في إثريوم. ومع ذلك، تحت نموذج البيتكوين، وبسبب القيود التي يفرضها نطاق التعليمات البرمجية المحدود للبيتكوين، مثل 1000 عنصر في الدرجة وقيود أخرى، فإن تطبيق هذه التقنيات لا يزال في مرحلة التجريب. يلخص هذا المقال القيود والتقنيات الابتكارية تحت نموذج البيتكوين في سياق تكنولوجيا Layer2 في البيتكوين، ويدرس تقنيات إثبات الصحة ودليل الاحتيال، ويوضح تقنية تقسيم النصوص الفريدة تحت نموذج البيتكوين.
هناك العديد من القيود تحت بيتكوين، ولكن يمكن استخدام أساليب أو تقنيات ذكية مختلفة للتغلب على هذه القيود. على سبيل المثال، يمكن لالتزام البت تخطي قيد حالة UTXO اللاحدودية، ويمكن للجذر التابع تخطي قيود مساحة النصوص البرمجية، ويمكن لإخراج الموصل تخطي قيود طريقة الإنفاق UTXO، ويمكن للعقود تخطي قيود ما قبل التوقيع.
يعتمد بيتكوين نموذج UTXO، حيث يتم قفل كل UTXO في سكريبت قفل يحدد الشروط التي يجب تحقيقها لإنفاق تلك UTXO. تتمتع سكريبتات بيتكوين بالقيود التالية:
حاليا ، نصوص Bitcoin عديمة الجنسية تماما. عند تنفيذ برنامج نصي Bitcoin ، تتم إعادة تعيين بيئة التنفيذ الخاصة به بعد كل برنامج نصي. يؤدي هذا إلى عدم قدرة نصوص Bitcoin النصية على دعم البرامج النصية للقيود 1 و 2 التي لها نفس قيمة x. ومع ذلك ، يمكن التحايل على هذه المشكلة من خلال بعض الطرق ، مع الفكرة الأساسية هي التوقيع على قيمة بطريقة ما. إذا كان من الممكن إنشاء توقيع لقيمة ما ، فمن الممكن تحقيق نصوص Bitcoin ذات الحالة. أي أنه من خلال التحقق من توقيع قيمة x في البرامج النصية 1 و 2 ، يمكن فرض استخدام نفس قيمة x في كلا النصين. إذا كان هناك توقيع متعارض ، مما يعني أنه تم توقيع قيمتين مختلفتين لنفس المتغير x ، فيمكن تطبيق عقوبة. يعرف هذا الحل باسم التزام البت.
مبدأ الالتزام بالبت نسبياً بسيط. يشير البت إلى تعيين قيمتي هاش مختلفتين، هاش0 وهاش1، لكل بت في الرسالة التي سيتم توقيعها. إذا كانت قيمة البت التي سيتم توقيعها هي 0، يتم الكشف عن الصورة الأصلية0 لهاش0؛ إذا كانت قيمة البت التي سيتم توقيعها هي 1، يتم الكشف عن الصورة الأصلية1 لهاش1.
من خلال أخذ رسالة بت واحدة m ∈ {0,1} كمثال، فإن نص الفتح للالتزام بت المقابل هو مجرد بعض العناصر السابقة: إذا كانت القيمة البتية 0، فإن نص الفتح المقابل هو العنصر السابق 0 - "0xfa7fa5b1dea37d71a0b841967f6a3b119dbea140"، وإذا كانت القيمة البتية 1، فإن نص الفتح المقابل هو العنصر السابق 1 - "0x47c31e611a3bd2f3a7a42207613046703fa27496". وبالتالي، باستخدام الالتزام بالبت، يُمكن اختراق قيود حالة UTXO البيتكوين الخالية من الحالة وتحقيق نصوص بيتكوين ذات حالة، مما يتيح ميزات جديدة مثيرة للاهتمام.
OP_HASH160
OP_DUP
0xf592e757267b7f307324f1e78b34472f8b6f46f3> // هذا هو hash1
OP_EQUAL
OP_DUP
OP_ROT
0x100b9f19ebd537fdc371fa1367d7ccc802dc2524> // هذا هو هاش0
OP_EQUAL
OP_BOOLOR
OP_VERIFY
// الآن قيمة التزام البت على الشكل. إما "0" أو "1".
حاليا، هناك 2 تنفيذات لالتزام البت:
حاليا ، تقوم مكتبة BitVM2 بتنفيذ توقيعات Winternitz استنادا إلى دالة التجزئة Blake3. يبلغ طول التوقيع المقابل لبت واحد حوالي 26 بايت. لذلك ، يمكن ملاحظة أن إدخال الدولة من خلال التزام البتات مكلف. وبالتالي ، في تطبيق BitVM2 ، يتم تجزئة الرسالة أولا للحصول على قيمة تجزئة 256 بت ، ثم يتم تنفيذ التزام البت على قيمة التجزئة لحفظ النفقات العامة ، بدلا من الالتزام بكل بت من الرسالة الأصلية الأطول مباشرة.
تتضمن ترقية Bitcoin Taproot soft fork ، التي تم تفعيلها في نوفمبر 2021 ، ثلاثة مقترحات: توقيعات Schnorr (BIP 340) و Taproot (BIP 341) و TapScript (BIP 342). يقدم نوعا جديدا من المعاملات - معاملات الدفع إلى Taproot (P2TR). يمكن لمعاملات P2TR إنشاء تنسيق معاملات أكثر خصوصية ومرونة وقابلية للتطوير من خلال الجمع بين مزايا Taproot و MAST (شجرة بناء جملة Merkel المجردة) وتوقيعات Schnorr.
يدعم P2TR طريقتين للإنفاق: الإنفاق وفقًا لمسار المفتاح أو مسار النص.
وفقا للأحكام الواردة في Taproot (BIP 341) ، عند الإنفاق عبر مسار البرنامج النصي ، لا يمكن أن يتجاوز مسار Merkle المقابل الحد الأقصى للطول 128. هذا يعني أن عدد أوراق الشجر في شجرة الصنبور لا يمكن أن يتجاوز 2 ^ 128. منذ ترقية SegWit في عام 2017 ، تقيس شبكة Bitcoin حجم الكتلة بوحدات الوزن ، بحد أقصى لدعم 4 ملايين وحدة وزن (حوالي 4 ميجابايت). عندما يتم إنفاق إخراج P2TR عبر مسار البرنامج النصي ، فإنه يحتاج فقط إلى الكشف عن نص نصي واحد ، مما يعني أن الكتلة معبأة بنص نصي واحد. هذا يعني أنه بالنسبة لمعاملات P2TR ، يمكن أن يكون حجم البرنامج النصي المقابل لكل ورقة نقرة بحد أقصى حوالي 4 ميغابايت. ومع ذلك ، بموجب سياسة Bitcoin الافتراضية ، فإن العديد من العقد تقوم فقط بإعادة توجيه المعاملات الأصغر من 400 ألف. تحتاج المعاملات الأكبر إلى التعاون مع عمال المناجم ليتم تعبئتها.
يجعل قسط مساحة البرنامج النصي الذي جلبه Taproot محاكاة عمليات التشفير مثل الضرب والتجزئة باستخدام أكواد التشغيل الحالية أكثر قيمة.
عند إنشاء حساب يمكن التحقق منه استنادا إلى P2TR ، لم يعد حجم البرنامج النصي المقابل يقتصر على قيد 4 ميجابايت ، ولكن يمكن تقسيمه إلى وظائف فرعية متعددة موزعة عبر أوراق نقر متعددة ، وبالتالي اختراق حدود مساحة البرنامج النصي البالغة 4 ميجابايت. في الواقع ، فإن خوارزمية التحقق من Groth16 المطبقة في BitVM2 الحالية لها حجم يصل إلى 2 جيجابايت. ومع ذلك ، يمكن تقسيمها وتوزيعها عبر حوالي 1000 ورقة ، ومن خلال دمجها مع التزام البت ، يمكن تقييد الاتساق بين مدخلات ومخرجات كل وظيفة فرعية ، مما يضمن سلامة وصحة الحساب بأكمله.
حاليًا، يوفر بيتكوين طريقتين للإنفاق الأساسيتين لـ UTXO الواحد: الإنفاق عن طريق النص البرمجي أو عن طريق المفتاح العام. لذلك، طالما تم استيفاء التوقيع الصحيح للمفتاح العام أو شروط النص البرمجي، يمكن إنفاق UTXO. يمكن إنفاق UTXOانين بشكل مستقل، ولا يمكن إضافة أي قيود لتقييد UTXOين الاثنين، مما يعني أن يجب استيفاء شروط إضافية لإنفاقهما.
ومع ذلك ، استخدم بوراك ، مؤسس بروتوكول Ark ، بذكاء علم SIGHASH لتحقيق إخراج الموصل. على وجه التحديد ، يمكن لأليس إنشاء توقيع لإرسال BTC الخاص بها إلى بوب. ومع ذلك ، نظرا لأن التوقيع يمكن أن يلتزم بمدخلات متعددة ، يمكن لأليس تعيين توقيعها ليكون شرطيا: يكون التوقيع صالحا لمعاملة Taketx إذا وفقط إذا كانت هذه المعاملة تستهلك الإدخال الثاني. يسمى الإدخال الثاني الموصل ، الذي يربط UTXO A و UTXO B. بمعنى آخر ، تكون معاملة Taketx صالحة إذا وفقط إذا لم يتم إنفاق UTXO B بواسطة Challengetx. لذلك ، من خلال تدمير إخراج الموصل ، يمكن حظر فعالية معاملة Taketx.
الشكل 1: رسم توضيحي لمخرج الموصل
في بروتوكول BitVM2، يعمل إخراج الموصِّل كدالة if...else. بمجرد إنفاق إخراج الموصِّل من قبل عملية تحويل، لا يمكن إنفاقه من قبل عملية تحويل أخرى لضمان إنفاقه الحصري. في النشر العملي، للسماح بفترة الرد التحدي، يتم إدخال مخرجات UTXO الإضافية مع timelock. علاوة على ذلك، يمكن أيضًا تعيين إخراج الموصِّل المقابل باستراتيجيات إنفاق مختلفة حسب الحاجة، مثل السماح لأي طرف بالإنفاق في حالة عمليات التحدي، في حين السماح فقط للمشغّل بالإنفاق أو السماح لأي شخص بالإنفاق بعد فترة زمنية محددة لعمليات الرد.
في الوقت الحالي ، تحد نصوص Bitcoin بشكل أساسي من شروط إلغاء القفل ، دون تقييد كيفية إنفاق UTXO بشكل أكبر. وذلك لأن نصوص Bitcoin لا يمكنها قراءة محتوى المعاملة نفسها ، مما يعني أنها لا تستطيع تحقيق استبطان المعاملة. إذا تمكنت نصوص Bitcoin النصية من التحقق من أي محتوى للمعاملة (بما في ذلك المخرجات) ، فيمكن تحقيق وظائف العقد.
يمكن تقسيم تنفيذات العقود الحالية إلى فئتين:
يمكن استخدام كل من إثبات صحة ودليل الاحتيال لتوسيع بيتكوين في الطبقة 2 ، مع الاختلافات الرئيسية الموضحة في الجدول 2.
الجدول 2: إثباتات الصلاحية مقابل إثباتات الاحتيال
استنادا إلى التزام البت ، والجذر الرئيسي ، والتوقيع المسبق ، وإخراج الموصل ، يمكن إنشاء أدلة على الاحتيال على أساس Bitcoin. استنادا إلى الجذر الرئيسي ، يمكن أيضا إنشاء إثباتات الصلاحية القائمة على Bitcoin عن طريق إدخال رموز تشغيل العقد ، مثل OP_CAT. بالإضافة إلى ذلك ، اعتمادا على ما إذا كان لدى بوب نظام قبول ، يمكن تقسيم إثباتات الاحتيال إلى إثباتات احتيال مصرح بها وبراهين احتيال بدون إذن. في إثباتات الاحتيال المصرح بها ، يمكن لمجموعات محددة فقط أن تعمل كبوب لبدء التحديات ، بينما في إثباتات الاحتيال غير المصرح بها ، يمكن لأي طرف ثالث أن يعمل كبوب لبدء التحديات. يتفوق أمان إثباتات الاحتيال غير المصرح بها على تلك المصرح بها ، مما يقلل من مخاطر التواطؤ بين المشاركين المسموح لهم.
وفقًا لعدد تفاعلات التحدي والاستجابة بين أليس وبوب، يمكن تقسيم دلائل الاحتيال إلى دلائل الاحتيال ذات جولة واحدة ودلائل الاحتيال متعددة الجولات، كما هو موضح في الشكل ٢.
الشكل 2: إثباتات الاحتيال في جولة واحدة مقابل إثباتات الاحتيال في عدة جولات
كما هو مبين في الجدول 3، يمكن تنفيذ دلائل الاحتيال من خلال نماذج تفاعل مختلفة، بما في ذلك نماذج التفاعل ذات جولة واحدة ونماذج التفاعل متعددة الجولات.
الجدول 3: تفاعل لفترة واحدة مقابل تفاعل متعدد الجولات
في نموذج توسيع Bitcoin Layer2 ، يعتمد BitVM1 آلية إثبات الاحتيال متعددة الجولات ، بينما يستخدم BitVM2 آلية إثبات الاحتيال لجولة واحدة ، ويستخدم bitcoin-circle stark إثباتات الصحة. بين هذه ، يمكن تنفيذ BitVM1 و BitVM2 دون إجراء أي تعديلات على بروتوكول Bitcoin ، بينما يتطلب bitcoin-circle stark إدخال عملية تشغيل جديدة OP_CAT.
بالنسبة لمعظم المهام الحسابية، لا يمكن لـ signet و testnet و mainnet لبيتكوين تمثيل سكريبت بحجم 4 ميغابايت بالكامل، مما يستدعي استخدام تقنية تقسيم السكريبت - أي تقسيم سكريبت الحساب الكامل إلى أجزاء أصغر من 4 ميغابايت، الموزعة عبر مختلف الأوراق التنبيهية.
كما هو موضح في الجدول 3، فإن دلائل الاحتيال متعددة الجولات مناسبة للسيناريوهات التي ترغب في تقليل حساب التحكيم على السلسلة و / أو في الحالات التي لا يمكن فيها تحديد الأقسام الحسابية المشكلة في خطوة واحدة. تتطلب دلائل الاحتيال متعددة الجولات، كما يوحي اسمها، جولات متعددة من التفاعل بين الدافع والتحقق لتحديد الأقسام الحسابية المشكلة، تليها عملية تحكيم استنادًا إلى الأقسام المحددة.
في ورقة البيضاء المبكرة لـ Robin Linus حول BitVM (المشار إليه عادة باسم BitVM1)، تم استخدام دلائل على الاحتيال متعددة الجولات. بافتراض أن فترة كل تحدي تستمر أسبوعًا واستخدام طريقة البحث الثنائي لتحديد الأجزاء الحسابية المشكوك فيها، يمكن أن يصل وقت الاستجابة للتحدي على السلسلة لمحقق Groth16 إلى 30 أسبوعًا، مما يؤدي إلى سوء التوقيت. على الرغم من أن هناك فرق تبحث حاليًا في طرق بحث n-ary أكثر كفاءة من البحث الثنائي، إلا أن توقيتها لا يزال أقل بكثير مقارنة بدورات الأسبوعين في دلائل على الاحتيال من جولة واحدة.
حالياً، تستخدم إثباتات الاحتيال متعددة الجولات في نموذج البيتكوين تحديات مرخصة، في حين أن إثباتات الاحتيال لجولة واحدة حققت طريقة تحدي غير مرخصة، مما يقلل من مخاطر التواطؤ بين المشاركين وبالتالي يعزز الأمان. وفي هذا الصدد، استفاد روبن لينوس بشكل كامل من مزايا Taproot لتحسين BitVM1. لم يتم تقليل عدد جولات التفاعل فحسب، بل تم توسيع طريقة التحدي أيضًا لتصبح نهجًا غير مرخص، على الرغم من الزيادة في حساب الفترة على السلسلة.
في هذا النموذج، يمكن إكمال التحقق من أدلة الاحتيال من خلال تفاعل واحد فقط بين الإثبات والتحقق. يحتاج التحقق فقط إلى بدء تحدي واحد، ويحتاج الإثبات فقط إلى الرد مرة واحدة. في هذا الرد، يجب أن يقدم الإثبات دليلًا يدعي أن حسابه صحيح. إذا استطاع التحقق العثور على تناقضات في هذا الدليل، فإن التحدي ناجح؛ وإلا، يفشل. يتم عرض خصائص أدلة الاحتيال التفاعلية الواحدة في الجدول 3.
الشكل 3: دليل الاحتيال لجولة واحدة
في 15 أغسطس 2024، قام روبن لينوس بإصدار ورقة بيضاء تقنية BitVM2: ربط بيتكوين بالطبقات الثانية، التي نفذت جسرًا عبر السلسلة باستخدام طريقة دليل على الاحتيال في جولة واحدة مماثلة لتلك الموضحة في الشكل 3.
كان OPCAT جزءًا من لغة البرمجة الأصلية عند إصدار بيتكوين ولكن تم تعطيله في عام 2010 بسبب ثغرات الأمان. ومع ذلك ، فقد كانت مجتمع بيتكوين يناقش إعادة تنشيطه لسنوات. تم تعيين OPCAT الآن بالرقم 347 وتم تمكينه على signet بيتكوين.
تتمثل الوظيفة الرئيسية ل OP_CAT في الجمع بين عنصرين في المكدس ودفع النتيجة المدمجة مرة أخرى إلى المكدس. تفتح هذه الوظيفة إمكانية العقود ومدققات STARK على Bitcoin:
على الرغم من أن الحمل الحسابي المطلوب لتشغيل خوارزمية التحقق المقابلة للإثبات SNARK/STARK بعد الإثبات أقل بكثير مما يلزم لتشغيل الحساب الأصلي f مباشرة، إلا أن كمية النص البرمجي المطلوب عند تحويله لتنفيذ خوارزمية المحقق في نص Bitcoin ما زالت هائلة. حاليًا، وبناءً على أوامر العملة المشفرة Bitcoin الموجودة، فإن حجم النص البرمجي المحقق المحسّن Groth16 وحجم النص البرمجي المحقق Fflonk لا يزالان أكبر من 2 جيجابايت. ومع ذلك، فإن حجم كتلة Bitcoin الفردية هو فقط 4 ميجابايت، مما يجعل من المستحيل تشغيل النص البرمجي المحقق بأكمله داخل كتلة واحدة. ومع ذلك، بعد ترقية Taproot، يدعم Bitcoin تنفيذ النصوص عن طريق Tapleaf، مما يسمح بتقسيم النص البرمجي المحقق إلى أجزاء متعددة، حيث يعمل كل جزء منها كـ Tapleaf لبناء شجرة تابتري. يمكن ضمان تماسك القيم بين الأجزاء من خلال التزام البت.
في وجود عقود OP_CAT، يمكن تقسيم التحقق من صحة STARK Verifier إلى معاملات قياسية متعددة أصغر من 400 كيلوبايت، مما يسمح بإكمال التحقق من صحة إثبات STARK بالكامل دون الحاجة إلى التعاون مع المنقبين.
تركز هذا القسم على تقنية الانقسام ذات الصلة لبرمجيات بيتكوين في ظل الظروف الحالية دون إدخال أو تفعيل أي أكواد جديدة.
عند تقسيم النص النصي، يجب موازنة الأبعاد التالية للمعلومات:
حالياً، يمكن تقسيم أساليب تقسيم النصوص إلى الفئات الرئيسية التالية ثلاثة:
على سبيل المثال ، بعد عدة جولات من التحسين ، تم تقليل حجم البرنامج النصي لجهاز التحقق من Groth16 من حوالي 7 جيجابايت إلى حوالي 1.26 جيجابايت. بالإضافة إلى هذا التحسين الحسابي الشامل ، يمكن أيضًا تحسين كل قطعة بشكل فردي للاستفادة الكاملة من مساحة الكومة. على سبيل المثال ، من خلال إدخال خوارزميات أفضل قائمة بحث قائمة على جداول وتحميل وتفريغ الجدول ، يمكن تقليل حجم البرنامج النصي لكل قطعة بشكل أكبر.
تكاليف الحساب وبيئات التشغيل للغات البرمجة في الويب2 مختلفة تمامًا عن تلك الموجودة في سكريبتات بيتكوين، لذلك فإن ترجمة التنفيذات الحالية لمختلف الخوارزميات إلى سكريبتات بيتكوين ليست ممكنة. لذلك، يجب مراعاة تحسينات محددة لسيناريو بيتكوين:
تقدم هذه المقالة أولا قيود نصوص Bitcoin النصية وتناقش استخدام التزامات Bitcoin للتغلب على قيود UTXO عديمة الجنسية ، واستخدام Taproot لاختراق قيود مساحة البرنامج النصي ، واستخدام مخرجات الموصل لتجاوز قيود طريقة إنفاق UTXO ، واستخدام العقود للتغلب على قيود التوقيع المسبق. ثم يقدم نظرة عامة شاملة وملخصا لخصائص إثباتات الاحتيال وأدلة الصلاحية ، وميزات إثباتات الاحتيال المصرح بها وغير المصرح بها ، والفروق بين براهين الاحتيال ذات الجولة الواحدة والمتعددة الجولات ، وتقنية تقسيم نصوص البيتكوين.