أداء الخادم

تم التحديث: 1 فبراير، 2022

يعتمد Sparrow Wallet على بروتوكول خادم Electrum لإدارة بيانات المعاملات.

يوفر هذا المستند معايير الأداء الحالية لمختلف تطبيقات خوادم الفهرس الكامل Electrum على الأجهزة القياسية، ويناقش نهجين مختلفين للتنفيذ بناءً على هذه النتائج.

الخلفية

يعمل خادم Electrum كفهرس عناوين بيتكوين، مما يسمح للمستخدمين باسترداد المعاملات المرتبطة بعنوان معين. على عكس التطبيق المرجعي للبيتكوين، الذي يفتقر إلى هذه الميزة، تقدم خوادم Electrum هذه الوظيفة. على الرغم من أن مرشحات الكتل المدمجة يمكن أن توفر معلومات مماثلة، إلا أنها لا تدعم معاملات mempool وهي أقل كفاءة.

بروتوكول خادم Electrum هو بروتوكول فهرس عناوين البيتكوين الأكثر اعتمادًا على نطاق واسع. يركز هذا المعيار على فهارس العناوين الكاملة، والتي تعتبر حاسمة للخصوصية لأنها لا تخزن تفاصيل محفظة محددة على الخادم. ولتحقيق الأمان الأمثل للتخزين البارد، يجب احتواء جميع معلومات المحفظة داخل ملف المحفظة وإزالتها من الخادم بعد إغلاق المحفظة. يستثني هذا النهج مشاريع مثل BWT و EPS التي تتطلب تخزين عناوين المحفظة على الخادم.

التحفيزالرابط الثابت

يستند هذا المعيار إلى تقرير أداء جيمسون لوب الصادر في يوليو 2020، مع وجود اختلافين رئيسيين:

  1. يستخدم Raspberry Pi 4 بدلاً من خادم AWS، مما يجعله أكثر ملاءمة للمستخدمين المنزليين.
  2. يستخدم إصدارات محدثة من المشاريع ويعيد اختبارها بعد إجراء تغييرات كبيرة.

هذه التحديثات تجعل المعايير مفيدة بشكل خاص لمستخدمي Sparrow الذين يرغبون في تشغيل خادم Electrum الخاص بهم على جهاز كمبيوتر بلوحة واحدة، مما يسمح لهم بمقارنة التطبيقات المختلفة واختيار أفضل ما يناسب احتياجاتهم. توفر النتائج رؤى عملية للمستخدمين الذين يفكرون في الاستضافة الذاتية لخادم Electrum في بيئة منزلية.

الأجهزة

يستخدم هذا المعيار أجهزة نموذجية لمستخدمي سبارو المهتمين بالخصوصية: جهاز Raspberry Pi 4 (طراز 8 جيجابايت) يعمل بنظام تشغيل Ubuntu 21.10 64 بت. يستخدم تخزين البيانات محرك أقراص USB SSD خارجي بسعة 1 تيرابايت، ويفضل استخدام محرك أقراص صلبة خارجي على محركات الأقراص الصلبة بسبب الحجم الكبير لسلسلة بلوكشين البيتكوين والفهارس المرتبطة بها (حوالي 0.5 تيرابايت). يعكس هذا الإعداد التكوين تكوينات المستخدم المنزلي الشائعة، مما يوفر بيانات الأداء ذات الصلة لأولئك الذين يفكرون في الاستضافة الذاتية لخادم Electrum على إعدادات كمبيوتر أحادية اللوحة مماثلة.

المشاريع

إلكترومكس

تم اعتماد ElectrumX، خليفة مشروع خادم Electrum الأصلي، في عام 2017. بعد أن توقف المؤلف الأصلي عن دعم بلوك تشين البيتكوين، قام مطورو Electrum بتفرع المشروع، الذي تتم صيانته الآن على https://github.com/spesmilo/electrumx.

يتمثل التحدي الكبير في ElectrumX في بناء الفهرس الأولي، الذي يستغرق حوالي أسبوع على أجهزة الاختبار. ومع ذلك، يمكن للمستخدمين بناء الفهرس على جهاز أكثر قوة ونقله إلى جهاز كمبيوتر بلوحة واحدة. النقاط الرئيسية:

  • حجم قاعدة البيانات الحالية: 75 جيجابايت
  • يتطلب تمكين txindex على Bitcoin Core
  • لا تتوفر ثنائيات مجمعة مسبقاً
  • الإصدار الذي تم اختباره: إلكترومكس 1.16

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

المنتخبون

يوفر Electrs، المصمم للاستخدام الشخصي بدلاً من الخوادم العامة، متطلبات تخزين أقل ولكن استخدام وحدة المعالجة المركزية أعلى مقارنةً بـ ElectrumX. تتم صيانته في https://github.com/romanz/electrs.

الميزة الرئيسية لـ Electrs هي سرعة بناء الفهرس الذي يستغرق من 12 إلى 24 ساعة فقط على أجهزة الاختبار. وقد جعلته هذه الكفاءة الخيار المفضل لمعظم حزم العقدة مسبقة الإنشاء. النقاط الرئيسية:

  • حجم قاعدة البيانات الحالية: 32 جيجابايت
  • لا يتطلب txindex على Bitcoin Core
  • لا تتوفر ثنائيات مجمعة مسبقاً
  • نسخة تم اختبارها: Electrs 0.9.4

يجعل وقت بناء الفهرس الأقصر بكثير وحجم قاعدة البيانات الأصغر من Electrs خيارًا جذابًا للاستخدام الشخصي، خاصةً على الأجهزة ذات الموارد المحدودة.

نقطة ارتكاز

تتم صيانتها في https://github.com/cculianu/Fulcrum، فهي تحقق التوازن بين سرعة الفهرسة والأداء التشغيلي.

تستغرق فهرسة Fulcrum من يومين إلى ثلاثة أيام على أجهزة الاختبار، مما يضعها بين Electrs و ElectrumX في وقت الإنشاء. وبمجرد فهرستها، فإنها تقدم أداءً استثنائيًا. النقاط الرئيسية:

  • حجم قاعدة البيانات الحالية: 102 جيجابايت
  • يتطلب تمكين txindex على Bitcoin Core
  • تتوفر ثنائيات مجمعة مسبقًا ل Linux (x86_64 وarm64) وWindows
  • الإصدار الذي تم اختباره: نقطة الارتكاز 1.6.0

يجمع Fulcrum بين وقت الفهرسة المعقول والأداء التشغيلي المتميز مما يجعله خيارًا مقنعًا، خاصةً للمستخدمين الذين يمكنهم استيعاب احتياجات التخزين الأكبر.

إلكترونيات-إسبلورا

تُنشئ Electrs-esplora، وهي شوكة من Electrs، فهارس إضافية لتحسين أداء المؤسسة. ومع ذلك، فإن متطلباته العالية من البيانات (حوالي 800 جيجابايت) تجعله غير مناسب لأجهزة الاختبار. النقاط الرئيسية:

  • متطلبات تخزين كبيرة للغاية (حوالي 800 جيجابايت)
  • يمكن تشغيله مع --lightmode تقليل مساحة القرص إلى النصف
  • حتى في الوضع الخفيف، فإنه يستنفد تقريبًا محرك أقراص بسعة 1 تيرابايت عند دمجه مع البلوك تشين بسعة 420 جيجابايت تقريبًا

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

الإضافة

addrindexrs هو شوكة Electrs أخرى، تستخدمها الواجهة الخلفية Dojo لاسترجاع بيانات المعاملات التاريخية. يفتقر إلى التغييرات المهمة المتعلقة بالأداء التي تبرر إدراجه كتطبيق منفصل في هذا المعيار. تحافظ هذه الشوكة على خصائص مماثلة لمشروع Electrs الأصلي، مما يجعلها زائدة عن الحاجة لأغراض مقارنة الأداء في هذا السياق.

الفهرسة

يختلف أداء الفهرسة بشكل كبير بين التطبيقات الثلاثة:

ElectrumX: أبطأ فهرسة (أسبوع واحد)، بسبب فهرسة Python أحادية الترابط وبطء تحليل الكتل. ومع ذلك، فإن فهرسها الشامل يسمح باستجابات خادم أكثر قابلية للتطوير دون استعلامات Bitcoin Core المتكررة. نظام تشغيل 64 بت ضروري لتحقيق الأداء الأمثل.

الإلكترونيات: أسرع فهرسة (يوم واحد)، ويُعزى ذلك إلى فهرسها الأصغر والأبسط واسترجاع الكتل وتحليلها على النحو الأمثل. هذه السرعة تأتي بتكلفة: يجب أن يعيد تحليل الكتل أثناء التشغيل، مما قد يؤثر على الأداء للمحافظ الأعمق.

نقطة ارتكاز: وقت فهرسة معتدل (2-3 أيام)، حيث يقوم ببناء فهرس أكبر قليلاً من ElectrumX ولكنه أسرع بكثير. تستفيد عمليته كثيفة الاستخدام للموارد من تنفيذ لغة منخفضة المستوى. إن مزامنة سريعة يمكن للخيار تحسين سرعة الفهرسة بشكل أكبر. يؤدي الفهرس الشامل الناتج إلى أداء تشغيلي ممتاز.

يقدم كل تطبيق مفاضلة بين وقت الفهرسة وحجم الفهرس والكفاءة التشغيلية، بما يتناسب مع حالات الاستخدام المختلفة وقدرات الأجهزة.

الاختبار

يقيّم هذا المقياس القياسي اثنين من أحمال الخوادم الشائعة من Sparrow باستخدام محفظة كبيرة (حوالي 3000 عنوان مستخدم):

  1. التحميل الأولي للمحفظة: يركز على اشتراكات العناوين، والتي تسمح لـ Sparrow بتلقي تحديثات معاملات العناوين. والأهم من ذلك، يُرجع كل طلب اشتراك تجزئة لجميع معرّفات المعاملات وارتفاعات الكتل التي تؤثر على ذلك العنوان. يقيس الاختبار الوقت اللازم للاشتراك في جميع عناوين المحفظة.
  2. تحديث المحفظة: يحاكي استرداد جميع بيانات المحفظة (المعاملات والكتل) أثناء التحديث اليدوي، وهو أمر ضروري عندما تؤدي مشكلات الاتصال إلى بيانات سيئة. اشتراكات العناوين موجودة بالفعل لهذا الاختبار.

معلمات الاختبار الرئيسية:

  • محفظة كبيرة بها حوالي 3000 عنوان مستخدم
  • حجم صفحة الدفعة 50 لجميع الخوادم
  • يقيس وقت الاشتراك للتحميل الأولي
  • يقيس زمن استرجاع البيانات لتحديث المحفظة

يوفر هذا النهج مقارنة شاملة للأداء عبر تطبيقات خوادم Electrum المختلفة، مع التركيز على سيناريوهات الاستخدام الواقعية في Sparrow Wallet.

الاختبار 1: التحميل الأولي (اشتراك العنوان)

الاختبار بدء التشغيل البارد التشغيل 1 الجري 2 التشغيل 3
إلكترومكس 52655 مللي ثانية 40721 مللي ثانية 54143 مللي ثانية 54143 مللي ثانية 49011 مللي ثانية
المنتخبون 322386 مللي ثانية 393303303 مللي ثانية 384036 مللي ثانية 427722 مللي ثانية
نقطة ارتكاز 2333 مللي ثانية 1413 مللي ثانية 1472 مللي ثانية 1413 مللي ثانية
  • نقطة ارتكاز: الأسرع (متوسط 1660 مللي ثانية تقريباً)
  • ElectrumX: معتدل (متوسط (متوسط يبلغ حوالي 49,133 مللي ثانية)
  • الإلكترونيات الأبطأ (متوسط بطيء (381,862 مللي ثانية تقريباً)

تتفوق Fulcrum على ElectrumX بـ 22 ضعفًا و Electrs بحوالي 300 ضعف تقريبًا في تحميل المحفظة الأولي.

الاختبار 2: تحديث المحفظة (استرجاع البيانات)

الاختبار بدء التشغيل البارد التشغيل 1 الجري 2 التشغيل 3
إلكترومكس 114466 مللي ثانية 114466 مللي ثانية 66175 مللي ثانية 80133 مللي ثانية 75489 مللي ثانية
المنتخبون 17562 مللي ثانية 11621 مللي ثانية 11219 مللي ثانية 11219 مللي ثانية 11521 مللي ثانية
نقطة ارتكاز 14152 مللي ثانية 7854 مللي ثانية 7382 مللي ثانية 7442 مللي ثانية
  • نقطة الارتكاز: الأسرع (متوسط 9,208 مللي ثانية تقريباً)
  • المنتخبون: الثانية (متوسط 12,981 مللي ثانية تقريباً)
  • ElectrumX: الأبطأ (متوسط زمني يبلغ حوالي 84,066 مللي ثانية)

إن Fulcrum أسرع 8 مرات من ElectrumX و1.5 مرة أسرع من Electrs لتحديث المحفظة.

يُظهر Fulcrum باستمرار أداءً متفوقًا في كلا الاختبارين، حيث يُظهر مزايا كبيرة في التحميل الأولي ويحافظ على ميزة في تحديث المحفظة. تقدم ElectrumX أداءً معتدلًا في التحميل ولكنها تعاني في التحديثات. بينما تُظهر Electrs، على الرغم من بطء التحميل الأولي، أداءً تنافسيًا في التحديث.

المناقشة

يعتمد Sparrow Wallet على بروتوكول خادم Electrum لإدارة بيانات المعاملات. يقارن هذا المستند أداء تطبيقات خادم Electrum ذات الفهرس الكامل على الأجهزة القياسية، مع التركيز على Raspberry Pi 4 مع ذاكرة وصول عشوائي سعتها 8 جيجابايت وذاكرة وصول عشوائي خارجية USB SSD بسعة 1 تيرابايت. وهو يفحص تطبيقات ElectrumX و Electrs و Fulcrum.

ElectrumX، تتم صيانتها على https://github.com/spesmilo/electrumx، يستغرق حوالي أسبوع لبناء فهرسها الذي يبلغ حجمه 75 جيجابايت على أجهزة الاختبار ويتطلب تمكين txindex على Bitcoin Core. Electrs، مصمم للاستخدام الشخصي https://github.com/romanz/electrsينشئ فهرسًا بسعة 32 جيجابايت في 12-24 ساعة دون الحاجة إلى txindex. نقطة ارتكاز https://github.com/cculianu/Fulcrum ينشئ فهرسًا بسعة 102 جيجابايت في غضون يومين إلى ثلاثة أيام، ويتطلب txindex، ويوفر ثنائيات مجمعة مسبقًا.

استخدم الاختبار محفظة كبيرة (3000 عنوان تقريبًا) لقياس التحميل الأولي (اشتراكات العناوين) وتحديث المحفظة (استرجاع البيانات). أظهرت النتائج أن Fulcrum تتفوق بشكل ملحوظ على غيرها، حيث كانت أسرع 22 مرة من ElectrumX و300 مرة تقريبًا أسرع من Electrs في التحميل الأولي، و8 مرات أسرع من ElectrumX و1.5 مرة أسرع من Electrs في التحديث.

ينبع التباين في الأداء بين Fulcrum و Electrs في التحميل الأولي (1.4 ثانية مقابل 6 دقائق) من اختلاف طرق تخزين البيانات. تخزّن Electrs الحد الأدنى من البيانات، مما يتطلب استرجاع كتل واسعة النطاق وتحليلها لكل تحميل للمحفظة. بالنسبة لمحفظة الاختبار، كان هذا يعني معالجة 3.5 جيجابايت من الكتل بشكل متكرر، مما يتسبب في تحميل وحدة المعالجة المركزية بشكل كبير واحتمال حدوث أعطال في الاستجابة على أجهزة الكمبيوتر ذات اللوحة الواحدة. تحتفظ ElectrumX و Fulcrum بفهارس عناوين شاملة، مما يسمح باسترجاع البيانات بكفاءة. هذا النهج، جنبًا إلى جنب مع فهرس معاملات Bitcoin Core، يتيح أداء Fulcrum المتفوق.

يوفر تطبيق Fulcrum's C++17 سرعة متسقة عبر المنصات، بينما تُظهر بنية ElectrumX القائمة على Python أداءً غير متسق واستخدامًا أعلى لوحدة المعالجة المركزية. تسلط هذه النتائج الضوء على المفاضلة بين حجم الفهرس وسرعة الاستعلام واستخدام الموارد في تطبيقات خادم Electrum، حيث يقدم Fulcrum أفضل توازن لمعظم المستخدمين.

الخاتمة

يكشف هذا المعيار أن Fulcrum هو التطبيق الأمثل لخادم Electrum لمستخدمي Sparrow Wallet.

على الرغم من وقت الفهرسة الأولي الأطول قليلاً مقارنةً بـ Electrs، فإن فهرس Fulcrum الشامل يوفر قابلية توسع وأداءً فائقين.

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

في حين أن Electrs قد يناسب سيناريوهات ذات مساحة قرص محدودة للغاية وأعماق محفظة صغيرة، يوصى باستخدام Fulcrum كخادم مثالي لـ Sparrow، مما يوفر أفضل توازن بين الأداء واستخدام الموارد لمعظم المستخدمين.

ملاحظة فنية
تتضمن فهرسة العناوين الفعالة في خوادم Electrum تقنيات تخزين البيانات الاستراتيجية. يستخدم كل من Fulcrum و ElectrumX مفاتيح تجزئة نصية (32 بايت و 11 بايت على التوالي) لتعيين أرقام المعاملات (tx_num). هذا tx_num يمثل ترتيب المعاملة في سلسلة الكتل، ويعمل كمعرّف مضغوط. تحتفظ الأنظمة بملف txids أمرت من قبل tx_numمما يسمح بسرعة txid الاسترجاع. كما أنها تحتفظ أيضًا بمصفوفة في الذاكرة لتعيين ارتفاعات الكتل في الذاكرة إلى عدد المعاملات التراكمية، مما يتيح البحث السريع عن ارتفاع الكتلة. يستبدل هذا النهج زيادة السعة التخزينية (على سبيل المثال، تُقدَّر سعة التخزين الإضافية في ElectrumX ب 21 جيجابايت مقابل txid بحث) لتحسين أداء الاستعلام بشكل كبير مقارنةً بطريقة التخزين الأدنى في Electrs. يوضّح هذا التصميم التوازن بين كفاءة التخزين وسرعة الاستعلام في هندسة قواعد البيانات، مع إعطاء الأولوية للأداء على الاقتصاد في التخزين في كل من Fulcrum و ElectrumX.