Catatan untuk Pembaca: Basis kode ini berguna untuk memulai dengan konsensus BFT dan sebagai baseline saat merancang protokol Anda sendiri. Jika Anda mencari protokol BFT yang canggih, saya merekomendasikan Tusk (Asynchronous) dan Bullshark (sebagian sinkron) yang memberikan kinerja, ketahanan, dan skalabilitas yang unggul.
Repo ini memberikan implementasi minimal dari varian rantai 2 dari protokol konsensus panas yang digunakan pada inti Diem. Basis kode telah dirancang untuk menjadi kecil, efisien, dan mudah untuk dibandingkan dan memodifikasi. Ini belum dirancang untuk berjalan dalam produksi tetapi menggunakan kriptografi nyata (Dalek), jaringan (Tokio), dan penyimpanan (ROCKSDB).
Hotstuff ditulis dengan karat, tetapi semua skrip pembandingan ditulis dalam python dan dijalankan dengan kain. Untuk menggunakan dan membandingkan testbed dari 4 node pada mesin lokal Anda, klon repo dan pasang dependensi Python:
git clone https://github.com/asonnino/hotstuff.git
cd hotstuff/benchmark
pip install -r requirements.txt
Anda juga perlu menginstal dentang (diperlukan oleh rocksdb) dan tmux (yang menjalankan semua node dan klien di latar belakang). Akhirnya, jalankan patokan lokal menggunakan kain:
fab local
Perintah ini mungkin memakan waktu lama saat pertama kali Anda menjalankannya (menyusun kode karat dalam mode release
mungkin lambat) dan Anda dapat menyesuaikan sejumlah parameter benchmark di fabfile.py
. Ketika patokan berakhir, itu menampilkan ringkasan eksekusi yang mirip dengan yang di bawah ini.
-----------------------------------------
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 mendokumentasikan basis kode, menjelaskan arsitekturnya dan cara membaca hasil tolok ukur, dan menyediakan tutorial langkah demi langkah untuk menjalankan tolok ukur di Amazon Web Services di beberapa pusat data (WAN).
Perangkat lunak ini dilisensikan sebagai Apache 2.0.