hotstuff
1.0.0
給讀者註意:此代碼庫在設計自己的協議時以BFT共識和基準作為基準很有用。如果您正在尋找最先進的BFT協議,我建議tusk(異步)和BullShark(部分同步)提供出色的性能,魯棒性和可擴展性。
該回購提供了最小的Diem核心HotStuff共識協議的2鏈變體的實現。該代碼庫被設計為小型,高效且易於基準和修改。它並非被設計為在生產中運行,而是使用真實的密碼學(Dalek),網絡(Tokio)和存儲(RockSDB)。
Hotstuff用Rust編寫,但所有基準測試腳本均以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
模式下編譯Rust Code可能很慢),並且您可以在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記錄了代碼庫,解釋了其體系結構以及如何讀取基準測試結果,並提供了一個逐步的教程,可以在多個數據中心(WAN)上在Amazon Web服務上運行基準測試。
該軟件被許可為Apache 2.0。