Remarque aux lecteurs: Cette base de code est utile pour commencer avec le consensus BFT et comme référence lors de la conception de vos propres protocoles. Si vous recherchez des protocoles BFT de pointe, je recommande Tusk (asynchrone) et Bullshark (partiellement synchrone) qui offrent des performances, une robustesse et une évolutivité supérieures.
Ce repo fournit une implémentation minimale de la variante à 2 chaînes du protocole de consensus HotStuff utilisé au cœur de DIEM. La base de code a été conçue pour être petite, efficace et facile à comparer et à modifier. Il n'a pas été conçu pour fonctionner dans la production mais utilise une vraie cryptographie (DALEK), le réseautage (Tokio) et le stockage (RocksDB).
Hotstuff est écrit en rouille, mais tous les scripts d'analyse comparative sont écrits en python et fonctionnent avec du tissu. Pour déployer et comparer un banc de 4 nœuds sur votre machine locale, cloner le repo et installer les dépendances Python:
git clone https://github.com/asonnino/hotstuff.git
cd hotstuff/benchmark
pip install -r requirements.txt
Vous devez également installer Clang (requis par RocksDB) et TMUX (qui exécute tous les nœuds et clients en arrière-plan). Enfin, exécutez une référence locale en utilisant le tissu:
fab local
Cette commande peut prendre beaucoup de temps la première fois que vous l'exécutez (la compilation du code de rouille en mode release
peut être lente) et vous pouvez personnaliser un certain nombre de paramètres de référence dans fabfile.py
. Lorsque la référence se termine, elle affiche un résumé de l'exécution similaire à celui ci-dessous.
-----------------------------------------
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
-----------------------------------------
Le wiki documente la base de code, explique son architecture et comment lire les résultats des références, et fournit un tutoriel étape par étape pour exécuter des repères sur les services Web d'Amazon sur plusieurs centres de données (WAN).
Ce logiciel est sous licence APACHE 2.0.