#stellar #analysis #simulation #fbas #quorum

bin+lib fbas_analyzer

Library and tools for analyzing FBASs like the Stellar network

10 releases

0.5.4 May 7, 2021
0.5.3 Apr 14, 2021
0.5.2 Jan 18, 2021
0.5.1 Dec 29, 2020
0.3.0 Jun 11, 2020

#429 in Command line utilities

Download history 10/week @ 2021-06-07 1/week @ 2021-06-14 2/week @ 2021-06-21 3/week @ 2021-06-28 1/week @ 2021-07-05 10/week @ 2021-07-19 10/week @ 2021-07-26 21/week @ 2021-08-02 15/week @ 2021-08-16 1/week @ 2021-09-06 29/week @ 2021-09-13

93 downloads per month

MIT license

290KB
7.5K SLoC

FBAS analyzer

Cargo Documentation

Library and tools for analyzing the quorum structure of Federated Byzantine Agreement Systems (FBASs) like Stellar. Related (slightly outdated) 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 Stellar Network Analysis.

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
  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
target/release/qsc_simulator -h
target/release/graph_generator -h

Usage as Rust library

Add this to your Cargo.toml:

[dependencies]
fbas_analyzer = { version = "0.5", default-features = false }

Or this, if you need simulation functionality:

[dependencies]
fbas_analyzer = { version = "0.5", 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 :)

Dependencies

~2–4.5MB
~83K SLoC