https://github.com/trudi-group/fbas_analyzer
Tools and library for analyzing FBASs like Stellar and MobileCoin
https://github.com/trudi-group/fbas_analyzer
byzantine-fault-tolerance consensus federated mobilecoin quorums rust scp stellar
Last synced: 2 months ago
JSON representation
Tools and library for analyzing FBASs like Stellar and MobileCoin
- Host: GitHub
- URL: https://github.com/trudi-group/fbas_analyzer
- Owner: trudi-group
- License: mit
- Created: 2019-10-14T14:51:28.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-12-25T15:21:17.000Z (almost 2 years ago)
- Last Synced: 2025-06-21T12:04:35.353Z (4 months ago)
- Topics: byzantine-fault-tolerance, consensus, federated, mobilecoin, quorums, rust, scp, stellar
- Language: Rust
- Homepage:
- Size: 688 KB
- Stars: 12
- Watchers: 2
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FBAS analyzer
[](https://crates.io/crates/fbas_analyzer)
[](https://docs.rs/fbas_analyzer)
[](https://github.com/wiberlin/fbas_analyzer/actions/workflows/test.yml)
[](https://codecov.io/gh/wiberlin/fbas_analyzer)Library and tools for analyzing the quorum structure of Federated Byzantine Agreement Systems (FBASs) like [Stellar](https://www.stellar.org/) and [MobileCoin](https://mobilecoin.com/).
Related research paper [here](https://link.springer.com/article/10.1007/s00446-022-00430-0).Among other things, the implementation here can:
- read node and organizations data in [stellarbeat](https://stellarbeat.io/)'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 analysisPowers our analysis websites for the [Stellar](https://trudi.weizenbaum-institut.de/stellar_analysis/) and [MobileCoin](https://trudi.weizenbaum-institut.de/mobilecoin_analysis/) networks.
## Usage as tools
1. [Install Rust](https://www.rust-lang.org/learn/get-started)
2. (optional) Run unit tests and functional tests:
```
scripts/tests.py
```
3. Build:
```
cargo build --release
```
4. 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
```
5. Get some new data from stellarbeat:
```
scripts/get_latest_stellarbeat_data.sh
```
6. 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](https://docs.rs/fbas_analyzer/)
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](https://arxiv.org/abs/1902.06493), respectively this [implementation](https://github.com/fixxxedpoint/quorum_intersection).
- [Stellar Observatory](https://github.com/andrenarchy/stellar-observatory) - a different set of FBAS analyses.
- [nodejs_fbas_analyzer](https://github.com/stellarbeat/nodejs_fbas_analyzer/)...and of course the awesome [stellarbeat.io](http://stellarbeat.io) :)