إدخال تيارات MultiChain

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

لقواعد بيانات السلاسل الزمنية والسلسلة الزمنية المشتركة الثابتة

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

  1. قاعدة بيانات ذات قيمة رئيسية أو مخزن مستندات ، بأسلوب NoSQL.
  2. قاعدة بيانات سلسلة زمنية تركز على ترتيب الإدخالات.
  3. قاعدة بيانات تعتمد على الهوية حيث يتم تصنيف الإدخالات وفقًا لمؤلفها.

يمكن اعتبارها "ماذا" و "متى" و "من" قاعدة البيانات المشتركة.

أساسيات الجداول

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

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

وراء الكواليس ، يتم تمثيل كل عنصر في دفق من خلال معاملة blockchain ، ولكن يمكن للمطورين قراءة وكتابة التدفقات دون وعي بهذه الآلية الأساسية. (يمكن للمستخدمين الأكثر تقدما استخدام المعاملات الخام للكتابة إلى تدفقات متعددة ، وإصدار أو نقل الأصول و / أو تعيين أذونات في معاملة ذرية واحدة.)

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

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

كما كنت ناقش سابقا، السرية هي التحدي الأكبر في عدد كبير من حالات استخدام blockchain. هذا لأن كل عقدة في blockchain ترى نسخة كاملة من محتويات السلسلة بأكملها. توفر التدفقات طريقة طبيعية لدعم البيانات المشفرة على blockchain ، على النحو التالي:

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

يوفر هذا طريقة فعالة لأرشفة البيانات على blockchain ، مع جعلها مرئية فقط لبعض المشاركين.

الاسترداد من الجداول

القيمة الأساسية للتدفقات في الفهرسة والاسترجاع. يمكن لكل عقدة اختيار التدفقات التي تريد الاشتراك فيها ، مع ضمان blockchain أن جميع العقد التي تشترك في تدفق معين سترى نفس العناصر داخلها. (يمكن أيضًا تكوين العقدة للاشتراك تلقائيًا في كل دفق جديد تم إنشاؤه.)

إذا كانت العقدة مشتركة في دفق ، فيمكن استرداد المعلومات من هذا الدفق بعدة طرق:

  • استرداد العناصر من الدفق بالترتيب.
  • جاري استرداد العناصر بمفتاح معين.
  • استرداد العناصر الموقعة من قبل ناشر معين.
  • سرد المفاتيح المستخدمة في دفق ، مع عدد العناصر لكل مفتاح.
  • إدراج الناشرين في دفق ، مع عدد العناصر.

كما ذكرنا في البداية ، فإن طرق الاسترجاع هذه تسمح باستخدام التدفقات قواعد بيانات القيمة الرئيسية, قواعد بيانات السلاسل الزمنية وقواعد البيانات التي تعتمد على الهوية. تقدم جميع واجهات برمجة التطبيقات استرداد بداية و عد المعلمات ، مما يسمح باسترداد الأقسام الفرعية من القوائم الطويلة بكفاءة (مثل عبارة LIMIT في SQL). القيم السالبة لـ بداية السماح باسترداد أحدث العناصر.

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

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

الجداول وخريطة طريق MultiChain

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

على المدى الطويل ، أين تتناسب الجداول مع خريطة طريق MultiChain؟ بالعودة إلى الوراء ، تقدم MultiChain الآن ثلاثة مجالات للوظائف عالية المستوى:

  • أذونات للتحكم في من يمكنه الاتصال ، والمعاملات ، وإنشاء الأصول / التدفقات ، والتعدين / التحقق من الصحة وإدارتها.
  • ممتلكات بما في ذلك الإصدار وإعادة الإصدار والتحويل والتبادل الذري والضمان والدمار.
  • تيارات مع واجهات برمجة التطبيقات لإنشاء التدفقات والكتابة والاشتراك والفهرسة والاسترداد.

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

تتضمن القيم المستقبلية المحتملة للمعلمة evmإثيريمالجهاز الظاهري المتوافق) ، sql (لقاعدة بيانات نمط SQL) أو حتى wiki (للنص المحرر بشكل تعاوني). أي كيان مشترك يتم تحديد حالته من خلال سلسلة من التغييرات المنظمة هو مرشح محتمل. سيحتاج كل كيان من هذا القبيل إلى: (أ) واجهات برمجة التطبيقات التي توفر التجريد الصحيح لتحديث حالتها ، (ب) الآليات المناسبة للعقد التي تم الاشتراك فيها لتتبع تلك الحالة ، و (ج) واجهات برمجة التطبيقات لاسترداد جزء أو كل الحالة بكفاءة. نحن في انتظار معرفة الكيانات الأخرى عالية المستوى التي ستكون الأكثر فائدة ، والتي سيتم تنفيذها من قبلنا أو من قبل أطراف ثالثة عبر بنية المكونات الإضافية.

ماذا عن العقود الذكية؟

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

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

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

 

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

 

إضافة فنية

يتم توثيق جميع الأوامر المتعلقة بالتدفقات بالكامل في صفحة MultiChain API، ولكن هنا ملخص موجز:

  • إنشاء دفق باستخدام create stream or createfrom ... stream
  • إضافة عنصر إلى دفق مع publish or publishfrom
  • استرجاع قائمة التدفقات باستخدام liststreams
  • بدء أو إيقاف تتبع دفق مع subscribe و unsubscribe
  • استرجاع عناصر الدفق باستخدام liststreamitems, liststreamkeyitems و liststreampublisheritems
  • قائمة مفاتيح الدفق والناشرين مع liststreamkeys و liststreampublishers
  • بالنسبة لعناصر التدفق الكبيرة ، قم باسترداد البيانات الكاملة باستخدام gettxoutdata (انظر maxshowndata أدناه)
  • التحكم في أذونات لكل بث مع مكالمات مثل grant [address] stream1.write
  • عرض أذونات الدفق باستخدام listpermissions stream1.*

بعض ملاحظات المطورين الأخرى المتعلقة بالتدفقات:

  • create يسمح الإذن لعنوان لإنشاء تيارات.
  • الأذونات ذات الصلة لكل دفق هي write, admin و activate
  • جديد معلمات blockchain: root-stream-name (اتركه فارغًا بلا) ، root-stream-open, anyone-can-create, admin-consensus-create, max-std-op-returns-count
  • جديد معلمات وقت التشغيل: autosubscribe للاشتراك تلقائيا في تيارات جديدة تم إنشاؤها و maxshowndata للحد من كمية البيانات في استجابات API (انظر gettxoutdata في الاعلى).
  • يتم تحديد الحد الأقصى لحجم بيانات عنصر الدفق بواسطة max-std-op-return-size معلمة blockchain ، وكذلك أصغر من maximum-block-size و max-std-tx-size القيم ناقص بضع مئات من البايت.
  • لا يمكن للعقد التي تستخدم تنسيق المحفظة القديمة الاشتراك في التدفقات و يجب ترقية.

 

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

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