هذا المقال مأخوذ من المقال الأصلي للديكريد عن النظام البسيط للتحقق من الدفع (SPV). يمكنك العثور على المشاركة الأصلية على هذا الرابط: https://docs.decred.org/wallets/spv/#what-is-spv.
ما هو النظام البسيط للتحقق من الدفع SPV؟
يسمح نظام التحقق البسيط للدفع (Simple Payment Verification SPV) باستخدام محفظة الديكريد دون الحاجة إلى
تنزيل البلوكشين بالكامل. تحتاج المحفظة التي تعمل في وضع SPV فقط إلى تحميل الكتل الكاملة التي تحتوي على
معاملات ذات صلة بها (بمعنى المعاملات التي تتضمنها عناوين المحفظة). وهذا يقلل من احتياجات المحفظة من المعدات
ويقلل إلى حد كبير من وقت التحميل الأولي للمحافظ الجديدة.
تم إنشاء SPV مباشرة بواسطة أداة dcrwallet CLI
— ما تستخدمه Decrediton والمحافظ الرسمية الأخرى
وراء الكواليس — حتى يتمكن جميع مستخدمي المحافظ الرسمية للديكريد من تمكين SPV.
لماذا تمت إضافة النظام البسيط للتحقق من الدفع SPV إلى محفظة dcrwallet؟
عند التشغيل في وضع النظام البسيط للتحقق من الدفع SPV يتم تخفيض متطلبات الأجهزة لتشغيل محفظة
الديكريد بشكل كبير. لأنه
بدلا من تحميل البلوكشين بالكامل ، ستقوم محفظة SPV بتحميل الكتل التي تحتوي على معاملات ذات
الصلة بالمحفظة، أما بالنسبة لباقي الكتل الأخرى في السلسلة فيتم تحميل معلومات الإرسال فقط. يتم تقليل مقدار طاقة المعالجة المطلوبة
نظرًا لأن جهازًا يعمل على محفظة SPV
سيثبت صحة إثبات العمل ورأس السلسلة بدلاً من التحقق من صحة كل معاملة في كل
كتلة وضمان توافق محتويات القوالب مع معلومات الإرسال.
ونتيجة لهذه الاحتياجات المخفضة، يمكن أن تعمل محافظ الديكريد
على مجموعة أوسع من الأجهزة - لا سيما الأجهزة المحمولة. فعادة ما تكون الهواتف الذكية والأجهزة
اللوحية محدودة بسعة واحدة على الأقل من طاقة وحدة المعالجة المركزية أو سعة
التخزين أو التنزيل، وتحد أنظمة التشغيل المتنقلة من مقدار معالجة العمل في
الخلفية التي يمكن لكل تطبيق تنفيذها، مما يجعل تشغيل عقدة كاملة أمراً غير عملي
أو مستحيل.
ومن المزايا الأخرى التي تقدمها وظيفة النظام البسيط للتحقق من الدفع SPV تقليص كبير في الوقت اللازم لتشغيل محفظة
جديدة تمامًا ، مما يوفر تحسينًا كبيرًا في تجربة المستخدم.
كيف يعمل النظام البسيط للتحقق من الدفع SPV؟
في بداية
كل كتلة أضيفت إلى كتلة بلوكشين الديكريد، توجد 180 بايت من البيانات تسمى رأس الكتلة. يصف رأس الكتلة المعلومات الأساسية حول
الكتلة بما في ذلك تجزئة الكتلة وجذر ميركيل (مجموع كل تجزئات المعاملة في الكتلة)
، والنصف غير المحسوب الذي تم حسابه بواسطة المعدنين. ويتم أيضًا إنشاء فلتر محدد مسبقًا لكل
كتلة ، استنادًا إلى جميع المعاملات داخل الكتلة.
عند تشغيل محفظة SPV فإنها سوف تتصل بشبكة
الديكريد باستخدام اتصالات نظير لنظير، وستقوم بتحميل المجموعة الكاملة من
الترويسات والفلترات. ستتحقق المحفظة بعد ذلك من صحة رأس السلسلة
للتأكد من صلاحية السلسلة وإثبات عملها. وبمجرد الانتهاء من ذلك، ستستخدم المحفظة
الفلتر لتحديد أي كتل تحتوي على المعاملات المملوكة محليا دون تحميل أي بيانات
خاصة إلى العقد البعيدة. بعد ذلك، يمكن للمحفظة استخدام شبكة نظير لنظير لتحميل هذه الكتل ، ومسحها للمعاملات ذات الصلة وتحديدها لتحديث سجل
المعاملات الشخصية والتوازن.
كيف يختلف هذا عن محفظة "خفيفة"؟
إن
المحافظ "الخفيفة" مثل Exodus أو Atomic تحقق بالفعل بعض فوائد
محفظة SPV - على سبيل المثال ، تسمح هذه الحافظات
بإرسال واستقبال معاملات الديكريد بأقل وقت بدء
التشغيل و بدون تحميل كامل السلسلة. كما توفر المحافظ الخفيفة مستوى من الراحة ولكن
غالباً ما تكون هناك عواقب خفية لأنها تعتمد على واجهة برمجة تطبيقات API المقدمة من قبل خدمة مركزية:
- تعتمد المحفظات الخفيفة على خدمة من بعد لمراقبة العناوين المملوكة وتقديم الإخطارات عند استلام العناوين للمعاملات.
- غالبًا ما يُطلب
من المستخدمين تحميل مفتاح عام موسّع إلى الخادم المركزي حتى يكون على علم
بكافة العناوين المملوكة، مما قد يعرض خصوصيات المستخدمين للخطر.
- لا تقوم المحافظ الخفيفة بالتحقق من صحة المعلومات التي تتلقاها من خلال فحص البلوكشين مباشرة -- فلديهم ثقة عمياء بالمعلومات التي يوفرها الخادم المركزي. فهم لا يحمّلون أي بيانات خاصة إلى العقد البعيدة ويكتشفون معاملاتهم الخاصة من خلال فحص البلوكشين مباشرة.
هل هناك أي سلبيات لهذا النظام؟
- لا يدعم نظام SPV محافظ التصويت. فمحافظ التصويت لها مسؤولية التصويت على صحة الكتلة الأخيرة ، والمحفظة لا يمكن أن تكون على يقين من صحتها ما لم تثبت الكتلة الكاملة وصولا إلى تلك الكتلة. ومع ذلك، فإنه من الممكن شراء التذاكر وتخصيص حقوق التصويت لمقدم خدمة التصويت.
- تقوم محافظ SPV
فقط بتنزيل الكتل التي لها معاملات مرتبطة بالعناوين المملوكة لها، والتي يمكن أن تكشف المزيد من المعلومات حول
المحفظة أكثر مما لو أنها قامت بتنزيل كل كتلة.هذا لا يمثل سوى انخفاض طفيف جدا في الخصوصية ،
لكنه مع ذلك يبقى إنخفاضا. ويمكن التخفيف
من ذلك بتحميل الكتل من نظراء متعددين بحيث لا يستطيع أي نظيرمن رؤية القائمة
الكاملة من الكتل التي يتم تحميلها بواسطة المحفظة. وحتى إذا كان هنالك مراقب مجهول على الشبكة قادر على رؤية أي من الكتل يتم تنزيلها من قبل المحفظة
، فلن يتمكن من تحديد المعاملات ذات الصلة الموجودة في هذه الكتل .
- المحافظ التي
تعمل بنمط SPV
قادرة فقط على التحقق من ترويسات الكتلة التي تقوم بتحميلها وليس الفلاتر.وهذا يجعل
الهجوم "السلبي الزائف" محتملا،
حيث يمكن لنظير خبيث يعرف محفظة معينة في انتظار معاملة معينة أن يرسل
إلى المحفظة فلترا مزيفا لا يتضمن المعاملة، مما يؤدي إلى عدم تحميل المحفظة
للكتلة، وبالتالي لا يصبح على بينة من وجود المعاملات. ستظل
هذه المعاملة مرئية لجميع العقد والمحافظ التي تثبت صلاحيتها بالكامل، وستظل تظهر في
مستكشف الكتلة. تتمثل إحدى
الطرق لمنع هذه المشكلة في إضافة هاش الفلتر إلى جزء ترويسة الكتلة الذي تم
التحقق منه بواسطة إثبات العمل، مما يسمح لمحافظ SPV
بالتحقق بسهولة من صلاحية الفلاتر دون الحاجة إلى تنزيل كتلها. تم اقتراح مقترح لإجراء هذا التغيير بالفعل، غير أنه سيكون من
الضروري إجراء تفرع لإجراء التغيير المطلوب في نموذج ترويسة الكتلة. سيناريو
"إيجابي زائف" غير ممكن.إذا كانت العقدة
الخبيثة توفر مرشحا وهميا يتضمن معاملة غير موجودة، فستقوم المحفظة ببساطة
بتنزيل الكتلة الكاملة ، ومقارنتها بالفلتر واكتشاف أن المرشح ليس حقيقيا.
كيف يمكنني استخدام spv؟
dcrwallet CLI
لتمكين وضع SPV في dcrwallet قم ببساطة بتقديم علامة --spv عند بدء العملية. هناك أيضًا علامة spvconnect اختيارية تعطل ربط نظام أسماء النطاقات
وتسمح لك بتحديد عنوان IP لعقدة كاملة ترغب في
مزامنتها. - يمكن تحديد spvconnect عدة مرات للمزامنة من نظائر متعددة.
Decrediton
إذا رغبت بإستخدام Decrediton لأول مرة، فيتوجب عليك تعديل ملف config.json من أجل تمكين SPV. حدد مكان الملف في Decrediton data directory،
وحدث إعدادات spv_mode إلى true.
إذا تمت مزامنة Decrediton بالفعل مع الشبكة ، فمن الممكن تغيير وضع SPV من خلال واجهة المستخدم الرسومية. افتح محفظة ، وحدد خيار "SPV" في علامة تبويب الإعداد. هناك أيضًا إعداد "SPV Connect" في علامة التبويب هذه ، مما يسمح لك
بتحديد عنوان IP لعقدة كاملة ترغب في
مزامنتها.