Bitcoin Core 32 يسرّع التحقق من الكتل ويُدخل تغييرات جديدة على تقدير رسوم المعاملات

دخل إصدار Bitcoin Core 32.0 المرحلة النهائية من اختبارات ما قبل الإطلاق، بعد أن أصدر المطورون النسخة التجريبية المرشحة للإطلاق v32.0rc1 في 14 سبتمبر، في خطوة تقرّب تحديث البرنامج من موعد الإصدار النهائي المستهدف في 10 أكتوبر.

ووفقًا لصفحة الإصدار الرسمية لمشروع Bitcoin Core على GitHub، تحمل النسخة v32.0rc1 رقم الالتزام d0231bb، وقد جرى توقيعها بتوقيع موثّق من أحد مسؤولي الصيانة في المشروع في 14 سبتمبر عند الساعة 12:58 بالتوقيت العالمي.

ولا يزال جدول الإصدار يستهدف 10 أكتوبر لإطلاق النسخة النهائية v32.0، مع إمكانية تغيير الموعد بحسب نتائج الاختبارات والإصلاحات التي قد تطرأ قبل الإطلاق.

يركز الإصدار الجديد على مجموعة من التحسينات المتعلقة بأداء العقد، وواجهات المحافظ، وحساب الرسوم، والشبكات، والأداء العام، إلى جانب إصلاحات أمنية.

ولا تتضمن مسودة ملاحظات الإصدار أي تغييرات على قواعد الإجماع الخاصة ببيتكوين، ما يعني أن التحديث لا يعيد تعريف المعاملات أو الكتل التي تعتبرها شبكة بيتكوين صالحة.

Bitcoin Core 32 يقترب من الإطلاق النهائي في 10 أكتوبر

دخل مطورو Bitcoin Core مرحلة تجميد الميزات في 20 أغسطس، بحيث اقتصرت التغييرات بعد ذلك على الإصلاحات الضرورية قبل الإصدار.

وفي 14 سبتمبر، جرى فصل فرع 32.x عن فرع التطوير الرئيسي، لتبدأ بذلك دورة اختبار النسخة المرشحة للإطلاق، بالتزامن مع استئناف العمل على الإصدار التالي Bitcoin Core 33 بشكل منفصل.

وتهدف النسخة الأولى المرشحة إلى إتاحة الفرصة لمشغلي العقد ومطوري المحافظ والمستخدمين الآخرين لاختبار البرنامج قبل اتخاذ قرار إطلاق النسخة المستقرة.

كما فتح مشروع Bitcoin Core في 15 سبتمبر موضوعًا مخصصًا لجمع ملاحظات واختبارات الإصدار 32.0rc1، أي بعد يوم واحد من إصدار النسخة المرشحة.

ويطلب المشروع من المختبرين اتباع دليل الاختبار الخاص بالنسخة المرشحة والإبلاغ عن مشكلات البرنامج عبر قضايا منفصلة على GitHub.

وحتى 16 سبتمبر، لم يتم إصدار النسخة النهائية v32.0.

ومن المهم الإشارة إلى أن Bitcoin Core لا يتم تحديثه تلقائيًا؛ إذ يقرر مشغلو العقد بأنفسهم موعد تثبيت الإصدارات الجديدة، ما يعني استمرار تشغيل الإصدارات الأقدم حتى بعد توفر تحديثات أحدث.

وقد لعب هذا النموذج اليدوي للتحديث دورًا مهمًا في إفصاحات أمنية سابقة، إذ كشف Bitcoin Core في مايو عن الثغرة CVE-2024-52911 بعد انتهاء دورة دعم فرع 28.x، رغم أن الخلل كان قد أُصلح بالفعل في Bitcoin Core 29.0 قبل الكشف عن تفاصيله التقنية.

تقدير جديد للرسوم يجمع بين بيانات الذاكرة المؤقتة وسجل الكتل

من أبرز التغييرات التي سيلاحظها المستخدمون في Bitcoin Core 32 التعديل الذي طال وظيفة estimatesmartfee، وهي واجهة RPC تستخدمها المحافظ والتطبيقات لتقدير رسوم معاملات بيتكوين.

وكان نظام التقدير الأساسي يعتمد حتى الآن على سلوك تأكيد المعاملات التي أُدرجت في كتل سابقة.

لكن الإصدار 32 يضيف نظام تقدير منفصلًا يعتمد على المعاملات الموجودة حاليًا في ذاكرة المعاملات المؤقتة (mempool) للعقدة.

ويمكن لنظام التقدير الجديد تقديم تقديرات اقتصادية ومحافظة استنادًا إلى ظروف المعاملات المعلّقة في الوقت الفعلي.

وقبل الاعتماد على هذه البيانات، يتحقق Bitcoin Core من نشاط الكتل الأخيرة، كما يمكنه رفض التقدير إذا بدت ذاكرة المعاملات فارغة بشكل غير طبيعي أو غير مستقرة.

وعندما ينتج النظامان تقديرات صالحة، ستعيد وظيفة estimatesmartfee التقدير الأقل للرسوم.

وبالتالي، لا يمكن لنظام الذاكرة المؤقتة الجديد رفع توصية الرسوم الحالية ضمن الوضع الافتراضي المشترك؛ بل تتمثل وظيفته الأساسية في خفض التقدير عندما تشير ظروف الـmempool الحالية إلى انخفاض المنافسة على مساحة الكتل.

وقد يسمح ذلك للنظام بالاستجابة بصورة أسرع بعد انتهاء فترات ارتفاع رسوم المعاملات.

ففي الوقت الذي قد يواصل فيه النظام المعتمد على سجل الكتل احتساب تأثير المعاملات ذات الرسوم المرتفعة التي تم تأكيدها مؤخرًا، قد تُظهر ذاكرة المعاملات المؤقتة في الوقت نفسه انخفاض عدد المعاملات التي تتنافس على التأكيد.

كما يتيح الإصدار الجديد للتطبيقات استخدام طريقة التقدير السابقة، من خلال خيار fee_rate_estimator، الذي يسمح باختيار:

block_policy

mempool_policy

الوضع الافتراضي المشترك

ويخزن Bitcoin Core إحصاءات نظام تقدير الرسوم الجديد الخاص بالـmempool في ملف بيانات منفصل، بحيث يمكن إعادة تحميلها بعد إعادة تشغيل العقدة.

وستعتمد حسابات رسوم المحافظ على نظام التقدير المشترك افتراضيًا، كما يمكن للاستجابة تحديد نظام التقدير الذي أنتج الرسوم المختارة، في حين توفر مستويات التفصيل الأعلى إحصاءات حول صحة الـmempool للتطبيقات التي تحتاج إلى بيانات أكثر تفصيلًا.

التحقق من الكتل يحصل على دفعة أداء عبر القراءة المتوازية من القرص

يُدخل Bitcoin Core 32 تغييرًا في الطريقة التي تسترجع بها العقد بيانات المعاملات أثناء ربط الكتل، خصوصًا عندما تكون البيانات المطلوبة بحاجة إلى القراءة من وحدات التخزين.

ويستطيع البرنامج الآن إجراء قراءة مسبقة متوازية (prefetch) لمخرجات المعاملات السابقة، المعروفة باسم prevouts، من قاعدة بيانات chainstate عبر عدة خيوط معالجة أثناء استمرار عملية التحقق من الكتل.

ويبلغ الإعداد الافتراضي 8 خيوط للقراءة المسبقة، مع إمكانية رفع العدد إلى 16 خيطًا أو تعطيل القراءة المتوازية بالكامل من خلال ضبط القيمة على صفر.

وتحدد الـprevouts العملات التي يتم إنفاقها من خلال مدخلات المعاملات، وتحتاج العقد إلى هذه المعلومات للتحقق من وجود المدخلات، وعدم إنفاقها سابقًا، واستيفائها لقواعد التحقق المعمول بها.

ويهدف التحسين إلى تقليل الوقت الذي تقضيه العقدة في انتظار عمليات القراءة من القرص عند معالجة كتل تحتوي على مدخلات غير موجودة مسبقًا في ذاكرة التخزين المؤقت الأسرع.

ومع ذلك، سيختلف تأثير التحسين بحسب نوع أجهزة التخزين، وسلوك الذاكرة المؤقتة، وإعدادات العقدة.