Hinweis an die Leser: Diese Codebasis ist nützlich, um mit BFT -Konsens und als Grundlinie bei der Gestaltung Ihrer eigenen Protokolle zu beginnen. Wenn Sie nach hochmodernen BFT-Protokollen suchen, empfehle ich Tusk (asynchron) und Bullshark (teilweise synchron), die überlegene Leistung, Robustheit und Skalierbarkeit bieten.
Dieses Repo bietet eine minimale Implementierung der 2-Ketten-Variante des Hotstuff-Konsensprotokolls, das im Kern von DIEM verwendet wird. Die Codebasis wurde so konzipiert, dass sie klein, effizient und leicht zu reduzieren und zu ändern ist. Es wurde nicht so konzipiert, dass es in der Produktion betrieben wird, sondern real Cryptography (Dalek), Networking (Tokio) und Storage (RocksDB).
Hotstuff ist in Rost geschrieben, aber alle Benchmarking -Skripte sind in Python geschrieben und laufen mit Stoff. Klonen Sie das Repo, um das Repo einzulegen und zu bewerten, und installieren Sie die Python -Abhängigkeiten auf Ihre lokale Maschine:
git clone https://github.com/asonnino/hotstuff.git
cd hotstuff/benchmark
pip install -r requirements.txt
Sie müssen auch Clang (von RocksDB) und TMUX (wodurch alle Knoten und Clients im Hintergrund ausgeführt werden) installieren. Leiten Sie schließlich einen lokalen Benchmark mit Stoff:
fab local
Dieser Befehl kann lange dauern, wenn Sie ihn zum ersten Mal ausführen (das Kompilieren von Rostcode im release
-Modus kann langsam sein) und Sie können eine Reihe von Benchmark -Parametern in fabfile.py
anpassen. Wenn der Benchmark endet, wird eine Zusammenfassung der Ausführung ähnlich wie unten angezeigt.
-----------------------------------------
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
-----------------------------------------
Das Wiki dokumentiert die Codebasis, erklärt seine Architektur und das Lesen von Benchmarks-Ergebnissen und bietet ein schrittweises Tutorial für die Ausführung von Benchmarks für Amazon-Webdienste in mehreren Datenzentren (WAN).
Diese Software ist als Apache 2.0 lizenziert.