fbas_analyzer

Crates.iofbas_analyzer
lib.rsfbas_analyzer
version0.7.4
sourcesrc
created_at2020-06-11 11:56:01.444277
updated_at2023-12-25 15:21:20.059395
descriptionLibrary and tools for analyzing FBASs like the Stellar network
homepage
repositoryhttps://github.com/wiberlin/fbas_analyzer
max_upload_size
id252711
size1,507,311
Martin Florian (marfl)

documentation

README

FBAS analyzer

Cargo Documentation CI codecov

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

  1. Install Rust
  2. (optional) Run unit tests and functional tests:
scripts/tests.py
  1. Build:
cargo build --release
  1. 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
  1. Get some new data from stellarbeat:
scripts/get_latest_stellarbeat_data.sh
  1. 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

...and of course the awesome stellarbeat.io :)

Commit count: 370

cargo fmt