Примечание для читателей: эта кодовая база полезна для начала работы с консенсусом BFT и в качестве базового уровня при разработке собственных протоколов. Если вы ищете самые современные протоколы BFT, я рекомендую Tusk (асинхронное) и Bullshark (частично синхронный), которые обеспечивают превосходную производительность, надежность и масштабируемость.
Этот репо предоставляет минимальную реализацию 2-цепочного варианта протокола консенсуса HotStuff, используемого в ядре DIEM. Кодовая база была разработана так, чтобы быть небольшим, эффективным и простым в сравнении и изменении. Он не был разработан для работы в производстве, но использует реальную криптографию (Dalek), сеть (Tokio) и хранилище (Rocksdb).
HotStuff написан в ржавчине, но все сценарии сравнительного анализа написаны на 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
может быть медленным), и вы можете настроить ряд контрольных параметров в 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 документирует кодовую базу, объясняет свою архитектуру и как прочитать результаты Benchmarks, и предоставляет пошаговое руководство для запуска тестов в веб-сервисах Amazon в нескольких центрах обработки данных (WAN).
Это программное обеспечение лицензировано как Apache 2.0.