أساسيات MultiChain: ترقية العقد والسلاسل
أنواع الترقيات في بروتوكول MultiChain
بمجرد تشغيل شبكة متعددة السلاسل، يمكن إجراء ثلاثة أنواع من الترقيات. الأول هو ترقية برنامج MultiChain الذي يعمل على عقدة واحدة أو أكثر، للاستفادة من الميزات الجديدة على مستوى العقدة أو الإصلاحات في إصدار الصيان.
والثاني هو ترقية بروتوكول بلوكتشين، لتفعيل ميزات جديدة على مستوى الشبكة، بدءا من كتلة معينة.
والثالث هو ترقية بعض معلمات بلوكتشين الأخرى، لتوسيع نطاق بلوكتشين لأعلى أو لأسفل أو تغيير قواعد الوصول الخاصة به.
وغالبا ما تتطلب ترقية البروتوكول ترقية مسبقة للبرنامج للعقد الموجودة في الشبكة، لأن البروتوكول الجديد يتم دعمه فقط من خلال إصدار جديد من MultiChain
ترقية برنامج MultiChain
يجب اتباع هذه الخطوات لكل كمبيوتر تم تثبيت MultiChain عليه ويحتاج إلى الترقية:
إذا كان MultiChain قيد التشغيل حاليا لسلسلة، فيمكنك التحقق من إصداره في مجال version الأمر getinfo. كما يوجد أيضا حقل nodeversion الذي يحتوي على نسخة رقمية والتي من المؤكد أنها ستتوسع مع كل إصدار.
إذا لم يكن MultiChain قيد التشغيل، فيمكن التحقق من إصداره عن طريق التشغيل multichaind –version على سطر الأوامر.
لترقية MultiChain، قم بإيقاف أي عقد قيد التشغيل باستخدام الأمر stop API ( multichain-cli [chain-name] stop من سطر الأوامر). كما يمكنك أيضا استخدام أمر إغلاق أو الخروج exit من multichain-cli للخروج أو إيقاف أي عمليات يتم تشغيلها في الوضع التفاعلي.
تأكد من عدم تشغيل أي برنامج MultiChain حاليا. في حال كان تظام جهازك لينوكس أو ماك، استخدم ps -x. وفي نظام التشغيل ويندوز، استخدم إدارة مهام الويندوز أو قائمة المهام.
اتبع التعليمات المعتادة لتنزيل MultiChain وتثبيته، مع استبدال الإصدارات السابقة من ملفات MultiChain التنفيذية.
أعد تشغيل أي عقد مطلوبة بالطريقة العادية:multichaind [chain-name] -daemon
ترقية بروتوكول بلوكتشين والمعلمات الأخرى
تتم إدارة ترقيات البروتوكول والمعلمات بواسطة واحد أو أكثر من مسؤولي السلسلة على النحو التالي:
- تحقق من إصدار البروتوكول الحالي للسلسلة والمعلمات الأخرى (اعتبارا من أحدث كتلة) باستخدام الأمر getblockchainparams. يجب أن يكون إصدار البروتوكول على الأقل 10008 للسماح بترقية البروتوكول، و 20007 للسماح بترقية معلمات البلوكتشين الأخرى.
- في حالة ترقية إصدار البروتوكول، تحقق مما إذا كان برنامج MultiChain الذي يستخدمه المشاركون في الشبكة الأخرى يدعم الإصدار الجديد. يمكن لكل منهم تشغيل الأمر multichaind -version لرؤية إصدارات البروتوكول المدعومة بنسختهم من MultiChain – وإذا لزم الأمر، يجب عليهم ترقية برامجهم باتباع الخطوات الواردة في القسم السابق.
- بمجرد أن يصبح المشاركون في الشبكة جاهزين، قم بإنشاء الترقية المعلقة (التي لم تتم الموافقة عليها بعد) من العنوان الذي يتمتع بأمر المسؤول والإنشاء معا ( admin – create). يجب أن تقوم العقدة التي تحتوي على المفتاح الخاص لهذا العنوان بتشغيل الأمر التالي: createfrom [from-address] upgrade [upgrade-name] false [new-params]، مع استبدال القيم في [square brackets] حسب الاقتضاء.
- البنية [new-params]عبارة عن قالب JSON (جافا سكريبت للتدوين) يحتوي على معلمات بلوكتشين المطلوب تغييرها، على سبيل المثال {“protocol-version”:20010}أو {“target-block-time”:5, “maximum-block-size”:16777216}. لتطبيق الترقية من رقم كتلة محدد، قم بتضمين “startblock”:[block-number] ضمن كائن JSON هذا.
- في أي عقدة، تحقق من الأمر required من الحقل listupgrades [upgrade-name] لمعرفة عدد المسؤولين الذين يحتاجون إلى الموافقة على الترقية. وهذا يساوي عدد العناوين التي تحمل (إذن المسؤول admin) التي يتم تشغيلها بالأمر admin-consensus-upgrade معلمة بلوكتشن، وتجميعها.
- يلتزم كل مسؤول بالموافقة على الترقية عن طريق تشغيل ما يلي على العقدة التي تحمل مفتاحه الخاص:
approvefrom [from-address] [upgrade-name] true. - بعد موافقة كل مسؤول، تحقق من ظهور الموافقة في حقل admins بالشكل listupgrades [upgrade-name] مع نزول الأمر required.
- بمجرد منح الموافقات الكافية، تأكد من أن حقل approved التابع لـ listupgrades [upgrade-name] قيمته true.
- انتظر حتى تظهر الكتلة التالية (أو رقم الكتلة المحدد)، ثم تأكد من أن حقل appliedblock للأمر listupgrades [upgrade-name]يظهر ارتفاع هذه الكتلة. سيعرض الحقل appliedparams التغييرات التي تم إجراؤها بنجاح. بينما سيظهر الحقل skippedparams أي تغييرات لا يمكن إجراؤها، بالإضافة إلى سبب ذلك.
بعض الملاحظات الإضافية حول هذه العملية:
إذا كانت العقدة تقوم بتشغيل إصدار قديم من MultiChain لا يدعم إصدار البروتوكول الجديد للسلسلة، -718 (RPC_UPGRADE_REQUIRED) فسيتم إعطاء خطأ لمعظم أوامر API المرسلة إلى تلك العقدة.
يمكن الاطلاع على السجل الكامل للترقيات المعلقة أو المعتمدة باستخدام أمر listupgrades لأي عقدة.
إذا لم يتم الاحتفاظ بالمفتاح الخاص للمسؤول في محفظة العقدة، فيمكن إنشاء الترقيات والموافقة عليها باستخدام المعاملات الأولية.