183 / 736NEUTRINO

Neutrino

كيف تعثر المحفظة على المدفوعات دون تنزيل السلسلة كاملة

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

Neutrino عميل خفيف لشبكة Bitcoin من Lightning Labs، مكتوب بلغة Go ومصمم أيضًا لتطبيقات الهاتف التي تستخدم Lightning Network. يعتمد على BIP 157 وBIP 158 للعمل بمرشحات الكتل المدمجة. إنه مكتبة برمجية محددة، وليس اسمًا عامًا للمحافظ الخفيفة أو بديلًا عن Full Node الذي يتحقق بنفسه من جميع القواعد.

تفتح آنا محفظتها وتتوقع أن ترى دفعة وصلتها. ولكي يعرض التطبيق الحالة الصحيحة، عليه جلب بيانات شبكة Bitcoin ومعالجتها. يمكن أن يتولى Neutrino هذه المهمة دون تخزين سلسلة الكتل كاملة على الهاتف بصورة دائمة. الكتلة مجموعة معاملات مسجلة في السجل المشترك لشبكة Bitcoin. تسمى الخدمة برمجيًا ChainService، وهي تدير الاتصالات وقاعدة البيانات المحلية ومزامنة ترويسات الكتل. والترويسة ملخص قصير للبيانات الأساسية للكتلة. المفتاح الخاص عدد سري يُستخدم لإنشاء توقيع رقمي يجيز إنفاق الأموال. لكن استخدام Neutrino وحده لا يخبرنا من يحتفظ بمفاتيح آنا الخاصة أو من يوافق على الإرسال. إدارة المفاتيح والشاشات والنسخ الاحتياطية للمستخدم مسؤولية المحفظة التي تستعمل المكتبة. [1]

يمكن تصور المرشح المدمج كفهرس بحث صغير لكتلة واحدة. تنزله المحفظة وتختبر على جهازها إن كان يطابق ما تبحث عنه. وهي تقارن فعليًا نصوصًا برمجية تحدد شروط إنفاق مخرجات معينة من Bitcoin. المخرج جزء من المعاملة يحدد مبلغًا وشروط إنفاقه لاحقًا. لذلك لا تحتاج المحفظة إلى إرسال قائمة عناوينها كاملة إلى الطرف الآخر. وعند وجود تطابق، تجلب الكتلة المعنية وتبحث عن المعاملة الحقيقية. حتى المرشح المبني بصورة صحيحة قد يعطي نتيجة إيجابية كاذبة: تُنزّل الكتلة بلا حاجة لأن العنصر المطلوب غير موجود فيها. لذلك لا يثبت التطابق وحده وصول دفعة أو قيمتها أو قدرة المحفظة على إنفاقها. [1] [2] [3]

تغير آنا هاتفها وتستعيد محفظتها. البحث بدءًا من كتل اليوم فقط لا يكفي إذا كانت قد تلقت مدفوعات من قبل. على التطبيق توفير النصوص البرمجية الصحيحة للمراقبة ونقطة بداية مبكرة بما يكفي. وفقًا للتوثيق، يبدأ Rescan من آخر كتلة معروفة إذا لم تُحدد له كتلة بداية، وليس تلقائيًا من بداية التاريخ كله. لا يستطيع المرشح السليم العثور على عنوان لا تبحث عنه المحفظة، ولا على مدفوعات قديمة في فترة جرى تجاوزها. لذلك يجب التفريق بين استعادة مكتملة ومسح لا يزال جاريًا. خلو القائمة أثناء الاستعادة لا يثبت وحده أن الأموال ضاعت. [1]

يزامن Neutrino ترويسات الكتل وترويسات المرشحات. تتيح ترويسات الكتل فحص الترابط وProof of Work، أي الدليل على العمل الحسابي المنجز، ومتابعة السلسلة ذات أكبر عمل تراكمي. هذا أكثر بكثير من قبول رقم رصيد من خادم دون فحص، لكنه أقل من التحقق المستقل من كل معاملة وقاعدة كما يفعل Full Node. وهما أيضًا سلسلتان مختلفتان من الترويسات. فترويسات كتل Bitcoin لا تتضمن التزامًا مباشرًا بصحة هذه المرشحات. لذا لا يكفي فحص قيم الهاش، وهي بصمات تشفيرية، لاستبعاد مجموعة مرشحات مزورة لكنها متسقة داخليًا. لتوفير العمل حدود محددة فيما يجب الوثوق به. [2] [4]

النظير جهاز آخر في الشبكة يحصل العميل منه على البيانات. يعتمد BIP 157 على مقارنة الإجابات ووجود نظير صادق واحد على الأقل لكشف المرشحات الخاطئة. وإذا سيطر مهاجم واحد على جميع الاتصالات، فلن ينفع عدد الأجهزة وحده. فقد تقدم الإجابة الكاذبة نفسها أو تخفي حالة أحدث. يرتبط هذا العزل عن المصادر الصادقة بما يسمى Eclipse Attack. تحتاج المحفظة إلى مصادر متاحة ومستقلة بما يكفي، وليس مجرد اتصالات. ولا يثبت رمز الاتصال الأخضر أنها تملك بالفعل سجل مدفوعات كاملًا ومحدثًا. [2]

لنفترض أن يان أرسل المال إلى آنا للتو. قد تنتظر معاملته أولًا في Mempool، أي مجموعة المعاملات غير المؤكدة المحفوظة محليًا لدى عقدة، حتى يدرجها مُعدّن في كتلة. تصل إشعارات Neutrino الموثقة recvtx وredeemingtx عند التأكيد داخل كتلة، وليس بمجرد دخول المعاملة إلى Mempool. ويحتاج التطبيق الذي يريد عرض المدفوعات الواردة قبل تأكيدها إلى آلية إضافية مناسبة. لا يستطيع مرشح كتلة كشف ذلك قبل وجود الكتلة نفسها. الإرسال وقبول النظير والتأكيد أحداث مختلفة؛ وغياب إشعار لا يثبت بعد أن يان لم يرسل شيئًا. [1]

لا يفيد تطابق المرشح إلا إذا حصل العميل أيضًا على الكتلة المطلوبة. فإذا لم توفرها الشبكة الآن، فالاستنتاج الصحيح «البيانات غير متاحة بعد»، وليس «الرصيد صفر». وقد تتغير الحالة أثناء إعادة تنظيم السلسلة، عندما تعتمد الشبكة فرعًا آخر بعمل تراكمي أكبر وتفصل كتلًا سبق وصلها. يبلغ Rescan عن وصل الكتل وفصلها كي يعيد التطبيق حساب سجلاته. كذلك ليست الخصوصية مطلقة: لا يتلقى النظير قائمة العناوين التي يجري البحث عنها، لكنه يرى طلبات كتل بعينها وبيانات الشبكة الخاصة بالاتصال. لذلك تظل طريقة جلب البيانات مهمة. [1] [2]

Lightning Network شبكة مدفوعات مبنية على Bitcoin. في قناة الدفع، يحدّث مشاركان كيفية تقسيم الأموال المشتركة بينهما بدلًا من تسجيل كل دفعة في كتلة Bitcoin. يوفر Neutrino بيانات السلسلة، لكنه لا يحتفظ بنفسه نيابة عن المستخدم بالمعلومات اللازمة لاستعادة الحالة الحالية للقنوات. لذلك فإن استعادة سجل المحفظة واستعادة القنوات مهمتان مختلفتان. يصف README حفظ المرشحات المطلوبة وجلب الكتل دون تخزينها دائمًا؛ ويجب تقييم المتطلبات الفعلية وفق إصدار التطبيق وإعداداته. قبل الاعتماد على هذه المحفظة، ينبغي فهم إجراءاتها الخاصة بالنسخ الاحتياطي والاستعادة وسلوكها عند تعطل مصادر البيانات. صغر قاعدة البيانات في الهاتف لا يلغي هذه المسؤوليات. [1] [4]

للحصول على صورة أوضح، اقرأ هذا المدخل مع Compact Block Filters, Compact Block Filters, Full Node, Lightning Network, Eclipse Attack, Bitcoin. تشير إلى هذا المدخل أيضًا Compact Block Filters, Compact Block Filters.

DOC · 001Lightning Labs — Neutrino READMEمصدر أولي DOC · 002BIP 157 — Client Side Block Filteringمواصفة DOC · 003BIP 158 — Compact Block Filtersمواصفة DOC · 004Bitcoin developer guide — Operating Modesتوثيق
تمت المراجعة: المصادر أولًا · ليست نصيحة استثمارية