الإعلان عن محفظة PlatoBlockchain Data Intelligence الجديدة بمحفظة MultiChain. البحث العمودي. عاي.

الإعلان عن محفظة MultiChain الجديدة

خطوة مهمة إلى الأمام للأداء وقابلية التوسع

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

قبل الخوض في التفاصيل ، اسمحوا لي أن أقدم بعض السياق. عندما بدأنا في تطوير MultiChain ، اتخذنا قرار الاستخدام بيتكوين الأساسية، العقدة القياسية لشبكة البيتكوين العامة ، كنقطة بداية. من حيث البرمجة ، هذا يعني أن MultiChain هو "شوكة" لبرنامج بيتكوين. كان سببنا الأساسي هو أن البيتكوين كان (ولا يزال) هو النظام البيئي المشفر الأعلى قيمة والأكثر اختبارًا للمعركة ، بطريقة ما.

على الجانب الإيجابي ، ساعدنا هذا القرار في الوصول إلى السوق بسرعة ، مقارنة بترميز عقدة blockchain من الصفر. على الرغم من الاختلافات العديدة بين blockchains العامة والخاصة ، إلا أنها تشترك في قدر كبير من الأرضية الفنية المشتركة ، بما في ذلك بروتوكول نظير إلى نظير ، هيكل المعاملات والكتلة ، إنشاء التوقيع الرقمي والتحقق منه ، قواعد الإجماع ، إدارة المفاتيح ، والحاجة إلى واجهة برمجة تطبيقات العقدة. سمح لنا التفرع من Bitcoin Core بالاستفادة من نضجها والتركيز على ما تضيفه MultiChain إلى blockchains - التهيئة والإذن ودعم الأصول المحلية. ونتيجة لذلك ، تمكنا من إصدار أول ألفا في يونيو 2015 ، بعد 6 أشهر فقط من بدء التطوير.

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

محفظة Bitcoin Core

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

إذن ما هو الخطأ في المحفظة التي ورثناها من Bitcoin Core؟ في الواقع ، ثلاثة أشياء:

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

والنتيجة هي أنه مع تخزين حوالي 20,000 معاملة مخزنة ، تتباطأ محفظة Bitcoin Core بشكل ملحوظ. بعد 200,000،8 أو نحو ذلك ، تتوقف عمليا عن التوقف. والأسوأ من ذلك ، نظرًا لأن بلوكشين MultiChain يسمح بما يصل إلى 80 ميجابايت من البيانات الوصفية لكل معاملة (مقارنة بـ XNUMX بايت من بيتكوين) ، يمكن لمتطلبات ذاكرة المحفظة أن ترتفع بسرعة حتى مع عدد قليل من المعاملات.

من المهم توضيح أن هذه العيوب تنطبق فقط على Bitcoin Core محفظة، بدلاً من قدرتها العامة على معالجة المعاملات. بمعنى آخر ، يمكنها معالجة وتخزين الملايين (أو حتى المليارات) من المعاملات التي لا تتعلق بعناوينها بشكل مريح ، حيث يتم الاحتفاظ بها على القرص بدلاً من الذاكرة. على سبيل المثال ، تستخدم العديد من بورصات ومحافظ البيتكوين الشائعة Bitcoin Core كما هي ، ولكنها تخزن معاملاتها الخاصة خارجياً بدلاً من داخل العقدة.

محفظة MultiChain الجديدة

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

كيف تختلف المحفظة الجديدة؟ إذا كانت لديك أي خبرة في قواعد البيانات ، فقد تكون الإجابات واضحة:

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

بعبارة أخرى ، لقد قمنا بإعادة إنشاء المحفظة داخل العقدة لتكون مستندة إلى قاعدة البيانات بشكل صحيح (باستخدام المستوىDB) ، بدلاً من الاعتماد على بنية ساذجة في الذاكرة لا يمكن البحث عنها بكفاءة. من غير المستغرب أن يكون الفرق (كما تم قياسه على 3.4 جيجا هرتز Intel Core i7) كبيرًا إلى حد ما:

إنتاجية المعاملات MultiChain

استخدام الذاكرة

تظهر الرسوم البيانية أنه بمجرد أن تحتوي المحفظة القديمة على 250,000 معاملة ، ينخفض ​​معدل الإرسال إلى 3 أضعاف / ثانية ويضيف 600 ميجابايت إلى استخدام ذاكرة العقدة. على النقيض من ذلك ، تحتفظ المحفظة الجديدة بأكثر من 100 مرة / ثانية وتضيف 90 ميغابايت فقط. توقفنا عن اختبار المحفظة القديمة في هذه المرحلة ، ولكن حتى مع 6-8 ملايين معاملة مخزنة ، تستمر المحفظة الجديدة في إرسال أكثر من 100 مرة / ثانية ، وتتفوق على حوالي 250 ميغابايت من ذاكرة الوصول العشوائي المستخدمة (بسبب التخزين المؤقت لقاعدة البيانات).

تم إجراء هذه الاختبارات في ظل ظروف واقعية ، مع العديد من العناوين والأصول (وبالتالي العديد من مخرجات المعاملات غير المنفقة) في محفظة العقدة. في سيناريو مثالي (عنوان واحد ، أصل واحد ، عدد قليل من UTXOs) ، كان معدل الإرسال المستدام أكثر من 400 مرة / ثانية. في كلتا الحالتين ، كجزء من إعادة الكتابة هذه ، قمنا أيضًا بتلخيص جميع وظائف المحفظة بشكل صحيح خلف واجهة داخلية نظيفة. سيؤدي ذلك إلى تسهيل دعم محركات قواعد البيانات الأخرى في المستقبل ، لمزيد من المتانة والسرعة.

للتكرار ، تشير جميع هذه الأرقام إلى المعدل الذي يمكن للعقدة أن تقوم به بإنشاء المعاملات وإرسالها وتخزينها في محفظتها المحلية ، بدلاً من صبيبها من حيث معالجة المعاملات التي أنشأها الآخرون. للحصول على معدل نقل عام للشبكة ، يمكن لـ MultiChain معالجة 200 إلى 800 مرة / ثانية ، اعتمادًا على الأجهزة التي تعمل عليها. (كن متشككًا في أي برنامج من برامج blockchain التي تعد بأرقام مثل 100,000،XNUMX tx / sec على الأجهزة العادية ، لأن الاختناق هو التحقق من التوقيع الرقمي ، والذي يستغرق وقتًا طويلاً للتنفيذ. إذا كانت العقد لا تتحقق من توقيعات المعاملات الفردية ، فلا يمكن استخدام blockchain عبر الثقة الحدود ، مما يجعلها أفضل من قاعدة البيانات الموزعة العادية.)

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

يرجى نشر أي تعليقات على LinkedIn.

إضافة فنية

بدءًا من MultiChain alpha 22 ، يمكنك التحقق من إصدار المحفظة قيد التشغيل حاليًا عن طريق فحص walletdbversion مجال getinfo or getwalletinfo مكالمات API. قيمة 1 يعني محفظة Bitcoin Core الأصلية ، و 2 تعني محفظة MultiChain الجديدة.

إذا قمت بتشغيل الإصدار الجديد من MultiChain على سلسلة موجودة ، فلن يتم التبديل على الفور إلى المحفظة الجديدة. يمكنك ترقية المحفظة عن طريق إيقاف العقدة ثم إعادة التشغيل multichaind مع المعلمات -walletdbversion=2 –rescan. يمكنك الرجوع إلى إصدار آخر بالمثل –walletdbversion=1 –rescan.

بشكل افتراضي ، عندما تبدأ عقدة في سلسلة جديدة ، ستستخدم المحفظة الجديدة تلقائيًا. يمكنك تغيير هذا عن طريق الجري multichaind لأول مرة مع المعلمة –walletdbversion=1.

مع المحفظة الجديدة ، كل شيء واجهات برمجة تطبيقات MultiChain تعمل بنفس الطريقة تمامًا كما كانت من قبل ، باستثناء واجهات برمجة تطبيقات الاستعلام عن المعاملات القديمة getreceivedbyaddress, listreceivedbyaddress و listtransactions (استعمال listwallettransactions or listaddresstransactions في حين أن). بالإضافة إلى ذلك ، لا تدعم المحفظة الجديدة مكالمات API والمعلمات المتعلقة بآلية Bitcoin Core التي تم تنفيذها بشكل سيئ والتي سيتم إهمالها قريبًا ، والتي لم يتم دعمها بشكل صحيح من قبل MultiChain. تم تعطيل هذه المكالمات بأمان مع ظهور رسالة خطأ.

المصدر: https://www.multichain.com/blog/2016/07/announcing-the-new-multichain-wallet/

الطابع الزمني:

اكثر من متعدد السلاسل