Compact Blocks طريقة لنقل كتل Bitcoin وفق BIP 152 مع تقليل البيانات المكررة. لا تصغّر الكتلة نفسها ولا تخفف قواعدها: على المستقبِل استعادة المحتوى كاملًا والتحقق منه قبل القبول.
تريد آنا إرسال كتلة جديدة إلى بيتر، لكنه يملك كثيرًا من معاملاتها مسبقًا. تجمع الكتلة معاملات في دفعة تُضاف إلى السجل المشترك. إعادة إرسالها كلها تكرر المعلومات. بدلًا من ذلك، توفر Compact Blocks ترويسة وقائمة بعلامات قصيرة للعثور على المعاملات المعروفة. الترويسة جزء قصير من الكتلة يتضمن معلومات أساسية، منها إشارة إلى الكتلة السابقة وبصمة للتحقق من المعاملات. وللقارئ التقني: طول العلامة 48 بت، أي 6 بايتات، وتنتج من اقتطاع مخرجات دالة SipHash-2-4. تُشتق معلماتها من الترويسة ورقم إضافي لهذا النقل يسمى nonce. لذلك ليست العلامة اسمًا دائمًا للمعاملة في شبكة Bitcoin كلها. [1] [2] [7]
لا تستطيع القائمة أن تحل محل كل شيء. ترسل آنا معاملات مختارة كاملة مع مواقعها في الكتلة. المثال المعتاد هو Coinbase Transaction، أول معاملة في الكتلة، التي تخصص مكافأة التعدين؛ ولا علاقة لها بمنصة التداول ذات الاسم نفسه. تُنشأ لهذه الكتلة تحديدًا، لذلك لا تكون عادة ضمن معاملات بيتر المنتظرة. تتكامل المعاملات الكاملة والعلامات القصيرة عند إعادة التركيب. [1] [2]
Mempool لدى بيتر مجموعة محلية من المعاملات التي تعرفها عقدته، لكنها لم تتأكد بعد في السلسلة التي تعتمدها. يحسب العلامات القصيرة نفسها للمعاملات المتاحة ويبحث عن تطابقها مع قائمة آنا. لا يفترض أن الجميع يملك المجموعة نفسها. ولأن العلامة قد تطابق أحيانًا أكثر من معاملة، فالتطابق وحده ليس دليلًا نهائيًا على صحة المحتوى. [1] [2]
إذا بقيت مواقع فارغة أو ملتبسة، يطلب بيتر المعاملات المحددة بحسب مواقعها. تسمى رسالة الطلب getblocktxn، والرد الذي يحمل المعاملات blocktxn. لا حاجة إلى حفظ الأسماء: المهم طلب البيانات الحقيقية، لا تخمين المحتوى. تضيف رحلة الطلب والرد وقتًا. وإذا فشلت إعادة التركيب، يمكن تنزيل الكتلة كاملة. [1] [3]
على بيتر استعادة المعاملات الدقيقة بترتيبها الصحيح وفحص ارتباطها بالترويسة. تجمع Merkle Tree المعاملات في بصمة للتحقق وتساعد على فحص ذلك الارتباط. لكن التركيب الصحيح لا يغني عن فحص القواعد. Full Node هو برنامج يستخدمه بيتر للتحقق بنفسه من قواعد Bitcoin، مثل الإذن بإنفاق الأموال ومقدار المكافأة. يثبت التوقيع الرقمي الإذن بالدفع باستخدام مفتاح خاص، وهو قيمة عددية سرية، دون الكشف عن المفتاح. لا يمنح النقل المختصر استثناءً لكتلة غير صالحة. [1] [8]
تتفق العقد المتجاورة على النمط عبر sendcmpct. في الخيار السريع تعلن رسالة cmpctblock، التي تحمل بيانات إعادة التركيب، الكتلة الجديدة مباشرة. بعد الفحوص الأولية المطلوبة، يجوز للمرسِل بدء النقل قبل انتهاء كل فحوص المعاملات. عليه أن يفحص، ضمن متطلبات أخرى، الاتصال بالسلسلة المتحقق منها وProof of Work بوصفه دليل العمل الحسابي وارتباط الترويسة بالمعاملات. ويبقى على المستقبِل التحقق من الكتلة كاملة قبل قبولها في سجله. [1] [4]
يعلن الخيار الآخر أولًا كتلة جرى التحقق منها عبر inv أو headers. ثم يطلب بيتر البيانات المختصرة إن احتاج إليها. قد يتجنب بذلك استلام كتلة حصل عليها من طريق آخر، مقابل خطوة اتصال إضافية. يمكن للنمطين توفير البيانات مقارنة بإعادة إرسال كل المعاملات. يختلفان في وقت الإرسال والحاجة إلى طلب سابق، لا في معيار صلاحية الكتلة. [1] [7]
يمكن أن تحمل معاملتان مختلفتان العلامة القصيرة نفسها. يسمى ذلك تصادمًا. الأمر كشخصين لهما الأحرف الأولى نفسها: لم يعد الاختصار كافيًا للتمييز. بحسب موضع المشكلة، يطلب البرنامج بيانات إضافية أو ينتقل إلى الكتلة الكاملة. لا يكسر التصادم تواقيع Bitcoin ولا يجعل كتلة غير صالحة صالحة. المطلوب فحص المحتوى الحقيقي، لا مجرد تطابق العلامات. [1] [2]
يدعم الإصدار 2 من البروتوكول المختصر SegWit، الذي يفصل التواقيع وبيانات تحقق أخرى في جزء witness. يستخدم wtxid، وهو معرّف يشمل تلك البيانات، بدل txid الذي لا يشملها. تُنقل المعاملات الكاملة مع بيانات witness المطلوبة وفق BIP 144. لا تُرمى تلك البيانات كي تبدو الرسالة أصغر. كما أن إصدار بروتوكول النقل ليس رقم إصدار الكتلة نفسها. [1] [6]
عندما تكون معاملات كثيرة معروفة لدى آنا وبيتر، تنتقل الكتلة بقدر أقل بكثير من البيانات المكررة. يساعد ذلك أيضًا الاتصال المنزلي عند وصول كتلة فجأة. إذا كان المشترك قليلًا، تقل الوفورات بسبب الطلبات الإضافية. الهدف الرئيسي هو تقليل بيانات النقل؛ الوصول الأسرع فائدة ممكنة، وليس وعدًا بانعدام الانتظار أو بحجم ثابت للرسالة. ولا ينشئ ذلك حدًا جديدًا لحجم كتل Bitcoin. [5] [7]
للحصول على صورة أوضح، اقرأ هذا المدخل مع Block Propagation, Initial Block Download, Eclipse Attack, vByte, Bitcoin, معاملة كوينبيس. تشير إلى هذا المدخل أيضًا Stale Block, Eclipse Attack, Selfish Mining, Block Propagation.