لنتحدث عن مزامنة المحافظ الرقمية مع شبكة Bitcoin. نوجز النهج الرئيسية ، ومبادئ عملها وتعقيدها. يمكن أن تكون المواد مفيدة ليس فقط للمطورين ، ولكن أيضًا للمستخدمين العاديين للتعرف على ميزات المحافظ الرقمية وجوانب العمل الآمن مع المحافظ.
استنادًا إلى المواد الواردة في هذه المقالة ، تم تسجيل إحدى محاضرات دورة blockchain عبر الإنترنت "
مزامنة المحافظ مع شبكة Bitcoin ".
ميزات المحفظة الأساسية
لنبدأ بالوظيفة الأساسية للمحفظة الرقمية:
- النسخ الاحتياطي للمفاتيح الخاصة ؛
- قبول الدفع ؛
- عرض التوازن
- عرض سجل المعاملات ؛
- إرسال المدفوعات.
لعمل نسخة احتياطية من المفاتيح الخاصة ، ما عليك سوى الوحدة المسؤولة عن تخزين المفاتيح وإدارتها. ومع ذلك ، في حالة الوظائف الأربع المتبقية ، ستحتاج بالتأكيد إلى العمل مع شبكة Bitcoin. في الواقع ، من أجل قراءة وكتابة قاعدة بيانات مشتركة للمعاملات ، يجب أن تصبح على الأقل إحدى عقد هذه الشبكة واتباع المواصفات الخاصة بمعالجة البيانات وتبادلها فيها. وبالتالي ، من الضروري الحصول على بيانات حول جميع المعاملات التي شاركت فيها عناوين محفظة معينة. ستكون هناك حاجة أيضًا إلى البيانات المتعلقة بالحالة الحالية للشبكة لإعداد معاملة جديدة وإجراء الدفع.
أهم شيء يجب على مستخدم المحفظة الرقمية معرفته بشكل موثوق عند قبول المدفوعات وإرسالها هو حالة معاملاته. من الواضح أن المعاملة تعتبر غير مكتملة إذا تم إرسال المعاملة ، لكنها لم تحصل على تأكيد كامل. ونتيجة لذلك ، لا يمكن للمستلم قبول الدفع من أجل ، على سبيل المثال ، إعادة البضائع أو تقديم الخدمة.
صعوبات العمل في شبكة موزعة
العمل مع شبكة موزعة هو موضوع معقد إلى حد ما ، والذي عادة ما يواجه المشاكل التالية. يتمثل أحدها في طريقة التحقق من البيانات المستلمة من شبكة موزعة ، والثاني هو تحسين تخزين بيانات هذه البيانات. تتعارض هذه المتطلبات إلى حد ما ، نظرًا لأن كمية أكبر من البيانات المخزنة تسمح بالتحقق الكامل من المعاملات والكتل الجديدة. لا يوجد حل مثالي لهذه المشاكل ، فمن المستحيل معالجة المعاملات بشكل موثوق به وبحد أدنى من الموارد ، لذلك عليك أن تبحث عن بعض التوازن ، وحل وسط من البساطة والأمان.
مشكلة أخرى هي على النحو التالي. للحصول على سجل المعاملات في عنوان محدد على عقدة شبكة كاملة ، يجب أن تمر عبر blockchain بالكامل (من التكوين إلى آخر المعروف) ، وهو طويل بما فيه الكفاية ، نظرًا لأن هذه كمية كبيرة من البيانات ، والقوة الغاشمة هي طريقة فعالة قليلاً. لذلك ، يمكنك استخدام أساليب معينة لتحسين الاستعلامات. لهذا ، يتم استخدام الوظائف الإضافية الخاصة عبر عقدة شبكة عادية ، مما يساعد على فهرسة سلسلة الكتل وذاكرة التخزين المؤقت لبعض البيانات لتسريع البحث عن المقاييس الشائعة. من خلال هذا المبدأ ، يعمل أي مستكشف blockchain ، على سبيل المثال blockchain.info ، والذي يعيد بسرعة بيانات حول أي عنوان تقريبًا ، حول أي معاملة ، إلخ.
لذا ، هناك العديد من الأساليب المختلفة بشكل أساسي لتنفيذ تفاعل ومزامنة المحفظة الرقمية مع شبكة موزعة. دعونا نلقي نظرة عليهم.
تقترب مزامنة المحفظة مع شبكة الدفع
هناك ثلاث طرق رئيسية. يفترض الأول أن المحفظة نفسها هي عقدة كاملة لشبكة Bitcoin. يستخدم الأسلوب الثاني ما يسمى العقدة الموثوقة. في الواقع ، هذا مضيف غريب ، لكن مستخدم المحفظة يثق به. وينطوي النهج الثالث على التفاعل المباشر مع عقد الشبكة الأخرى ، ولكن في نسخة خفيفة ، باستخدام منهجية التحقق من الدفع المبسطة (SPV). تتيح لك هذه التقنية التحقق من صحة المعاملة بدرجة عالية من الموثوقية إلى حد ما ، ولكن ليس اللجوء إلى إطلاق عقدة شبكة كاملة. دعونا نلقي نظرة فاحصة على كل من طرق المزامنة هذه.

العمل مع مضيف كامل
في الحالة الأولى ، كل شيء بسيط للغاية. تحتوي محفظتك على وحدة نمطية تخزن سلسلة الكتل بأكملها ، ووحدة تتواصل مع العقد الأخرى لشبكة Bitcoin. لذلك ، يمكنك دائمًا التحقق من معاملة واردة جديدة: هل تتوافق حقًا مع قواعد البروتوكول ، هل تلتزم بنفقات مزدوجة ، وما إلى ذلك. يمكنك التحكم الكامل في التحقق من البيانات.
عيب هذا النهج هو الحاجة إلى تخصيص كمية كبيرة من مساحة القرص لتخزين blockchain كاملة ، للحفاظ على عقدة الشبكة في عملية دون انقطاع وتحديثات البرامج في الوقت المناسب.
يتم استخدام هذه الطريقة من قبل المستخدمين العاديين الذين يقبلون بانتظام ويرسلون المدفوعات بكميات كبيرة ، الأمر الذي يتطلب مستوى عال من الموثوقية. بالإضافة إلى ذلك ، فإن جميع الخدمات الرئيسية التي توفر إمكانية التخزين المركزي لبيتكوين والوصول عبر الإنترنت إلى المحفظة تستخدم بالضرورة هذا النهج. نظرًا لوجود متطلبات عالية للأمان ، وكذلك للعمل المستقل مع Bitcoin.
من المهم أن نفهم أن مستخدم تخزين البيتكوين المركزي يعتمد بالكامل على هذه الخدمة والتشغيل الصحيح لعقدة الشبكة التي تستخدمها هذه الخدمة. في الواقع ، إذا تم تخزين العملات المعدنية على هذه الخدمة ، فإنها لا تنتمي إلى المستخدم ولكن إلى الخدمة.
لاحظ أن استخدام هذا النهج هو واحد من أبسط وأكثر موثوقية ، حتى بالنسبة للمستخدم العادي. للقيام بذلك ، تحتاج فقط إلى أخذ شفرة المصدر أو الثنائيات الجاهزة ، على سبيل المثال ، Bitcoin Core وتشغيل البرنامج. يمكن اعتبار العيب الكبير متطلبات الكمبيوتر فقط.
العمل مع مضيف موثوق به
الفرق بين هذا النهج والأسلوب السابق هو فصل منطق المحفظة ومنطق التحقق من المعاملات. هناك ما يسمى عقدة شبكة بيتكوين الموثوقة. على وجه التقريب ، هذه هي عقدة شبكة Bitcoin الأكثر شيوعًا ، والتي يعهد إليها المستخدم بالتحقق من معاملاته. على سبيل المثال ، يمكن أن يكون مضيفًا يدعمه صديقه ، ويمكن للمستخدم أن يعهد إليه بفحص معاملاته.
في كثير من الأحيان يتم استخدام هذا النهج في المحافظ الرقمية المحمولة. افترض أن شركة تقوم بتطوير محفظة للهاتف المحمول تدعم المواقع الموثوق بها وتعهد بأنها ستضمن التحقق الصحيح من المعاملات. في هذه الحالة ، يثق المستخدمون في الشركة لمطور محفظة رقمية ، في الواقع ، يؤمنون بالوعود. ولكن في الوقت نفسه ، من المفيد أن نفهم أنه يمكن للمستخدم تخزين مفاتيحه الخاصة بشكل مستقل وضمان المعاملات على جهازه. ومع ذلك ، لا يتحقق المستخدم من حالة تأكيد المعاملة ، ولكنه يسأل العقدة الموثوق بها.
ما هي مزايا وعيوب هذا النهج؟ كما في الحالة السابقة ، وإن كان ذلك بشكل غير مباشر ، يمكنك التأثير على التحقق من المعاملات في شبكة Bitcoin ، لأن المستخدم لا يزال لديه عقدة شبكة موثوق بها. الميزة هي أنه يتم تحريرها من الاضطرار إلى تخزين نسخة كاملة من blockchain على أجهزتها. ومع ذلك ، فإن الاعتماد على عقدة موثوق بها هو عيب ، لأنه في حالة فشلها ، لا يمكن للمستخدم دائمًا التبديل إلى عقدة موثوقة أخرى. نظرًا لأن التحقق من المعاملات يتم على خادم بعيد ، فأنت بحاجة إلى التأكد من موثوقية قناة نقل البيانات بين المحفظة والخادم الذي يتم التحقق منه. مع هذا النهج ، تظهر تهديدات مثل "رجل في الوسط".
عند استخدام مضيف موثوق به ، يتم تخزين المفاتيح الخاصة بشكل منفصل عن عناوين المحفظة. في هذه الحالة ، لا يمكن أن تعرف العقدة نفسها بشكل موثوق التغييرات التي تحتاج إلى تتبعها في العناوين. هذا يعني أنه يجب على المحفظة الرقمية من وقت لآخر إبلاغ العقدة الموثوقة بقائمة العناوين التي تهمها.
عيب هذا النهج هو اعتماد المحفظة الرقمية على العقدة الموثوقة ، لا سيما من حيث الوصول إلى البيانات ذات الصلة لنظام الدفع. بمجرد أن يفقد المستخدم الوصول إلى العقدة الموثوقة أو ترفض العقدة الخدمة ، يفقد المستخدم الاتصال بالشبكة. وفقًا لذلك ، يفقد المستخدم القدرة على تلقي المدفوعات وإرسالها. لتقليل مخاطر فقدان الوصول إلى موقع موثوق به ، يمكنك تحديد مواقع موثوقة متعددة. وهذا يعني أنه في الظروف العادية ، يتصل المستخدم ويعمل مع عقدة موثوقة واحدة ، ولكن في حالة فقدان الوصول ، تتصل المحفظة الرقمية تلقائيًا بعقدة أخرى موثوق بها. في الواقع ، مع كل اتصال ، تختار المحفظة عشوائيًا عقدة واحدة من قائمة المواقع الموثوقة.
يتم استخدام هذه الطريقة بشكل أساسي من خلال المحافظ المحمولة ، لأنها تتيح لك التحقق من المعاملات وتبسيط تشغيل تطبيق الهاتف المحمول. أمثلة على محافظ البيتكوين المحمولة هي Mycelium و Coinomi. كما قامت شركة Distributed Lab بتطوير وصيانة محفظة تسمى Bitxfy ، حيث يتم تطبيق هذا النهج.
العمل مع مضيف SPV
الطريقة الثالثة الشائعة لمزامنة المحفظة الرقمية مع شبكة Bitcoin هي عقدة شبكة خفيفة الوزن. هذا عبارة عن التحقق من الدفع المبسط (SPV). في هذا النهج ، قد لا تحتاج إلى تشغيل العقد الكاملة الخاصة بك أو تحديد العقد الموثوقة. من المفترض أن المحفظة الرقمية تتواصل مباشرة مع العقد الأخرى في الشبكة: في الواقع ، فإنها تختار عدة عشرات من العقد الكاملة لأشخاص آخرين وتحافظ على اتصال معهم. الفرق هو أن العقدة خفيفة الوزن تتواصل مع العقد الأخرى بشروط متساوية ، حيث تتبادل رسائل P2P معها ، لكنها لا تخزن سجل المعاملات بالكامل. هنا ، من أجل التحقق من المعاملات الواردة ، يتم استخدام تقنية SPV. في الواقع ، تُجري العقدة الخفيفة الوزن جزءًا فقط من أهم عمليات التحقق من تلك التي تجري عقدة شبكة كاملة.
كيف يعمل في هذه الحالة؟ بدلاً من تلقي كتل ، كما تفعل العقدة الكاملة ، تتلقى عقدة SPV رؤوس كتل فقط ، وهي أصغر بكثير (80 بايت). يحتوي الرأس على البيانات اللازمة للتحقق من تأكيد معاملة معينة في هذه الكتلة. وبشكل أكثر تحديدًا ، يوجد في رأس الكتلة حقل Merkle Root حيث يتم حساب قيمة التجزئة من جميع المعاملات في الكتلة ، ويتم حسابها وفقًا لنظام Merkle Tree.

يتيح لك مخطط Merkle Tree التحقق مما إذا كانت قيمة التجزئة لمعاملة معينة مضمنة في Merkle Root ، دون وجود جميع المعاملات الأخرى في الكتلة. وبالتالي ، من خلال وجود معاملة ورأس كتلة وفرع Merkle لهذه المعاملة (يمكنك طلبها من عقدة كاملة) ، يمكن للمحفظة الرقمية التحقق من أن المعاملة قد تم تأكيدها بالفعل في كتلة معينة.
لماذا لا يمكن اعتبار ذلك تحققًا كاملاً للمعاملات؟ بالطبع ، يحصل المستخدم على استقلالية عن عقد شبكة معينة ويمكنه التواصل مباشرة مع شبكة موزعة. للقيام بذلك ، لا يحتاج إلى تخزين blockchain بالكامل. ولكن العيب هو أن العميل خفيف الوزن لا يتحقق بشكل مستقل من المعاملة تمامًا ، لأنك لا تملك جميع البيانات اللازمة لذلك (على سبيل المثال ، العملات غير المنفقة). يتحقق فقط من حقيقة التحقق من صحة المعاملة من قبل المدققين - أي أنه يتأكد من أن هذه المعاملة قد تم التحقق منها بالكامل من قبل العقد الأخرى وأصحاب معظم القوة الحاسوبية للشبكة (عمال المناجم). في هذه الحالة ، ترجع الموثوقية مرة أخرى إلى الثقة في أن معظم قوة المعالجة تستخدم لعملية عادلة. بمعنى آخر ، أنت لا تتحقق من المعاملة بنفسك ، لكنك تثق بهذا للأغلبية.
ميزة استخدام المحافظ الرقمية التي تطبق نهج عقدة SPV هي الحاجة إلى الحفاظ على اتصال الشبكة بعدد كبير من عقد الشبكة المستقلة المستقلة. يعد ذلك ضروريًا لتقليل احتمالية اتصال العقدة واستلام البيانات فقط من عقد المهاجم. ثم يمكن للمهاجم أن يفرض على المستخدم حالة بديلة (وهمية) من تاريخ المعاملة. ونتيجة لذلك ، يمكن للضحية قبول الدفع من المعاملة ، والذي تم تأكيده وفقًا لإصدار المهاجم ، على الرغم من أنه في الواقع لا. لزيادة فرص تلقي البيانات الحالية على الحالة الحقيقية للشبكة ، يجب على المستخدم زيادة عدد العقد المستقلة للاتصال. كلما زاد العدد ، قل احتمال تآمرهم جميعًا ضد المستخدم.
كما فهمت بالفعل ، تتطلب عقد SPV تشغيلًا مستقرًا لاتصال الشبكة ، ومع ذلك يتم استخدامها غالبًا حتى في تطبيقات الهاتف المحمول. نهج المزامنة هذا مع شبكة الدفع واسع الانتشار ويتم استخدامه في عدد من محافظ Bitcoin الشائعة. من بينها محفظة Bitcoin و Electrum وكذلك محفظة الخبز.
أسئلة متكررة
"أين يمكنني العثور على عقد كاملة يمكنك الوثوق بها؟"من الصعب الإجابة على العقد التي يمكنك الوثوق بها. هذه مسألة تفضيل شخصي. هناك خدمات توفر معلومات موثوقة ، مثل Blockchain.info ، نادرًا ما يثق بها أي شخص ، خاصة عندما يتعلق الأمر بكميات كبيرة. يجب على المرء توخي الحذر الشديد في اختيار عقدة موثوقة ، حيث أنها وسيط بين المستخدم وشبكة الدفع. بمجرد تعطل Blockchain.info لمدة يومين بسبب مشاكل مع مزود DNS ، لم تتمكن المحافظ التي تستخدم Blockchain.info كعقدة موثوقة من المزامنة مع شبكة Bitcoin وعملها بطريقة أو بأخرى.
- ما هي الضمانات التي يقدمها فريق المحفظة وما هي مسؤوليته؟هذه القضية قانونية أكثر منها تقنية. يحتوي أي برنامج يتم توزيعه رسميًا على "شروط الاستخدام" ، والتي تنص على ما يمكنك تقديمه للمطورين إذا كانت هناك مشكلات معينة في برامجهم. تختلف "شروط الاستخدام" باختلاف التطبيقات. كما هو الحال دائمًا ، يجيب المستخدم على السؤال عما إذا كان يثق بالمطورين أم لا ، قبل البدء في استخدام منتجهم.
- من يقرر ما إذا كانت العقدة الموثوقة؟فقط المستخدم الذي يملك المحفظة. إن قيمة المواقع الموثوقة هي تبسيط المحفظة بشكل كبير. حددت عقدة معينة تثق في التحقق من المعاملات. يتحمل نفسه العبء الكامل لأداء عمليات التحقق ، وأنت تثق في بيانات حالة الشبكة التي يمررها إليك. هذه مسألة ثقة شخصية وأكثر.
- كم عدد المواقع الموثوقة التي يمكن أن تكون؟يمكنك تحديد أي عدد من العقد الموثوقة لتقليل مخاطر فقدان الوصول إلى الشبكة. على سبيل المثال ، ثلاث عقد. إذا واجهت مشاكل في الوصول إلى الأول ، فأنت تتصل بالثاني وتواصل العمل معه بنفس الطريقة تمامًا.
- ماذا سيحدث للقطع النقدية إذا دمر الزلزال الخوادم التي يتم تخزينها عليها؟هنا من الضروري ألا نقول ليس عن العملات المعدنية ، ولكن عن تخزين المفاتيح المستخدمة للوصول إلى هذه العملات. فكر في خيارين لحالة واحدة. إذا تم إتلاف الخادم الذي يوفر الوصول إلى شبكة Bitcoin. أنها لن تؤثر عليك بأي شكل من الأشكال. ستفقد مؤقتًا الوصول إلى قاعدة البيانات الموزعة ، ولكن سيظل لديك مفاتيح تسمح لك بإنفاق هذه العملات. إذا تم إتلاف الخادم الذي تم تخزين مفاتيحك عليه ، بينما لم يكن لديك نسخة احتياطية من هذه المفاتيح ، فلن تتمكن من الوصول إلى عملاتك المعدنية.
- هل من الآمن وضع المحفظة ووضع النقود عليها وكتابة جملة على الورق وحذفها؟في الحقيقة نعم. تحتاج إلى حفظ العبارة الأولية - هذا الحد الأدنى كافٍ. يخزن blockchain معلومات حول العملات المعدنية التي يتم تخزينها في أي عناوين. تحتاج إلى حفظ مفاتيحك الخاصة للوصول إلى هذه العملات. في حالتك ، هذه عبارة أولية.
- هل من الممكن وضع بعض الإضافات على blockchain محليًا حتى تتمكن من تحليل البيانات على blockchain؟يمكنك إضافة أي برنامج يقوم بتحليل blockchain. قد يكون هذا البرنامج مكتوبًا من قبل المستخدم نفسه ، أو قد يكون هناك حل جاهز. كل هذا يتوقف على أهدافك. إذا كنت ترغب في تحسين الاستعلامات للبحث عن معاملات محددة مرتبطة بعناوين محددة ، كما يفعل مستكشف blockchain ، يمكنك استخدام برنامج يقوم بفهرسة blockchain وتخزين بيانات معينة. مثال على هذا البرنامج هو BitCore (مدعوم بواسطة BitPay). BitCore مفتوح المصدر ويمكنك ببساطة استخدامه جنبًا إلى جنب مع موقعك الكامل.