ملاحظة للقراء: قاعدة كود هذه مفيدة للبدء في إجماع BFT وكخط الأساس عند تصميم بروتوكولاتك الخاصة. إذا كنت تبحث عن بروتوكولات BFT الحديثة ، فإنني أوصي TUSK (غير متزامن) وبلشارك (متزامن جزئيًا) توفر أداءً فائقًا وقابلية وقابلية للتوسع.
يوفر هذا الريبو الحد الأدنى من التنفيذ لمتغير السلسلة من بروتوكول إجماع Hotstuff المستخدم في قلب DIEM. تم تصميم قاعدة الشفرة لتكون صغيرة وفعالة وسهلة القياس والتعديل. لم يتم تصميمه لتشغيله في الإنتاج ولكنه يستخدم التشفير الحقيقي (Dalek) ، والشبكات (Tokio) ، والتخزين (RockSDB).
Hotstuff مكتوب في الصدأ ، ولكن جميع البرامج النصية المعيارية مكتوبة في Python وتشغيل مع النسيج. لنشر وقياس اختبار من 4 عقد على جهازك المحلي ، استنساخ الريبو وتثبيت تبعيات Python:
git clone https://github.com/asonnino/hotstuff.git
cd hotstuff/benchmark
pip install -r requirements.txt
تحتاج أيضًا إلى تثبيت Clang (المطلوبة بواسطة RocksDB) و Tmux (الذي يدير جميع العقد والعملاء في الخلفية). أخيرًا ، قم بتشغيل معيار محلي باستخدام النسيج:
fab local
قد يستغرق هذا الأمر وقتًا طويلاً في المرة الأولى التي تقوم فيها بتشغيله (قد يكون تجميع رمز الصدأ في وضع release
بطيئًا) ويمكنك تخصيص عدد من المعلمات القياسية في fabfile.py
. عندما ينتهي المعيار ، فإنه يعرض ملخصًا للتنفيذ بشكل مشابه لتلك أدناه.
-----------------------------------------
SUMMARY:
-----------------------------------------
+ CONFIG:
Faults: 0 nodes
Committee size: 4 nodes
Input rate: 1,000 tx/s
Transaction size: 512 B
Execution time: 20 s
Consensus timeout delay: 1,000 ms
Consensus sync retry delay: 10,000 ms
Mempool GC depth: 50 rounds
Mempool sync retry delay: 5,000 ms
Mempool sync retry nodes: 3 nodes
Mempool batch size: 15,000 B
Mempool max batch delay: 10 ms
+ RESULTS:
Consensus TPS: 967 tx/s
Consensus BPS: 495,294 B/s
Consensus latency: 2 ms
End-to-end TPS: 960 tx/s
End-to-end BPS: 491,519 B/s
End-to-end latency: 9 ms
-----------------------------------------
توثق Wiki قاعدة الشفرة ، وتشرح بنيةها وكيفية قراءة نتائج المعايير ، وتوفر تعليميًا خطوة بخطوة لتشغيل المعايير على خدمات الويب Amazon عبر مراكز بيانات متعددة (WAN).
تم ترخيص هذا البرنامج باسم Apache 2.0.