หมายเหตุถึงผู้อ่าน: codebase นี้มีประโยชน์ในการเริ่มต้นด้วยฉันทามติ BFT และเป็นพื้นฐานเมื่อออกแบบโปรโตคอลของคุณเอง หากคุณกำลังมองหาโปรโตคอล BFT ที่ล้ำสมัยฉันขอแนะนำ TUSK (แบบอะซิงโครนัส) และคัปจT (บางส่วนที่ซิงโครนัส) ที่ให้ประสิทธิภาพที่เหนือกว่าความทนทานและความยืดหยุ่น
repo นี้ให้การใช้งานน้อยที่สุดของตัวแปร 2 โซ่ของโปรโตคอลฉันทามติ Hotstuff ที่ใช้ที่แกนกลางของ Diem codebase ได้รับการออกแบบให้มีขนาดเล็กมีประสิทธิภาพและง่ายต่อการเปรียบเทียบและแก้ไข มันยังไม่ได้รับการออกแบบมาให้ทำงานในการผลิต แต่ใช้การเข้ารหัสจริง (Dalek), เครือข่าย (Tokio) และการจัดเก็บ (RocksDB)
Hotstuff เขียนด้วย Rust แต่สคริปต์การเปรียบเทียบทั้งหมดเขียนด้วย Python และทำงานด้วยผ้า ในการปรับใช้และเปรียบเทียบการทดสอบ 4 โหนดบนเครื่องในเครื่องของคุณโคลน repo และติดตั้งการพึ่งพา Python:
git clone https://github.com/asonnino/hotstuff.git
cd hotstuff/benchmark
pip install -r requirements.txt
คุณต้องติดตั้งเสียงดัง (จำเป็นโดย 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 จัดทำเอกสาร Codebase อธิบายสถาปัตยกรรมและวิธีการอ่านผลลัพธ์ของเกณฑ์มาตรฐานและให้การสอนทีละขั้นตอนเพื่อเรียกใช้เกณฑ์มาตรฐานบน Amazon Web Services ในหลายศูนย์ข้อมูล (WAN)
ซอฟต์แวร์นี้ได้รับอนุญาตเป็น Apache 2.0