المؤلف: Colby Serpa Compiler: DAOrayaki
قد يكون Nostr 2.0 قادرًا على البناء على Bitcoin كطبقة 2 ، مما يوفر تخزينًا آمنًا للبيانات خارج السلسلة ، تمامًا كما توفر Lightning Network مدفوعات فورية خارج السلسلة كطبقة 2.
تشرح هذه المقالة كيف يقوم مرحل Nostr بمزامنة بياناته مع الحفاظ على طبيعته خفيفة الوزن ، مما يسمح للمستخدمين بحذف البيانات بشكل انتقائي ، وهو أمر غير متوفر في سلاسل الكتل من الطبقة الأولى. في الوقت نفسه ، مقارنةً بتخزين كميات كبيرة من البيانات في Bitcoin blockchain ، بسبب السعة المحدودة وسرعة كتل Bitcoin ، قد يكون من الأرخص تخزين البيانات باستخدام مرحلات Nostr.
يعمل تصميم علوم الكمبيوتر البسيط التالي على تحسين خصائص التوزيع لشبكات Nostr وفقًا لمعيار نظرية CAP الموحدة. CAP تعني الاتساق والتوافر وتحمل التقسيم
يفتقر التتابع إلى الاتساق (C في نظرية CAP)
الاتساق يعني أن قواعد البيانات المتزامنة على كل كمبيوتر هي نفسها. لا تستطيع مرحلات Nostr إجراء تزامن مصغر للثقة بطريقة مشابهة لكيفية مزامنة blockchain لبياناتها كتلة تلو الأخرى. على عكس عقد Bitcoin الكاملة ، فإن قاعدة البيانات المخزنة بواسطة Nostr relay عادة ما تكون غير مكتملة. بصرف النظر عن الطلب الأعمى لجميع المنشورات الموقعة من قبل مستخدم معين ، لا يمكن لـ Nostr relay اكتشاف البيانات المفقودة.
** قضايا تناسق / مزامنة Nostr: **
إذا قام مستخدمان بتحميل منشورات كل منهما على مرحلات Nostr مختلفة ، فقد لا يتمكن هذان المستخدمان من رؤية منشورات بعضهما البعض لأن Nostr لا يشبه blockchain. في blockchain ، في كل مرة يوجد فيها سجل جديد ، ستقوم جميع العقد الكاملة بمزامنة blockchain. ستضيف جميع العقد الكاملة هذه البيانات ككتلة إلى blockchain في نفس الوقت. كل عقدة كاملة في Bitcoin blockchain تمتلك نفس blockchain بالضبط.
إذا أردنا أن يتمكن مستخدمو Nostr دائمًا من رؤية منشورات بعضهم البعض ، فحينئذٍ تحتاج جميع مرحلات Nostr إلى طريقة لتحديد البيانات المفقودة في ملفات تعريف المستخدمين حتى يتمكنوا من طلب الأجزاء المفقودة من مرحلات Nostr أو المستخدمين الآخرين.
توفر تجزئة جذر Merkle وكامل تجزئة الشجرة وظيفتين رئيسيتين:
يمكن استخدام هذه الطريقة الرخيصة لتحديث ملف التكوين بأكمله على تردد أسبوعي أو محدد من قبل المستخدم. ستظل Nostr تعمل كما هي الآن ، ولكن يمكن للمستخدمين أحيانًا دفع بعض السواتس لمزامنة بياناتهم بين مرحلات Nostr إذا كانوا يريدون أن يطلع جميع المستخدمين على منشوراتهم.
يمكن للمستخدمين والمرحلين تنزيل المنشورات لفرع واحد في كل مرة. بعد كل فرع ، يقومون بتجزئة هذا الفرع مع فرع آخر أقرب إلى جذر Merkle للتحقق مما إذا كان يتطابق مع جذر Merkle في السلسلة (على غرار SPV). إذا تم تجزئة هذه الفروع معًا لتتطابق مع جذر Merkle ، فسيعرفون أن هذا الفرع جزء من ملف تعريف المستخدم ، حتى لو لم يكن لديهم ملف تعريف المستخدم الكامل حتى الآن. يمكن للمستخدمين تنزيل فروع مختلفة من نفس ملف التكوين من العديد من جذوع Nostr المختلفة ، مع التحقق من صلاحية كل فرع والتأكد من اكتمال ملف التكوين الذي تم تنزيله.
يؤدي تنزيل الشوكات واحدًا تلو الآخر إلى منع هجمات التأخير التي يمكن أن تؤدي إلى تدمير العديد من الشبكات الموزعة ، ولهذا السبب تُستخدم جذور وشوكات Merkle في ورقة Bitcoin البيضاء لحماية محافظ SPV الخفيفة.
** لماذا لا يعمل جذر Merkle مثل تجزئة شجرة كاملة؟ **
** إذا كان Nostr يعتمد فقط على جذر Merkle ، فلن يتمكنوا من معرفة متى اكتملت شجرة Merkle ، نظرًا لأن كل زوج من الفروع الأقرب إلى جذر Merkle سوف يتم تجزئته في نفس جذر Merkle. **
لضمان اكتمال ملف تعريف المستخدم ، سيقوم المُرحِّل أو المستخدم بتجزئة شجرة Merkle المُحدَّثة بالكامل والتحقق من أنها تطابق تجزئة الشجرة بأكملها على السلسلة. إذا كانت تجزئة الشجرة بأكملها متطابقة ، فستكتمل بيانات المستخدم. إذا كانت تجزئة الشجرة بأكملها غير متطابقة ، فيمكن للمرحل أو المستخدم إخبار المرحلات الأخرى بأحدث رقم أوراق خاص بهم وطلب الفرع المفقود حتى تطابق تجزئة الشجرة بأكملها. من أجل تتبع جميع جذور Merkle الجديدة التي تتم إضافتها كل أسبوع أو نحو ذلك ، يجب أن تصبح مرحلات Nostr عُقدًا كاملة لـ Bitcoin. يتم دفع مرحلات Nostr 2.0 بشكل غير مباشر لتخزين Bitcoin blockchain مع تعزيز أمان Bitcoin و Nostr.
نظرًا لأن المرحلات لها الحق في اختيار ما تريد تخزينه ، على عكس عقد Bitcoin الكاملة ، فقد تفقد مرحلات Nostr بعض بيانات المستخدم. لذلك ، يجب على المستخدمين تخزين البيانات على مرحل Nostr فقط ، إذا كان بإمكان المستخدمين عمل نسخ احتياطية محليًا. تتيح خدمة Web5 ذاتية الاستضافة للمستخدمين مزامنة النسخ الاحتياطية مع جميع أجهزتهم المحلية ، مما سيقلل من المخاطر التي يتعرض لها المستخدمون المهتمون باستخدام Nostr. في نهاية اليوم ، فقط blockchain هو المكان الذي تكون فيه البيانات غير قابلة للتغيير حقًا. ومع ذلك ، فإن Nostr هو حل هجين آمن إلى حد ما وسيظل يعمل بشكل جيد للعديد من التطبيقات. المفاضلات مذكورة أدناه:
** كلما زاد عدد مرات ترحيل Nostr التي تخزن البيانات لعنوان معين ، زادت صعوبة فرض الرقابة على تلك البيانات. هذا يعني أن البيانات الشائعة التي يستضيفها العديد من مرحلات Nostr قد يكون من الصعب مراقبتها أكثر من البيانات غير الشائعة التي نادرًا ما يتم تنزيلها. **
** من ناحية أخرى ، فإن blockchain المُجمع في ناكاموتو يمنع الرقابة بناءً على عمر البيانات. كلما كانت البيانات أطول في blockchain ، زادت صعوبة حذفها باستخدام هجوم بنسبة 51٪. **
نظرًا لأنه يمكننا التحقق من أن بعض الشوكات تنتمي إلى مستخدمين محددين ، يمكن دفع مرحلات Nostr في كل مرة يقومون فيها بتمرير جزء صغير من البيانات إلى مستخدم. من أجل تحقيق ذلك ، يحتاج المستخدم إلى تنزيل رأس blockchain (كما في SPV) حتى يتمكن من أداء الوظائف النموذجية للمحفظة الخفيفة. سيستفيد المستخدم من وظيفة SPV الخاصة بالمحفظة الخفيفة لجلب معاملة معينة من السلسلة ، والتي ستتضمن جذر Merkle لملف تعريف المستخدم وتجزئة الشجرة بأكملها في OP \ _RETURN. يمكن للمستخدمين الآن دفع الترحيل لتنزيل فرع ملف تعريف المستخدم حسب الفرع ، والتحقق من كل فرع عن طريق تجزئته لمطابقة جذر Merkle على السلسلة.
من أجل إرسال ساتس (أصغر وحدة بيتكوين) إلى مرحل Nostr في مقابل توفير البيانات ، نستخدم تصميم ZKCP (مطور Bitcoin Core الشهير) لـ Gregory Maxwell (مدفوعات مشروطة صفرية المعرفة) [1] نسخة مطورة من ZKCSP: إثبات قابلية الاسترجاع [2] مدمج مع شبكة Lightning Network.
وفقًا لوصف الورقة البيضاء ZKCSP:
“… لا حاجة لطرف ثالث موثوق به … لقد طبقنا أيضًا بروتوكول ZKCSP لحالة إثبات قابلية الاسترداد ، حيث يدفع العميل للخادم لإثبات أن بيانات العميل مخزنة بشكل صحيح على الخادم.” [2]
بمجرد حدوث الخطوة 3 ، سيقوم المستخدم بإجراء تعديلات على الطلب الأصلي الموقع من قبل الممول قبل البدء في إنشاء ZKCSP في الخطوة 4. سيضيف المستخدم مبلغًا إضافيًا أعلى الطلب الأصلي ، مع تحديد المبلغ المراد خصمه من أرصدة كل من المستخدم والممول (يجب أن يكونا نفس المبلغ ، بالإضافة إلى رسوم الممول) ، والتي سيقوم المستخدم بعد ذلك بإلحاقها بالرسالة الأصلية المحتوى للتوقيع.
** إذا قرر المستخدم إرسال عدد من جلسات ساتس أكثر مما يمتلكه ، أو إذا جمد الممول أكثر من مرحل Nostr هذا ، فإن مرحل Nostr سيرفض الطلب لأن المرحل لن يكون قادرًا على الدفع. **
بهذه الطريقة ، يمكن للمستخدمين الاتصال بالعديد من مرحلات Nostr أثناء تجميد أموالهم مع عدد قليل فقط من الممولين. يمكن اتباع نهج مماثل مع شبكة Lightning Network ، حيث يكون المموّلون الذين تقلص الثقة هم وسطاء غير مرخصين بين المستخدمين والتجار. تتوفر قفزات البرق العادية P2P أيضًا في Nostr 2.0 ، ولكن قد يكون هذا مفيدًا إذا فشل التوجيه وموازنة القنوات بشكل متكرر.
يمكن لمرحلات Nostr إدراج مفاتيح معينة في القائمة البيضاء إذا كانوا يرغبون في تخزين البيانات التي يشاهدها كل هؤلاء المستخدمين. إذا كانت مرحلات Nostr غير قادرة على إدراج المستخدمين الراغبين في تخزين البيانات في القائمة البيضاء ، فسوف يقومون بتخزين أي بيانات يتم إرسالها إليهم. إذا كان بإمكان المستخدمين دائمًا إرسال البيانات إلى المرحلات مجانًا ، فلن يحتاج المستخدمون أبدًا إلى الدفع مقابل مرحلات Nostr. لا يمكن لـ Nostr تقديم خيارات مدفوعة إلا إذا كان لدى المرحل خيار رفض تخزين البيانات التي لا يمكن الدفع مقابلها. لا تزال المرحلات المجانية موجودة ، لكن خيار المرحلات المدفوعة غير موجود حاليًا.
بدلاً من محاولة تخزين جميع بيانات Nostr مجانًا ، يمكن لترحيل Nostr المدفوع استخدام القائمة البيضاء لتخزين جميع البيانات التي يعرضها المستخدمون الذين يدفعون على أساس يومي بشكل انتقائي. ستستمر بعض مرحلات Nostr في العمل على نموذج مجاني ، ولكن على نطاق واسع ، هذا ليس مستدامًا لأن معظم المرحلات المجانية هي مجرد متحمسين متحمسين. وضع القائمة البيضاء (حتى لو تمكنا من تعيين مفتاح عام بشكل آمن لكل ملف تعريف Nostr) يمنح Nostr relay القدرة على تحديد البيانات التي لن يتم تخزينها.
يفتح مفتاح عام واحد لكل ملف تعريف ميزة القائمة البيضاء: يصبح عنوان Bitcoin مفتاح Nostr العام الخاص بك.
يسمح لنا هذا النظام أخيرًا بتعيين مفتاح عام لكل ملف تكوين.
ليست هناك فائدة من إنشاء المستخدمين لمفاتيح عامة جديدة لكل منشور … لأنهم جميعًا مرتبطون بملفاتهم الشخصية! هذا ليس هو نفسه عنوان Bitcoin. على عكس Bitcoin ، فإن امتلاك المستخدمين لمفاتيح عامة متعددة داخل نفس التطبيق لا يؤدي إلى تحسين الخصوصية.
** يجب أن يتطابق المفتاح العام لملف تعريف Nostr مع المفتاح العام لمعاملة Bitcoin التي تحتوي على التجزئة الأسبوعية (جذر Merkle لجميع منشورات المستخدم وتجزئة الشجرة بأكملها). على عكس مستخدمي Nostr الذين يستخدمون توقيعات شنور ، سيحتاجون إلى استخدام محفظة بيتكوين (محفظة محمولة / محفظة خفيفة أو عقدة كاملة) للتوقيع. **
يكمن جمال هذا في أن كل حساب Nostr سيتم تمثيله بعنوان Bitcoin الخاص به ، ** مما يعني أنه يمكن للمستخدمين إرسال المدفوعات مباشرة إلى حسابات Nostr دون طلب مفتاحين عامين مختلفين. هذا يقلل من التكلفة المعرفية للمستخدمين الجدد في النظام. بدلاً من استخدام أسماء المستخدمين ، لا يزال المستخدمون بحاجة إلى إرسال مفاتيح عامة أو DNS لبعضهم البعض للعثور على بعضهم البعض على Nostr. **
إذا كانت تطبيقات Nostr الأخرى تستخدم مفاتيح عامة مختلفة ، فلا يزال من الممكن إرفاقها بنفس الهوية اللامركزية (DID) - وبهذه الطريقة ، تظل طريقة تحديد حسابك متسقة عبر التطبيقات. ومع ذلك ، ستحد قاعدة إجماع Nostr هذه من استخدام مفتاح عام واحد فقط لكل ملف تعريف في كل تطبيق Nostr.
يعمل DHT بمثابة لوحة ليدربورد لاكتشاف الأقران.
يمكن أن تستخدم المرحلات جدول تجزئة موزع (DHT) للعثور على مرحلات أخرى. يمكن أن تشارك المرحلات قائمتهم البيضاء في جدول التجزئة الموزع عن طريق سرد المفتاح العام حيث يتم تخزين البيانات. بهذه الطريقة ، يمكن للمرحلات التي تحتوي على تفرعات مفقودة من البيانات لمفتاح عام معين مسح DHT والاتصال مباشرة بعناوين IP للمرحلات الأخرى التي تدعي تخزين تلك الشوكات المفقودة. يمكن للمرحلات بعد ذلك تنزيل الفروع المفقودة مباشرة من مرحلات Nostr هذه.
ستتمكن المرحلات أيضًا من العثور على أكثر المرحلات نشاطًا عن طريق التحقق من عدد معاملات ZKCSP السابقة التي قامت هذه المرحلات بحلها على السلسلة - حديثة وفي كل الأوقات. في هذا النظام ، تصبح جميع مرحلات Nostr عُقدًا كاملة ، لذا فإن تدقيق المعاملات السابقة للمرحلات الأخرى سيكون أمرًا غير مؤلم. هذا من شأنه أن يجعل تكوين الثقة مكلفًا ، لأن المعاملات على السلسلة تتطلب دائمًا رسوم المعاملات. إذا فتح مرحل Nostr العديد من القنوات لبناء الثقة مع نفسه من أجل كسب ثقة المرحلات الأخرى ، فسيتعين عليه دفع الكثير من رسوم المعاملات للحفاظ على السمعة المزيفة كل أسبوع. بعد فشل المهاجم في توفير الفرع المفقود ، ستؤدي المهلة الزمنية إلى قطع اتصال الترحيل - لذلك يعد هذا هجومًا مؤقتًا ومكلفًا (تمامًا مثل هجوم 51٪ هو هجوم مؤقت ومكلف).
إن DHT ليس مجهولاً مثل التعدين ، حيث سيتم إدراج كل مفتاح عام لترحيل Nostr بجوار عنوان IP في DHT ، ولكنه سيتجنب الحاجة إلى المرحلات لإرسال الطلبات بشكل أعمى عبر الشبكة - على نطاق واسع بما يكفي ، هذا سوف تفرط في الشبكة. يمكن لمُرحلي Nostr الذين يبحثون عن مزيد من الخصوصية استخدام VPN أو خدمة حماية IP أخرى.
لن يتمكن المستخدمون من الوصول إلى نفس نظام الثقة هذا لأنهم ليسوا عقدًا كاملة. ومع ذلك ، يمكن للمستخدمين الاعتماد عليها.
نظرًا لأن المستخدمين يقومون تلقائيًا بتخزين جميع رؤوس الكتل في محافظهم الخفيفة ، يمكن للمستخدمين معرفة من هم أكثر عمال المناجم نشاطًا. سيمكن عمال المناجم الذين يتحولون إلى ممولين المستخدمين من تصفية أشهر عمال المناجم حتى لا يضطروا إلى ربط الأموال بشكل أعمى بممولين عشوائيين لا علاقة لهم بصلاحية الشبكة.
** يحتاج المموّلون (عمال المناجم) فقط إلى تأمين جلستهم باستخدام مرحل Nostr ، دون تمرير البيانات نفسها بين المستخدمين والترحيل. ** يحتاج الممول (عامل التعدين) فقط إلى التوقيع على طلب المستخدم حتى يتمكن المستخدم من التفاعل مباشرة مع جميع مرحلات Nostr التي يتصل بها الممول - 4 خطوات لـ ZKCSP + Lightning على النحو الوارد أعلاه.
لن تكون شبكة Lightning Network موجودة بدون blockchain الإجماع على Nakamoto من Bitcoin ، حيث لن يكون لدى المستخدمين مكان لتخزين البراهين المجمعة للمعاملات خارج السلسلة.
تمامًا مثل تجميع جميع معاملات Lightning Network هذه معًا ووضع أدلة صغيرة في blockchain ، سنقوم بتجميع جميع بيانات Nostr ووضع أدلة صغيرة في blockchain. بالطريقة نفسها التي توفر بها Lightning Network مدفوعات فورية في الطبقة الثانية ، قد تتمكن Nostr من توفير تخزين البيانات في الطبقة الثانية دون المخاطرة بسلسلة جانبية غير آمنة. **
** تستخدم نفس نهج شبكة Lightning Network ، مع blockchain بإجماع Nakamoto من Bitcoin على الطبقة الأولى و Nostr + ZKCSP Lightning على الطبقة الثانية. **