16 releases
0.7.4 | Dec 25, 2023 |
---|---|
0.7.3 | May 20, 2022 |
0.7.2 | Apr 20, 2022 |
0.7.0 | Mar 21, 2022 |
0.4.2 | Jul 22, 2020 |
#10 in #stellar
21 downloads per month
365KB
9K
SLoC
FBAS analyzer
Library and tools for analyzing the quorum structure of Federated Byzantine Agreement Systems (FBASs) like Stellar and MobileCoin. Related research paper here.
Among other things, the implementation here can:
- read node and organizations data in stellarbeat's JSON format
- determine quorum intersection
- find all minimal quorums (minimal here means that each existing quorum is a superset of one of the minimal quorums)
- find all minimal blocking sets (minimal indispensable sets for liveness)
- find all minimal splitting sets (minimal indispensable sets for safety)
- simulate different quorum set configuration policies, yielding synthetic FBASs for further analysis
Powers our analysis websites for the Stellar and MobileCoin networks.
Usage as tools
- Install Rust
- (optional) Run unit tests and functional tests:
scripts/tests.py
- Build:
cargo build --release
- Try tool using older data from stellarbeat:
target/release/fbas_analyzer test_data/stellarbeat_nodes_2019-09-17.json --merge-by-org test_data/stellarbeat_organizations_2019-09-17.json -a -p -S --only-core-nodes
- Get some new data from stellarbeat:
scripts/get_latest_stellarbeat_data.sh
- Play around some more:
target/release/fbas_analyzer -h
target/release/bulk_fbas_analyzer -h
You can also just cargo install fbas_analyzer
, of course.
Usage as Rust library
Add this to your Cargo.toml
:
[dependencies]
fbas_analyzer = { version = "0.7", default-features = false }
Or this, if you need simulation functionality:
[dependencies]
fbas_analyzer = { version = "0.7", default-features = false, features = ["qsc-simulation"] }
Check out the API Reference
and how the API is used by the tools in src/bin/
and the example in examples
.
See also / Acknowledgements
- The algorithms for determining quorum intersection and finding minimal quorums are inspired by Lachowski 2019, respectively this implementation.
- Stellar Observatory - a different set of FBAS analyses.
- nodejs_fbas_analyzer
...and of course the awesome stellarbeat.io :)
Dependencies
~3–12MB
~140K SLoC