كيفية إعداد سلسلة النصاب القانوني الخاصة مع إجماع طوف (وعضوية ديناميكية)

في الواقع ، كل شيء موجود بالفعل في هذا الريبو https://github.com/Szkered/quorum-raft-cluster

0. الحصول على آلة أوبونتو

1. إعداد التبعية

(sudo) ./get-quorum.sh

يتبع هذا الإعداد المثال الرسمي تقريبًا هنا https://github.com/jpmorganchase/quorum-example/blob/master/vagrant/bootstrap.sh

التغييرات التي أجريتها: يمكنني استخدام أحدث إصدار من النصاب والكوكبة (بدلاً من إصدار v0.0.1-alpha من كوكبة ، وعلامات / v1.2.0 من النصاب القانوني في إعداد المثال هذا) ، حتى نتمكن من الاستمتاع بجميع أحدث ميزة مثل عضوية ديناميكية الطوافة. جدير بالذكر أن مجموعة كبيرة من التغييرات API كبيرة في v0.1.0.

2. إنشاء ملفات الإعداد

(sudo) ./raft-setup.sh

نحن هنا نقوم فقط قبل إنشاء معلومات enode حيث نريد إصلاحها. يتم تخزين معلومات enode في الطوافة / static-nodes.json ، والتي سيتم استخدامها من قبل الطوافة في وقت لاحق.

على الرغم من أنه يمكنك إعداد مجموعة من 7 عقد باتباع https://github.com/jpmorganchase/quorum- أمثلة ، إلا أنني أشعر أن إنشاء مفتاح العقدة غير موثق جيدًا. لذا في برنامج الإعداد ، قمت أيضًا بتضمين التعليمات لإنشاء زوج مفاتيح كوكبة ومفتاح حساب ethereum خاص.

قبل الانتقال إلى الخطوة (3) ، ستحتاج إلى تمويل مسبق لكل الحساب الذي تخطط لاستخدامه عن طريق تكوين genesis.json بشكل صحيح. كرر أولاً (1) و (2) لجميع الآلات / الأجهزة الظاهرية في سلسلة العنقودية / الخاصة ، ثم قم مسبقًا بتمويل جميع الحسابات الافتراضية في كتلة التكوين كما يلي:

في قسم التخصيص بملف التكوين ، قم بتمويل كل ما لديك من رصيد برصيد الأثير. دعنا نقول أن لديك حساب "6e4949d29fe2eee9007e4f5d6127b09e1eb98d15" في العقدة 1 و "93ceb2a9e1ddc216de9befd994bf303e88379e2b" في العقدة 2 ، ثم سيكون لديك:

"تخصيص": {
    "6e4949d29fe2eee9007e4f5d6127b09e1eb98d15": {
      "الرصيد": "1000000000000000000000000000"
    }،
    "93ceb2a9e1ddc216de9befd994bf303e88379e2b": {
      "الرصيد": "1000000000000000000000000000"
    }
  }،

يجب أن يكون ملف التكوين هذا هو نفسه عبر كل العقدة في نظامك.

بدلاً من ذلك ، يمكن أن يكون لديك حساب واحد مُمَول مسبقًا في genesis.json ، أو قل الحساب الافتراضي للعقدة 1 ، وأرسل رصيد الأثير من هذا الحساب إلى حساب جميع العقد الأخرى.

3. سلسلة الأولية مع ملفات الإعداد

(sudo). /raft-init.sh

هذا فقط تهيئة مثيل النصاب جديد مع enode ثابت ومفاتيح أنشأنا أعلاه.

4. ابدأ مثيلاتك

قبل البدء في المثيل ، يرجى تهيئة حقل العقد الأخرى في ملف tm.conf الخاص بك ، والذي يجب أن يحتوي على الملكية الفكرية العامة لجميع العقد الأخرى التي تريد الاتصال بها. لسبب غريب لم أفهمه ، تحتاج كل عقدة إلى امتلاك IP والمنفذ العام لكل العقدة الأخرى في نظامك.

بعد ذلك يمكنك تشغيل (sudo) ./constellation-start.sh بعد فحص السجل (الذي سيتم تخزينه في atqdata / logs / constellation.log) والتأكد من أن عقد الكوكبة متصلة بشكل صحيح ، يمكنك بدء عقد النصاب بواسطة (sudo) ) ./raft-start.sh

5. إضافة نظير باستخدام الطوافة العضوية الديناميكية

تسجيل الدخول إلى وحدة التحكم geth بواسطة (sudo) geth attach qdata / geth.ipc ثم القيام raft.addPeer ($ enodeInfo) حيث enodeInfo هو ما يوجد داخل static-nodes.j في كل جهاز / مثيل. حاشية يجب عليك استخدام الملكية الفكرية العامة في هذه enodeInfo.

يمكنك الآن التحقق من اتصال النظراء عن طريق كتابة admin.peers في وحدة تحكم geth لكل عقد. يمكنك أيضًا إجراء معاملة تجريبية باستخدام حسابك الافتراضي عن طريق eth.sendTransaction ({from: eth.accounts [0]}).

6. إذا حدث خطأ ما ..

توقف أولاً عن كل الحالات بواسطة (sudo) ./stop.sh. امسح بيانات السلسلة وأعد تهيئة ببساطة عن طريق (sudo) ./raft-init.shThen قم بالخطأ (4) و (5)