MultiChain 1.0 beta 2 و 2.0 خارطة الطريق

عقدة المصدر: 1742567

أين نحن اليوم وأين نذهب غدًا

يسعدنا اليوم إصدار الإصدار التجريبي الثاني من MultiChain 1.0 لنظام التشغيل Linux و Windows و Mac (يتطلب إصدار Mac حاليًا الترجمة). وبهذا ينتهي التطوير المخطط لـ MultiChain 1.0 - باستثناء أي إصلاحات للأخطاء ، فلن يتغير الإصدار النهائي لـ MultiChain 1.0 خلال فصل الصيف.

يصادف هذا الشهر أيضًا مرور عامين على أول إصدار ألفا من MultiChain في يونيو 2015. كما هو الحال مع أي منتج جديد ، لم نكن متأكدين من رد فعل السوق ، وعلمنا أن هناك طريقة واحدة لمعرفة ذلك - إصدار الحد الأدنى من المنتجات قابلة للحياة، بمعنى نسخة أولية توفر قيمة كبيرة ولكنها أولية حسب التصميم. لحسن الحظ ، على عكس منتجنا الأول كوينسبارك، تلقى MultiChain استجابة إيجابية قوية وفورية. وقد صاحب ذلك تسونامي من طلبات الميزات المعقولة ، والتي قمنا بتنفيذ العديد منها الآن. بالتوازي مع تطوير المنتج ، نما الاستخدام بشكل ملحوظ بكل مقياس. على سبيل المثال ، استقبل موقع MultiChain أقل من 3,000 زائر في يوليو 2015 ، وهو الآن يجلب عشرة أضعاف هذا الرقم شهريًا.

أداء MultiChain

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

.throughput td، .thput th {text-align: right؛}
إجمالي المعاملات 1.0 ألفا 3 1.0 ألفا 21 1.0 ألفا 22 1.0 1 بيتا 1.0 2 بيتا
100 6.5 طن في الثانية 7.8 541.7 830.6 1465.7
1,000 7.0 7.6 583.9 889.4 1199.6
10,000 4.1 6.4 566.9 746.6 1071.2
100,000 - 6.6 558.0 771.9 1034.2
1,000,000 - - 548.6 773.6 1055.4

متوسط ​​المعاملات في الثانية ، بما في ذلك النفقات العامة لـ API والبناء والتوقيع والتعدين والتحقق من المعاملات والكتل.
الاختبارات التي أجريت باستخدام ab أداة قياس خادم HTTP إرسال طلبين متزامنين إلى sendtoaddress API.
مواصفات الخادم: Intel Core i7-4770 ، 4 نواة بتردد 3.4 ميجاهرتز ، 32 جيجابايت رام ، Seagate 2 TB 7200 RPM SATA ، CentOS 6.4.

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

بالطبع ، يعد تحسين الأداء مهمة لا تنتهي ، ولا يوجد سبب يمنع MultiChain من الوصول إلى 10,000 tx / sec في معالج 16 النواة مع التغييرات المعمارية المناسبة. ومع ذلك ، استنادًا إلى المحادثات مع مستخدمينا وشركائنا ، يبدو أن القليل يتوقعون أن يحتاجوا إلى أكثر من 1,000 مرة / ثانية للسنوات القليلة القادمة. لذا فإننا نعيد تركيز جهودنا التنموية على الميزات الجديدة ، مما ينقلنا بشكل جيد إلى موضوع MultiChain 2.0.

نظرة عامة على MultiChain 2.0

سيكون الإصدار 2.0 من MultiChain هو الأول الذي يأتي في نسختين - Community (مفتوح المصدر) و Enterprise (تجاري). سأركز هنا على إصدار المجتمع المجاني ، حيث إننا نناقش فقط تفاصيل MultiChain Enterprise مع شركائنا. على أي حال ، سيكون الإصداران Enterprise و Enterprise متوافقين للغاية ، حيث: (أ) سيتم تشغيل التطبيقات التي تم إنشاؤها على إصدار المجتمع بدون تعديل على MultiChain Enterprise ، و (ب) سيكون كلا الإصدارين قادرين على الاتصال والتعامل مع بعضهما البعض على نفس السلسلة.

المجالات الرئيسية الثلاث للوظائف المحسنة في كلا إصداري MultiChain 2.0 ستكون:

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

دعنا ننتقل لمناقشة كل من هذه بالتفصيل.

نموذج بيانات أكثر ثراءً للتيارات

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

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

سيثري MultiChain 2.0 وظيفة التدفقات بعدة طرق:

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

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

سيدعم MultiChain 2.0 أيضًا كائنات JSON للبيانات الوصفية للمعاملات الأولية (أي ليست عناصر الدفق) بالإضافة إلى البيانات الوصفية لإصدار الأصول وأحداث إنشاء الدفق ، بدلاً من أزواج المفتاح / القيمة النصية فقط التي يتم تنفيذها في MultiChain 1.0. ال listassets ستوفر واجهة برمجة التطبيقات دمج JSON في جميع أحداث إصدار الأصل ، حتى تتمكن البيانات الوصفية لكل إصدار من تحديث الوصف النهائي لمادة العرض بشكل فعال.

مرشحات المعاملات المخصصة

لقد فكرنا كثيرًا في كيفية إضافة قواعد مخصصة قابلة للبرمجة إلى MultiChain. في حين أن نموذج "العقد الذكي" الخاص بـ Ethereum شائع ، إلا أنه يحتوي على عدد من أوجه القصور الرئيسية لسلسلة blockchas المسموح بها ذات الإنتاجية العالية. أولاً ، تقدم العقود الذكية تبعية عالمية عبر حالة blockchain بأكملها ، مما يضعف بشكل كبير التوافق والأداء. ثانيًا ، لا يمكن للعقود الذكية منع المعاملات غير الصحيحة من تضمينها في blockchain ، ولكن فقط منع تلك المعاملات من تحديث حالة قاعدة بيانات blockchain. بينما نتوقع على المدى الطويل أن يتم تقديم آلة افتراضية متوافقة مع Ethereum كتجريد عالي المستوى داخل MultiChain ، لا نعتقد أنه الحل الصحيح للتحقق من مستوى منخفض.

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

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

على عكس العقود الذكية ، إذا تم اكتشاف خطأ في التعليمات البرمجية لمرشح ، فيمكن استبداله بسهولة بإصدار جديد. ومع ذلك ، مثل جميع رموز Turing-Complete ، لا تزال المرشحات معرضة لخطر الدخول في حلقة لا نهائية. سيتم تخفيف هذه المشكلة بطريقتين:

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

نتوقع تطبيقًا واحدًا شائعًا للفلاتر للتحقق من صحة عناصر الدفق. على سبيل المثال ، يمكن أن يضمن الفلتر احتواء حقول معينة في عناصر JSON في الدفق على أرقام في نطاق معين. في MultiChain 1.0 يجب إجراء هذا النوع من التحقق على مستوى التطبيق ، إما عند كتابة عناصر الدفق (إذا كان المصدر موثوقًا) أو عند قراءتها. على النقيض من ذلك ، سيتيح MultiChain 2.0 تضمين هذه القواعد في blockchain نفسها ، مثلما هو الحال تحقق من القيود في قاعدة بيانات علائقية.

سيتضمن MultiChain 2.0 ميزتين إضافيتين لجعل الفلاتر أكثر قوة. أولاً ، ستقدم أذونات معرفة من قبل المستخدم ، موجودة جنبًا إلى جنب مع الأذونات الثمانية المحددة بواسطة MultiChain. كما هو الحال مع الأذونات العادية ، سيتم منحها لعناوين محددة من قبل المسؤولين (وفي بعض الحالات ، من قبل المستخدمين الذين لديهم activate امتيازات) وتضمينها إلى جانب العناوين في كائن JSON الذي تم تمريره إلى الفلتر. على سبيل المثال ، يمكن أن يضمن الفلتر أن العناوين التي تحتوي على إذن محدد من قبل المستخدم فقط هي التي يمكنها كتابة أنواع معينة من البيانات إلى تدفق أو التعامل في مادة عرض معينة أعلى من حد معين.

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

تحديث بلوكشين

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

سيضيف MultiChain 2.0 القدرة على تحديث blockchain ، مما يسمح بتعديل العديد (ولكن ليس كل) معلماته أثناء استمرار السلسلة في العمل. مثل العمليات الهامة الأخرى ، سيتطلب تحديث blockchain مستوى قابل للتخصيص من توافق المسؤول ، حيث يكون هذا المستوى نفسه معلمة يمكن تغييرها. ستدخل التحديثات حيز التنفيذ من كتلة معينة ، وسيتم تطبيقها بعد ذلك على كل كتلة لاحقة حتى التحديث التالي.

سوف تشمل معلمات بلوك تشين التي يمكن تحديثها:

  • إصدار البروتوكول. سيؤدي ذلك إلى تمكين ترقية blockchain التي تم إنشاؤها باستخدام إصدار واحد من MultiChain لدعم الميزات في إصدار جديد ، مثل عناصر تدفق JSON أو فلاتر المعاملات. في الواقع ، إصدار البروتوكول 10008 تم تقديمه في MultiChain 1.0 alpha 29 (والمستخدم في الإصدار التجريبي) وقد تم بالفعل إثباته مستقبليًا مع دعم غير موثق لهذا النوع من الترقية. بمجرد ترقية البلوكشين MultiChain 1.0 إلى بروتوكول 2.0 ، سيتمكن أيضًا من الوصول إلى تغييرات المعلمات الأخرى الموضحة هنا.
  • تحجيم سلسلة الكتل. قد تتفوق بلوك تشين التي أصبحت شائعة على القيم الأولية المحددة لوقت التأكيد المستهدف أو الحد الأقصى من المعاملات وأحجام الكتلة. سيسمح MultiChain 2.0 بزيادة هذه القيم أو تقليلها حسب الضرورة.
  • نموذج إذن. سيسمح MultiChain 2.0 بتحديث العديد من المعلمات المتعلقة بالإذن والحوكمة ، بما في ذلك: anyone-can-* المعلمات التي تتحكم في طرق فتح أو إغلاق سلسلة الكتل ، (ب) admin-consensus-* المعلمات التي تحدد مستويات إجماع المسؤول المطلوبة لعمليات معينة ، و (ج) mining-diversity المعلمة التي تتحكم في صرامة خوارزمية الإجماع الدائري.

بمجرد تنفيذ وظيفة التحديث هذه ، يجب ألا يكون هناك أي سبب يمنع تشغيل blockchain الذي تم إنشاؤه في MultiChain لعدة عقود أو أكثر.

واستشرافا للمستقبل

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

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

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

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

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