독자에 대한 참고 사항 : 이 코드베이스는 BFT 합의를 시작하고 자신의 프로토콜을 설계 할 때 기준으로 시작하는 데 유용합니다. 최첨단 BFT 프로토콜을 찾고 있다면 우수한 성능, 견고성 및 확장 성을 제공하는 Tusk (비동기) 및 Bullshark (부분적으로 동기화)를 권장합니다.
이 repo는 DIEM의 핵심에서 사용되는 Hotstuff Consensus 프로토콜의 2 체인 변형의 최소 구현을 제공합니다. Codebase는 작고 효율적이며 벤치 마크 및 수정이 쉬운 것으로 설계되었습니다. 생산에서 실행되도록 설계되지 않았지만 Real Cryptography (Dalek), Networking (Tokio) 및 Storage (ROCKSDB)를 사용합니다.
Hotstuff는 Rust로 작성되었지만 모든 벤치마킹 스크립트는 Python으로 작성되어 Fabric으로 실행됩니다. 로컬 컴퓨터에서 4 개의 노드 테스트 베드를 배포하고 벤치마킹하려면 Repo를 복제하고 파이썬 종속성을 설치하십시오.
git clone https://github.com/asonnino/hotstuff.git
cd hotstuff/benchmark
pip install -r requirements.txt
또한 Clang (RocksDB 요구) 및 TMUX (백그라운드에서 모든 노드 및 클라이언트를 실행 함)를 설치해야합니다. 마지막으로 Fabric을 사용하여 로컬 벤치 마크를 실행하십시오.
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를 문서화하고, 아키텍처 및 벤치 마크 결과를 읽는 방법을 설명하며, 여러 데이터 센터 (WAN)에서 Amazon Web Services에서 벤치 마크를 실행하기위한 단계별 자습서를 제공합니다.
이 소프트웨어는 Apache 2.0으로 라이센스가 부여됩니다.