読者への注意:このコードベースは、BFTコンセンサスを開始し、独自のプロトコルを設計するときにベースラインとして開始するのに役立ちます。最先端のBFTプロトコルを探している場合は、優れた性能、堅牢性、およびスケーラビリティを提供するTusk(非同期)とBullshark(部分的に同期)をお勧めします。
このレポは、DIEMの中核で使用されるHotStuff Consensusプロトコルの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コードをコンパイルするのが遅い場合があります) 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としてライセンスされています。